首页 > 解决方案 > 为什么 Kubernetes 网络模型不要求在防火墙上打开服务集群 ip 范围?

问题描述

Kubernetes 网络文档中的唯一要求是在 pod 之间打开防火墙。pod 到服务的连接如何工作,因为服务集群 ip range 和 pod cidrs 不同?

标签: kubernetesproject-calico

解决方案


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

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

Layout:
Service-B with selector: app=b

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

Pod-A 应该寻址 Service 虚拟 IP,因为在部署新版本时Pod来来去去。但是虚拟 IP 被翻译成一个带有 Service 实现的 pod。


推荐阅读