0

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

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 策略后,我正在curl ifconfig.coxyz pod 上进行测试。它有时会给出以下错误和超时:

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

我想我在这里遗漏了一些东西。任何人都可以请我对此提供任何见解吗?或更好地解决此要求。

4

2 回答 2

0

您应该有一个此处所示的出口规则,而不是入口规则。

  egress:
   - {}
于 2020-08-09T13:31:16.123 回答
0

在您的示例中,您已阻止所有 DNS 查询,因此作为解决方法,请尝试此方法,因为使用 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
于 2020-08-10T14:36:53.963 回答