首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只允许雌妞上网

只允许雌妞上网
EN

Stack Overflow用户
提问于 2019-07-25 13:34:02
回答 1查看 740关注 0票数 1

我有一项服务坐在边缘。这个服务需要在互联网上发送一些东西。

我在用CNI运河。

我能否定义一个NetworkPolicy,它只允许出口到互联网,而不允许集群的其他部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 14:15:33

类似于以下几点的方法会奏效:

代码语言:javascript
复制
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: only-allow-internet
spec:
  policyTypes:
    - Egress
  # match all pods in the namespace
  podSelector: {}
  egress:
    - to:
        - ipBlock:
            # allow all IPs
            cidr: 0.0.0.0/0
            except:
              # except the private IP ranges: https://en.wikipedia.org/wiki/Private_network
              - 10.0.0.0/8
              - 192.168.0.0/16
              - 172.16.0.0/20

它允许所有IP (因为每个IP与0.0.0.0/0匹配),但由IANA定义为私有IP范围的私有IP范围除外。

请注意,这也会破坏DNS查找,因为在默认情况下,Kubernetes吊舱会使用kubernetes内部的DNS服务器。您可以通过在中运行以下命令来验证它

代码语言:javascript
复制
$ nslookup google.com
$ nslookup google.com 8.8.8.8

第一个会超时,第二个会起作用。

默认情况下,Kubernetes DNS IP将是10.96.0.10。您可以通过检查吊舱内的/etc/resolv.conf来验证它。因此,如果希望DNS查找工作,则可能需要进一步自定义NetworkPolicy,定义更多特定的IP范围以允许DNS查找。

或者,您可以在pod定义级别定义DNS。详细信息在这里:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-config

此外,您不能阻止所有私有IP范围,而只能阻塞集群pod/服务范围。您可以在kube-apiserver参数中找到它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57203226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档