Kubernetes网络通讯方式

https://blog.csdn.net/qq_41999455/article/details/104246356

网络通讯模式

Kubernetes 的网络模型假定了所有Pod 都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Compute Engine)里面是现成的网络模型,Kubernetes 假定这个网络已经存在。而在私有云里搭建Kubernetes 集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker 容器之间的互相访问先打通,然后运行Kubernetes

网络通讯模式的方式

同一个Pod 内的多个容器之间:localhost
各Pod 之间的通讯:Overlay Network
Pod 与Service 之间的通讯:各节点的Iptables 规则

同一个Pod 内的多个容器之间

同一个Pod的容器共享同一个网络命名空间,它们之间使用Puse的一个网络协议栈,可以理解为它们之间的访问可以通过localhost地址和容器端口实现;
在这里插入图片描述

各Pod 之间的通讯

同一Node不同Pod间是通过Docker网桥来进行数据包分配传输的,它们关联在同一个Docker0网桥上,地址网段相同,IP1、IP2、IP3属于同一个网段,所以它们之间能通信;

在这里插入图片描述

Pod 与Service 之间的通讯

目前基于性能考虑,全部为iptables维护和转发,这个是老式的。更新高级的是LVS,性能更高。

在这里补充一下关于外网的网络通信:



  1. Pod到外网:Pod向外网发送请求,查找路由表,转发数据包到宿主机的网卡,宿主网卡完成路由选择后,IPtables执行Masquerade,把源IP修改为宿主网卡的IP,然后向外网服务器发送请求;
  2. 外网访问Pod:通过service来访问,一般使用NodePort;

Flannel网络介绍

Flannel 是CoreOS 团队针对Kubernetes 设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker 容器都具有全集群唯一的虚拟IP地址。而且它还能在这些IP 地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内

它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。

Flannel工作原理

  • flannel默认使用8285端口作为UDP封装报文的端口,VxLan使用8472端口。

在这里插入图片描述
如果此时需要Node1节点的app1发送数据包到达Node2节点的Backend,那就需要通过一下步骤来使得两者构建通信:

  • app1将自身IP地址、目标IP及其所发数据发送至Docker0的网桥;
  • Docker0获取到发送的数据包,由于目标IP的网段与当前Docker0的网段不是同一个,所以它会通过钩子函数抓取数据信息继续发送至Flannel0的网桥;
  • Flannel0网桥这时候会通过Flanneld中的路由表信息来确定具体的转发路径,此时会进行一个数据的二次封装,然后通过对应的外部节点IP(192.168.0.100/24)发送到目标外部IP(192.168.0.200/24);
  • 发送到Node2节点之后会对数据包进行解析获取具体目标Pod的IP(10.1.20.3/24),然后发送到Backend从而完成整个Pod通信;

ETCD 之 Flannel 提供说明

存储管理Flannel 可分配的IP 地址段资源 (防止IP冲突)
监控ETCD 中每个 Pod 的实际地址,并在内存中建立维护 Pod 节点路由表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维生涯记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值