0

我们正在使用 Rancher 以 Canal 作为 CNI 来设置集群。我们决定使用 Traefik 作为 Ingress Controller,并希望创建一个 NetworkPolicy。我们禁用了 ProjectIsolation,并且 Traefik 正在 kube-system 命名空间的 System 项目中运行。

我创建了这个政策:

# deny all ingress traffic
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  ingress:
  - from:
    - podSelector: {}

---
# allow traefik
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-traefik
spec:
  podSelector: {}
  ingress:
    - from:
      - namespaceSelector:
          matchLabels:
            namespace: kube-system
        podSelector:
          matchLabels:
            app: traefik

---
# allow backnet
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-backnet
spec:
  podSelector: {}
  ingress:
    - from:
      - ipBlock:
          cidr: 10.0.0.0/24
      - ipBlock:
          cidr: 10.1.0.0/24
      - ipBlock:
          cidr: 10.2.0.0/24
      - ipBlock:
          cidr: 192.168.0.0/24

但不知何故,我们无法让它发挥作用。连接超时,仅此而已。这个政策有什么大问题吗?我对 NetworkPolicies 有什么不明白的地方?

提前致谢

4

1 回答 1

1

我解决了问题。这是一个简单的初学者错误:

- namespaceSelector:
    matchLabels:
      namespace: kube-system

我没有添加Label namespace: kube-systemNamespace kube-system.

添加标签后,它立即生效。

于 2020-11-04T14:51:54.090 回答