【kubernetes的三种网络】

kubernetes的三种网络

  • 一、三种网络
    • service网络(service是虚拟IP地址)
    • pod网络(pod的IP地址 docker容器的IP)
    • 节点网络(网络服务器上的物理网卡IP)
  • 二、其他网络
    • flannel
      • 一、vxlan(隧道方案)
        • 1.定义
        • 2.优势
        • 3.工作原理
      • 二、host-gw路由网关
      • 三、UDP

一、三种网络

service网络(service是虚拟IP地址)

pod网络(pod的IP地址 docker容器的IP)

节点网络(网络服务器上的物理网卡IP)

【kubernetes的三种网络】_第1张图片

二、其他网络

flannel

一、vxlan(隧道方案)

1.定义

默认配置利用内核级别的vxlan封装host主机之间传送包(好用)
将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。

2.优势

1.24位长度的VNI字段值可以支持更多数量的虚拟网络,解决了VLAN数目上限为4094的局限性问题
2.VXLAN技术通过隧道技术在物理的三层网络中虚拟二层网络,处于VXLAN网络的终端无法察觉到VXLAN的通信过程,这样也就使得逻辑网络拓扑和物理网络拓扑实现了一定程度的解耦,网络拓扑的配置对于物理设备的配置依赖程度有所降低,配置更灵活方便
3.解决了二层网络广播域分割的问题,二VXLAN技术还具有很多租户支持的特性,通过VXLAN分割各个租户可以独立组网、通信,地址分配方面和多个租户之间地址冲突的问题也得到了解决

3.工作原理

1.数据帧从主机A上Pod的源容器中发出后,经由所在主机的docker0/cni0网络接口转发到flannel.1接口
2.flannel.1收到数据帧后添加VXLAN头部,封装在UDP报文中
3.主机A通过物理网卡发送封装包到主机B的物理网卡中
4.主机B的物理网卡再通过VXLAN默认端口4789转发到flannel.1接口将进行解封装
5.解封装后,内核将数据帧发送到cni0,最后由cni发送到桥接到此接口的容器B中

二、host-gw路由网关

二层网络配置不支持云环境,通过在host路由表中直接创建到其他主机subnet路由条目配置麻烦

三、UDP

通过三层转发用户态实现数据的封装和解封装性能稍微较差
默认网段 10.244.0.0/16
【kubernetes的三种网络】_第2张图片
源目标:10.1.15.2
目的目标:10.1.20.2
pod1和pod3通信:首先到docker0这个网桥上,通过flannel0这个网关,把数据存入到etcd.然后封装,把源地址和目的地址都放进去。然后开始解封装。然后目的地址是10.1.20.2,通过路由表信息返回给flanneld,发给网关flannel0,flannel0再发给docker0,docker0再发给pod3
【kubernetes的三种网络】_第3张图片
通过node1发送给container1,通过cni插件到flannel0里面,flannel0里面有他的网段,flanneld是一个服务,在这里,把内部IP头进行封装到UDP报文当中。eth0与eth0根据路由表通过物理网卡发送到目标节点主机,这个服务找到相应的网络网卡,通过
服务网络段找到cni,找到container

你可能感兴趣的:(kubernetes,网络,容器)