在任意一台 K8S 节点上,你可以看到类似下面的路由表:
|
|
这个表里的 10.42.1.0/24 和 10.42.2.0/24 子网正好是 K8S Overlay 网络的一部分。而这个路由表给了你一个线索,就是你可以从任意节点通过 Cluster IP 访问到 Pod:
|
|
注意,是从任意节点,而不是从 K8S 集群 Overlay 网络内部访问 Pod。
那现在我们总结一下目前的情况:
- K8S 要求安装时把
net.ipv4.ip_forward = 1
打开(文档)。 - 可以从任意节点通过 Cluster IP 访问到集群内的 Pod,因为节点上设置了路由表。
- 隐含情况:Pod 可以访问到节点所在的子网。
结合目前这 3 个情况,可以得出一个结论:
可以利用任意 K8S 节点,通过 Cluster IP 访问到 K8S 集群内的 Pod。
事实上也的确如此,找一台同子网但不是 K8S 节点的服务器,设置路由规则,你会发现可以 ping 通 Pod 的 Cluster IP:
|
|
所以结论是:
- 可以利用任意 K8S 节点,通过 Cluster IP 访问到 K8S 集群内的 Pod。
- 因此 K8S 的节点需要配置防火墙规则,见这此文。
评论