问题描述
我们正在使用Rancher设置以Canal作为CNI的集群。我们决定将Traefik用作入口控制器,并希望创建一个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不了解吗?
预先感谢
解决方法
我解决了问题。这是一个普通的初学者错误:
- namespaceSelector:
matchLabels:
namespace: kube-system
我没有将Label
namespace: kube-system
添加到Namespace
kube-system
。
添加标签后,它立即生效。