为什么 Kubernetes 网络模型不要求在防火墙上打开服务集群 ip 范围?

Why doesn't Kubernetes networking model ask for service cluster ip range to be opened on firewall?

Kubernetes 网络文档中的唯一要求是在 pods 之间打开防火墙。由于服务集群 ip 范围和 pod cidr 不同,pod 到服务的连接如何工作?

服务已分配 虚拟 IP。当 Pod 与服务通信时,本地节点上的 Kubeproxy 将虚拟 IP 替换为代表该服务的 pods 之一的 IP。

一个例子: 例如。 Node-A 上的 Pod-A 想要向 Service-B 发送请求。例如,Service-B 由带有标签 app-b 的 pods 实现,在此示例中,Node-C 和 Node-E 上的 Pod-D 和 Pod-E。当 Pod-A 发送请求时,kubeproxy 将目标 IP 从虚拟 IP 更改为 Pod-D 或 Pod-E 的 IP,并将请求路由到代表 Service-B 的 pods 之一.

Layout:
Service-B with selector: app=b

Pod-D with label: app=b
Pod-E with label: app=b

Pod-A 应该寻址服务虚拟 IP,因为 pods 在部署新版本时来去去去 。但是虚拟 IP 会随着 Service 的实现被转换成一个 pod。