Kubernetes网络(二)

CNI(容器网络接口)

CNI是Container Network Interface的是一个标准的,通用的接口。现在容器平台:docker,kubernetes,mesos,容器网络解决方案:flannel,calico,weave。只要提供一个标准的接口,就能为同样满足该协议的所有容器平台提供网络功能,而CNI正是这样的一个标准接口协议。

2.1 pod的通信分类

1、同一个Pod内的多个容器之间:lo Network

2、各Pod之间 或 不同主机各Pod 的通讯:Over lay Network

3、Pod 与 Service之间的通讯:各节点的 Iptables规则 或者 IPVS

2.2 K8S整体网络模型图

2.3 K8S中的三种网络

1、node网络:负责不同主机之间的pod通信的入口和出口(物理网络)

2、service网络:负责对外提供服务(暴露网络&集群内部网络)

3、pod网络:负责pod内部容器之间的通信 和 pod 与 pod之间的通信(内部网络)

2.4 K8S的网络通讯原理

1、同一个Pod内部通讯:

  • 同一个Pod共享同一个网络命名空间,共享同一个 Linux协议栈。

2、Pod1 至 Pod2:

  • Pod1与Pod2在同一台机器:由 Docker0网桥直接转发请求至Pod2,不需要经过 Flannel。
  • Pod1至Pod2不在同一台主机:Pod的地址是与 docker0在同一个网段的,但 docker0网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行。

3、Pod 至 Service的网络:

  • iptables 或者 IPVS维护和转发

4、Pod到外网:

  • Pod向外网发送请求,查找路由表,转发数据包到宿主机的网卡,宿主网卡完成路由选择后, iptables执行 Masquerade,把源IP更改为宿主网卡的IP,然后向外网服务器发送请求

5、外网访问Pod:

  • 访问对应的Service即可

posted @ 2023-08-15 16:42  ArMinLi  阅读(16)  评论(0编辑  收藏  举报