K8s 网络
Kubernetes 网络主要涉及两个方面:一个是各个服务的网络间负载均衡,另一个是网络间的通讯。
容器到容器
Pod 内部容器共享一个网络命名空间,使用 loopback 通信
Pod 使用 pause 容器启动网络命名空间,pause 的 NetworkMode 是 bridge,其它容器都共享 pause 容器的网络
Pod 到 Pod
每一个 Pod 都有唯一的 IP 地址。
同一 node 上的 Pod 都通过 Veth 连接到 docker0,可以直接用对方的 IP 地址通信,而不需要其它发现机制,例如 DNS、Consul、etcd。
不同 node 上的 Pod 也是通过 IP 地址通信,但是需要进行配置。每个 node 的 docker0 地址不能有冲突,通过找到对方 Pod 所在机器 IP,将数据包通过本机网卡发向对方 Pod 所在机器的网卡。数据包到达对方网卡之后,对方知道如何将数据通过 docker0 转发到 Pod。
每个主机的 docker0 都可以被路由到,因此在网络层可以把 node 看作一个路由器
(不同网络方案有所出入)
Last updated
Was this helpful?