美文网首页
Kubernetes-网络通讯方式

Kubernetes-网络通讯方式

作者: ssttIsme | 来源:发表于2023-05-10 22:07 被阅读0次

    Kubernets的网络模型假定了所有Pod都在一个可以直接连同的扁平网络空间中(所有Pod都可通过对方IP直接到达)。

    同一个Pod内部通讯

    同一个Pod共享Pause基础容器的Linux协议栈,他们直接互相访问就是走的这个网络栈的IO,通过localhost(回环网卡)的方式能直接访问。

    Pod1至Pod2-各Pod之间的通讯

    Pod1与Pod2在同一台机器

    由Docker0网桥直接转发请求至Pod2,(因为大家都是在同一个网桥下面不同的子网)不需要经过Flannel-【也就是在真实服务器的主机内核已经完成了数据包的转换】


    Pod1与Pod2不在同一台机器(跨主机通过对方的IP到达)

    Pod的地址与docker0实在同一个网段的,但是docker0网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行。将Pod的IP和所在Node的IP关联起来,通过这个关联让Pod可以互相访问。
    (在真实的Node服务器上会安装Flanneld的守护进程,这个进程会监听一个端口,这个端口就是用于后期转发数据包以及接入数据包的服务端口,Flanneld进程启动后会开启一个网桥叫Flannel0,Flannel0专门收集Docker0转发出来的数据包,可以理解为钩子函数强行获取数据报文。Docker0会分配自己的IP到对应的Pod上。)


    例子:假设Web app2想把数据包转发到Backend,它的数据包先写入10.1.15.2/24,因为目标的网段和自己不是同一个网段,所以它先发到自己的网关Docker0,Docker0上会有钩子函数把数据包抓到Flanne0,Flanneld还会从etcd拿路由表记录判断路由到哪个机器,因为Flannel0是Flanneld的网桥,数据包会到Flanneld,它会对数据报文进行封装【mac-到三层-到udp数据报文-到新的三层信息-到数据包实体Payload】,因为三层写了到192.168.66.12所以数据包到达192.168.66.12Node节点,并且数据包到达目标Flanneld的端口被Flanneld截获,截获后Flanneld拆封,拆封完转发Flannel0,Flannel0转发到Dokcer0,Docker0看到新三层的目标地址信息10.1.20.3把10.1.15.2数据包。转发到Backend端

    Flannel和ETCD的关联:1存储管理Flannel可分配的IP地址段资源(Flannel启动后会向ETCD插入可以被分配的网段,并且把哪个网段分配到哪个机器也记录上,防止已分配的网段再被Flannel利用分配给其他Node节点)2Flannel监控ETCD中每个Pod的实际地址,并在内存中建立维护Pod节点路由表(因为封装最上层的三层信息的时候需要对方主机的地址信息)

    Pod至Service直接的通信

    基于各节点的Iptables规则进行维护和转发,最新版本加入了LVS机制进行维护和转发(转发的效率和上限会更高)

    Pod到外网

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

    外网访问Pod

    Service的NodePort方式

    谷歌没有对Kubernetes做很强的定义,允许通过CNI接口来达到自己想要的网络方案。Flannel是符合CNI接口的最常用的解决扁平化网络的方案。Flannel是CoreOS团队针对Kubernets设计的网络规划服务,它的功能是让集群中的不同节点主机创建的Docker容器具有全集群唯一的虚拟IP地址。而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内。
    不同容器之间IP一定不能一样(可以修改docker启动的配置文件,把docker0网桥的分配网段修改掉,只要docker0分配的网段不一样,容器的IP肯定能够不一样)。

    Kubernetes的三层网络:
    节点网络(真实的物理网络)、Pod网络(虚拟网络)、Service网络(虚拟网络)

    相关文章

      网友评论

          本文标题:Kubernetes-网络通讯方式

          本文链接:https://www.haomeiwen.com/subject/dfljsdtx.html