Iber寻址Kubernetes中的豆荚

时间:2018-06-10 07:09:57

标签: kubernetes cloud

即使pod位于同一个工作节点,pod如何获得唯一的IP地址?

pod也不是一个设备,它具有IP地址的逻辑是什么? 分配给Pod的IP地址是虚拟IP吗?

2 个答案:

答案 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

https://cdn-images-1.medium.com/max/1000/1*lAfpMbHRf266utcd4xmLjQ.gif

下面:

  

我们有一台机器,在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层(路由)解决方案
  •   
  • 叠加解决方案
  •   

第2层(转换)

https://cloudnativelabs.github.io/img/l2-network.jpg

您可以看到他们的IP归因于容器子网地址范围的一部分。

第3层(路由)

https://cloudnativelabs.github.io/img/l3-gateway-routing.jpg

这是关于使用子网路由填充默认网关路由器,如图所示 到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地址。