k8s-网络通讯方式

网络通讯模式

网络模型假定了所有Pod都在一个可以直接联通的扁平的网络空间,在这GCE(Google Compute Engine)里面是现成的网络模型,k8s假定这个网络已经存在。

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

  1. Flannel 是Centos团队针对k8s设计的一个网络规划服务,简单来说,它的功能是让集群中不同的节点主机创造的Docker容器都具有全集群唯一的虚拟IP地址。而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动的传递到目标容器
    在这里插入图片描述
    Flanneld 守护进程 监听转发接收数据包的端口 会开启Flannel0网桥,Flannel0收集Docker0转发的数据包

    同一个主机访问:
    若是同一个主机的两个不通Pod之间访问 走的是Docker0的网桥
    在这里插入图片描述
    跨主机访问:
    在这里插入图片描述

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

总:
同一个Pod内部通讯:同一个Pod共享同一个网络命令空间,共享同一个linux协议栈
Pod1至Pod2

  1. Pod1与Pod2不在同一台主机,Pod的地址是与docker0在同一个网段的,但docker0网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行。将Pod的IP和所有Node的IP关联起来,通过这个关联让Pod可以相互访问
  2. Pod1与Pod2在同一台主机,有docker0网桥直接转发请求值Pod2,不需要进过Flannel

Pod至Service的网络:目前基于性能考虑,现在用LVS转发 (之前全部为iptables维护和转发)
Pod到外网:Pod向外网发送请求,查找路由表,转发数据包到宿主机的网卡,宿主网卡完成路由选择后,iptables执行Masquerade,把源IP更爱为宿主机网卡的IP,然后向外网服务器发送请求

外网访问Pod:Service

  1. 三层网络
    在这里插入图片描述
    真实的物理网络只有节点网络,Pod网络和Service网络都是虚拟网络
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值