kubernetes networkpolicy仅允许外部通信到internet

kubernetes networkpolicy仅允许外部通信到internet,kubernetes,azure-aks,Kubernetes,Azure Aks,我试图在我的kubernetes集群中实现网络策略,以隔离命名空间中的吊舱,但仍然允许它们访问internet,因为我使用Azure MFA进行身份验证 这是我尝试过的,但似乎无法让它工作。入口按预期工作,但这些策略阻止所有出口 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all spec: podSelector: {} policyTypes: - Ing

我试图在我的kubernetes集群中实现网络策略,以隔离命名空间中的吊舱,但仍然允许它们访问internet,因为我使用Azure MFA进行身份验证

这是我尝试过的,但似乎无法让它工作。入口按预期工作,但这些策略阻止所有出口


apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress 
有谁能告诉我如何进行上述配置,以便我也允许互联网流量,但阻止其他POD的流量?

你能这样试试吗

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress,Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

它应该允许所有目的地的出口。但是,如果目的地是pod,它应该被同一网络策略中缺少的进入规则所阻止。

除非有网络策略,否则Kubernetes将允许所有流量。 如果设置了网络策略,它将只允许网络策略设置的流量,并拒绝所有其他内容

默认情况下,POD是非隔离的;他们接受来自任何来源的流量

POD通过具有选择它们的网络策略而变得孤立。一旦名称空间中有任何NetworkPolicy选择了特定的pod,该pod将拒绝任何NetworkPolicy不允许的任何连接。(命名空间中未被任何NetworkPolicy选择的其他POD将继续接受所有流量。)


因此,您还需要指定出口规则,以使其按您希望的方式工作:)

尝试在命名空间上添加默认的拒绝所有网络策略,然后在之后添加允许Internet策略

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress
这将阻止除internet出站之外的所有流量。 在“仅允许internet”策略中,所有专用IP都有一个例外,这将阻止pod到pod的通信。
如果您需要DNS查找,您还必须允许从kube系统到核心DNS的出口,因为默认的拒绝所有策略将阻止DNS查询。

我已经尝试过类似的方法,无论如何,我刚刚添加了您的网络策略,我的pod可以与Azure对话,但仍然允许pod到pod的流量。我的测试方法是将一个控制台带到pod,然后对同一命名空间中的另一个pod执行curl。这对我不起作用:(当我添加此项时,我的播客仍然能够通信,但无法访问internet。我认为
172.16.0.0/20
应该是
172.16.0.0/12
,因为似乎
cidr
应该比
ipBlock
缩进一级。
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-internet-only
spec:
  podSelector: {}
  policyTypes:
    - Egress
  egress:
    - to:
      - ipBlock:
        cidr: 0.0.0.0/0
          except:
            - 10.0.0.0/8
            - 192.168.0.0/16
            - 172.16.0.0/20