在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。
Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。 很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod 分配 IP 地址。 他们了解各种组件如何独立工作,但不清楚这些组件如何组合在一起使用。 例如,他们了解什么是 CNI 插件,但是不知道它们是如何被调用的。 本文就介绍 了各种网络组件 在 Kubernetes 集群中是如何交互的 ,以 及 如何帮助每个 Pod 都 获取 IP 地址。作者:Ronak Nathani
翻译:Bach(才云)
校对:星空下的文仔(才云)、bot(才云)
在 Kubernetes 中有多种网络设置方法,以及 container runtime 的各种选项。这篇文章将使用 Flannel 作为 network provider,并使用 Containered 作为 container runtime。
K8sMeetup背景概念
容器网络 同一主机上的容器 在同一主机上运行的容器通过 IP 地址相互通信的方法之一是使用 Linux Bridge,即在 Kubernetes(和 Docker)世界中,创建 veth(虚拟以太网)设备。该 veth 设备的一端连接在容器网络命名空间,另一端连接到主机网络上的 Linux Bridge。同一主机上的所有容器都将这 veth pair 的一端连接到 Linux Bridge,它们可以通过 Bridge 使用 IP 地址相互通信。Linux Bridge 也被分配了一个 IP 地址,它充当从目的地到不同节点的 Pod 流出流量的网关。 不同主机上的容器 在不同主机上运行的容器可以通过其 IP 地址相互通信的方式之一是使用数据包封装(packet encapsulation)。Flannel 通过 vxlan