Kubernetes Networkpolicy无法按预期工作

时间:2020-08-08 15:10:47

标签: nginx kubernetes kubernetes-networkpolicy kubernetes-networking

我有一个k8s群集,该群集将工作节点分散在6个可用区中,因此,出口流量将通过6个nat网关进行路由。我的要求是,应用程序“ xyz”的所有出口流量都应仅通过AZ-A的nat网关进行路由。因此,作为一个解决方案,我在相同的名称空间中创建了一个nginx代理实例,放置一个关联性规则以将其仅绑定到AZ-A,并考虑使用网络策略将xyz pod的出口流量路由到该代理实例。但是似乎网络策略正在阻止整个出口流量。下面是看起来不错的出口西北策略代码。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: xyz-app-egress
spec:
  podSelector:
    matchLabels:
      app: xyz
  policyTypes:
  - Ingress
  - Egress
  ingress: 
  - {}
  egress:
    - to:
      - podSelector:
          matchLabels:
            app: proxy

在应用NW策略之后,我正在xyz窗格上使用curl ifconfig.co进行测试。而且有时会出现以下错误和超时:

curl: (6) Could not resolve host: ifconfig.co

我想我在这里错过了一些东西。有人能提供我对此的任何见解吗?或对此要求有更好的解决方案。

2 个答案:

答案 0 :(得分:0)

您应该有here所示的出口规则,而不是入口规则。

  egress:
   - {}

答案 1 :(得分:0)

在您的示例中,您已阻止了所有DNS查询,因此,解决方法请try this approach,因为使用TCP和UDP协议在端口53上发生DNS流量:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: foo-allow-to-hello
spec:
  policyTypes:
  - Ingress
  - Egress
  podSelector:
    matchLabels:
      app: xyz
  ingress: 
  - {}
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: proxy
  - ports:
    - port: 53
      protocol: TCP
    - port: 53
      protocol: UDP