当我们创建完 Pod 后,Pod 的 IP 与 Service IP 会自动分配,而 Pod IP 仅 K8s 集群内部访问,那 K8s 集群外部客户端又是如何访问 Pod 呢?看了官方相关文档,查询到是通过 Host 的 iptables
(即 K8s 集群节点的 iptables)来实现的,当然其负载均衡策略也是通过 iptables
来实现的。
在上图中,有个 Cluster IP 的字段,该 Cluster IP 是一个虚拟 IP,由 K8s 集群节点的 iptables 规则管理,查看当前节点的 iptables,并过滤与 Cluster IP 相关的规则。
iptables-save |grep '10.99.153.224'
下图中,我起了 2 个 Pod 副本和一个 Service 资源: