即使 Pod 存在于同一个 worker 节点上,它们如何获得唯一的 IP 地址?
另外,Pod 不是设备,为什么要为其分配 IP 地址?
分配给 Pod 的 IP 地址是虚拟的吗?
即使 Pod 存在于同一个 worker 节点上,它们如何获得唯一的 IP 地址?
另外,Pod 不是设备,为什么要为其分配 IP 地址?
分配给 Pod 的 IP 地址是虚拟的吗?
Pod 是集群(节点组)的一部分,集群网络 可以告诉您以下信息:
实际上,Kubernetes 在 Pod 范围内应用 IP 地址 - Pod 中的容器共享其网络命名空间,包括它们的 IP 地址。
这意味着 Pod 中的容器可以在本地主机上互相访问彼此的端口。
这意味着 Pod 中的容器必须协调端口使用,但这与 VM 中的进程没有区别。
这被称为“每个 Pod 一个 IP”模型。
限制条件如下:
- 所有容器都可以直接通信而无需 NAT
- 所有节点都可以直接与所有容器通信(反之亦然)而无需 NAT
- 容器看到自己的 IP 与其他人看到的 IP 相同
从Alok Kumar Singh的 "使用 Kubernetes 进行网络编程" 中了解更多:
这里:
我们有一台机器,在kubernetes中被称为节点。
它有一个IP地址172.31.102.105,属于CIDR 172.31.102.0/24的子网。
(CIDR:无类域间路由选择, 一种用于分配IP地址和IP路由的方法)
请参阅来自CloudNativelabs的Kubernetes Networking以获取相关信息:该节点有一个网络接口
eth0
。它属于节点的根网络命名空间。
为了使pod隔离,它们被创建在它们自己的网络命名空间中-这些是pod1 n/w ns和pod2 n/w ns。
pod被分配了IP地址100.96.243.7和100.96.243.8,来自CIDR范围100.96.0.0/11。
通常不使用。
注意:另请参阅(2018年10月):“Google Kubernetes Engine networking”。
Kubernetes在容器内部创建了一个网络。例如,在GKE中,默认情况下是/14,但用户可以使用/11到/19之间的范围进行覆盖。
当Kubernetes创建一个Pod时,它会从这些范围中分配一个IP地址。现在,您不能在您的网络中有另一个不属于您的集群的虚拟机,使用与Pod相同的IP地址。
为什么?想象一下,您有一个VPN隧道需要将数据包传递到Pod和VM都在使用的地址。它会传递给谁呢?
因此,回答您的问题:不,这不是虚拟IP,而是来自您的网络的物理IP地址。