kubernetes - 为什么 Kubernetes 网络模型不要求在防火墙上打开服务集群 ip 范围?
问题描述
Kubernetes 网络文档中的唯一要求是在 pod 之间打开防火墙。pod 到服务的连接如何工作,因为服务集群 ip range 和 pod cidrs 不同?
解决方案
服务分配了一个虚拟 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。
推荐阅读
- postgresql-10 - 如何避免 PostgreSQL v 10 中的主键列重复?
- javascript - 如何将包含哈希的 URI 作为路由参数传递来表达?
- android - Kotlin:如何将图像 Uri 转换为 Bitmap 到 Base64
- python-3.x - 为 Python 3.7 安装 libffi-dev 时遇到问题
- python - 为什么我的 OR Pandas 过滤器逻辑不起作用?
- css - 如何更改 Foundation 5 中的中间断点
- python - 将月份转换为数字时如何有效地检查不同的日期格式
- windows - 如何使用 powershell 进行一些面向对象的编程:为一个 PS 应用程序创建多个表单
- angular - 角度表单组未使用复选框值更新
- c# - 需要帮助按属性选择 xml 节点