Kubernetes 中 Pod 的 IP 寻址

unm*_*war 5 cloud kubernetes

即使 Pod 驻留在同一个工作节点中,它们如何获得唯一的 IP 地址?

另外,pod 不是设备,为其提供 IP 地址背后的逻辑是什么?
分配给Pod的IP地址是虚拟IP吗?

Von*_*onC 8

Pod是集群(节点组)的一部分,集群网络告诉您

\n\n
\n

实际上,Kubernetes 在 Pod 范围内应用 IP 地址 - Pod 内的容器共享其网络命名空间 - 包括其 IP 地址。

\n\n

这意味着 Pod 中的容器都可以相互访问本地主机上的\xe2\x80\x99s 端口。
\n 这确实意味着 Pod 中的容器必须协调端口使用,但这与 VM 中的进程没有什么不同。
\n 这称为\xe2\x80\x9cIP-per-pod\xe2\x80\x9d 模型

\n
\n\n

限制条件是:

\n\n
\n
    \n
  • 所有容器无需 NAT 即可与所有其他容器通信
  • \n
  • 所有节点都可以与所有容器通信(反之亦然),无需 NAT
  • \n
  • 容器将自己视为的 IP 与其他容器将其视为的 IP 相同
  • \n
\n
\n\n

查看Alok Kumar Singh的“ Networking with Kubernetes ”了解更多内容:

\n\n

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

\n\n

这里:

\n\n
\n

我们有一台机器,它在kubernetes中称为节点
\n 它的 IP 172.31.102.105 属于 CIDR 172.31.102.0/24 的子网。

\n
\n\n

( CIDR:无类别域间路由,一种分配IP地址和IP路由的方法)

\n\n
\n

该节点具有附加的网络接口eth0。它属于节点的根网络命名空间。
\n 对于要隔离的 pod,它们是在自己的网络命名空间\xe2\x80\x8a\xe2\x80\x94\xe2\x80\x8ath 中创建的,它们是 pod1 n/w ns 和 pod2 n/w ns。
\n 为 Pod 分配 CIDR 范围 100.96.0.0/11 中的 IP 地址 100.96.243.7 和 100.96.243.8。

\n
\n\n

有关信息,请参阅CloudNativelabs中的“ Kubernetes Networking ” :

\n\n
\n

Kubernetes 不会协调设置网络,并将作业卸载到CNI(容器网络接口)插件。有关CNI 规范的更多详细信息,请参阅CNI 规范。

\n\n

以下是通过 CNI 插件可能的网络实现选项,这些插件允许 Pod 到 Pod 的通信,以满足 Kubernetes 的要求:

\n\n
    \n
  • 第 2 层(交换)解决方案
  • \n
  • 第三层(路由)解决方案
  • \n
  • 覆盖解决方案
  • \n
\n
\n\n

第 2 层(交换)

\n\n

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

\n\n

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

\n\n

第 3 层(路由)

\n\n

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

\n\n

这是关于使用子网的路由填充默认网关路由器,如图所示。
\n到 10.1.1.0/24 和 10.1.2.0/24 的路由分别配置为通过节点 1 和节点 2。

\n\n

覆盖解决方案

\n\n

一般不使用。

\n\n

注意:另请参阅(2018 年 10 月):“ Google Kubernetes Engine 网络”。

\n