【发布时间】:2018-10-10 16:36:57
【问题描述】:
使用kubectl get pod 命令初始化容器用于获取其他pod的就绪状态。
开启 Egress NetworkPolicy 后,init 容器无法访问 Kubernetes API:Unable to connect to the server: dial tcp 10.96.0.1:443: i/o timeout。 CNI 是印花布。
尝试了多个规则,但没有一个有效(服务和主主机 IP、不同的 CIDR 掩码):
...
egress:
- to:
- ipBlock:
cidr: 10.96.0.1/32
ports:
- protocol: TCP
port: 443
...
或使用命名空间(默认和 kube-system 命名空间):
...
egress:
- to:
- namespaceSelector:
matchLabels:
name: default
ports:
- protocol: TCP
port: 443
...
看起来 ipBlock 规则不起作用,命名空间规则也不起作用,因为 kubernetes api 是非标准 pod。
可以配置吗? Kubernetes 是 1.9.5,Calico 是 3.1.1。
GKE 1.13.7-gke.8 和 calico 3.2.7 仍然存在问题
【问题讨论】:
-
这个问题你解决了吗?
-
GKE
1.11.6-gke.3上的相同问题(使用 Calicov3.2.4) -
您是否使用标签
name=default标记了您的default命名空间?对我来说,命名空间需要标记并不明显 - 我从 TGI Kubernetes 085: Network Policies 学到的 -
嗨。你设法解决了这个问题吗?我被困住了,我什么都试过了。使用 CIDR、标签。
标签: kubernetes project-calico kubernetes-networkpolicy