1

应用出口网络策略命令无法连接互联网kubectl run app1 --image tomcat:7.0-slim后,我在 GKE 中有一个 pod ( )。apt-get update

申请政策前:

在此处输入图像描述

申请政策后:

在此处输入图像描述

这是应用的策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: app2-np
  namespace: default
spec:
  podSelector:
    matchLabels:
      name: app2
  policyTypes:
  - Egress
  - Ingress
  ingress:
  - {}
  egress:
  - to:
    - podSelector:
        matchLabels:
          name: app3
    ports:
    - port: 8080

  - ports:
    - port: 80
    - port: 53
    - port: 443

这里可以在同一个命名空间中连接 app3 pod 的 8080 端口。请帮助纠正我的netpol。

4

1 回答 1

1

发生这种情况是因为您仅在端口 8080 上为 app3 定义了出口规则,它将阻止所有互联网连接尝试。

如果您需要从某些 pod 使用访问互联网,您可以标记它们并创建 NetworkPOLicy 以允许互联网访问。

在下面的示例中,带有标签的 podnetworking/allow-internet-egress: "true"将能够访问互联网:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: internet-egress
spec:
  podSelector:
    matchLabels:
      networking/allow-internet-egress: "true"
  egress:
  - {}
  policyTypes:
  - Egress

另一个选项是通过 ip 块允许,在下面的示例中,规则将允许互联网访问 ( 0.0.0.0) ,除了ipBlocks10.0.0.0/8

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

最后,在这个站点中,您可以以一种很好的方式可视化您的 NetworkPolice,以了解确切的行为。

参考:

https://www.stackrox.com/post/2020/01/kubernetes-egress-network-policies/

Kubernetes networkpolicy 只允许外部流量到互联网

于 2020-09-21T09:57:45.623 回答