即使pod位于同一个工作节点,pod如何获得唯一的IP地址?
pod也不是一个设备,它具有IP地址的逻辑是什么? 分配给Pod的IP地址是虚拟IP吗?
答案 0 :(得分:2)
pod是群集(节点组)的一部分,cluster networking告诉您:
实际上,Kubernetes在Pod范围内应用IP地址 - Pod中的容器共享其网络命名空间 - 包括其IP地址。
这意味着Pod中的容器都可以在localhost上到达彼此的端口 这确实意味着Pod中的容器必须协调端口使用,但这与VM中的进程没有什么不同 这称为“IP-per-pod”模型。
约束是:
- 所有容器都可以与没有NAT的所有其他容器通信
- 所有节点都可以与所有容器通信(反之亦然),无需NAT
- 容器看到的IP与其他人看到的IP相同
使用" Networking with Kubernetes"来自Alok Kumar Singh:
下面:
我们有一台机器,在kubernetes中称为节点 它的IP 172.31.102.105属于具有CIDR 172.31.102.0/24的子网。
(CIDR: Classless Inter-Domain Routing,一种分配IP地址和IP路由的方法)
节点附加了网络接口
eth0
。它属于节点的根网络命名空间 对于要隔离的pod,它们是在自己的网络命名空间中创建的 - 这些是pod1 n / w ns和pod2 n / w ns。 从CIDR范围100.96.0.0/11为pod分配IP地址100.96.243.7和100.96.243.8。
对于,请参阅" Kubernetes Networking"来自CloudNativelabs:
Kubernetes没有协调设置网络并将作业卸载到 CNI (Container Network Interface) 插件。有关CNI规范的更多详细信息,请参阅 CNI spec 。
以下是通过CNI插件实现的网络实施选项,允许pod-to-pod通信符合Kubernetes要求:
- 第2层(转换)解决方案
- 第3层(路由)解决方案
- 叠加解决方案
您可以看到他们的IP归因于容器子网地址范围的一部分。
这是关于使用子网路由填充默认网关路由器,如图所示 到10.1.1.0/24和10.1.2.0/24的路由分别配置为通过node1和node2。
一般不使用。
注:另见(2018年10月):" Google Kubernetes Engine networking"。
答案 1 :(得分:0)
Kubernetes在您的网络中为容器创建一个网络。例如,在GKE中,默认情况下它是/ 14,但可以被范围在/ 11和/ 19之间的用户覆盖。
当Kubernetes创建一个pod时,它会从这些范围分配一个IP地址。现在,您不能在网络中拥有另一个VM,而不是群集的一部分,具有与Pod相同的IP地址。
为什么呢?想象一下,你有一个VPN隧道,需要将一个数据包传送到pod和VM都在使用的地址。它将交付给谁?
所以,回答你的问题;不,它不是虚拟IP,而是来自网络的物理IP地址。