• 【kubernetes的三种网络】


    一、三种网络

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

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

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

    在这里插入图片描述

    二、其他网络

    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
    在这里插入图片描述
    源目标:10.1.15.2
    目的目标:10.1.20.2
    pod1和pod3通信:首先到docker0这个网桥上,通过flannel0这个网关,把数据存入到etcd.然后封装,把源地址和目的地址都放进去。然后开始解封装。然后目的地址是10.1.20.2,通过路由表信息返回给flanneld,发给网关flannel0,flannel0再发给docker0,docker0再发给pod3
    在这里插入图片描述
    通过node1发送给container1,通过cni插件到flannel0里面,flannel0里面有他的网段,flanneld是一个服务,在这里,把内部IP头进行封装到UDP报文当中。eth0与eth0根据路由表通过物理网卡发送到目标节点主机,这个服务找到相应的网络网卡,通过
    服务网络段找到cni,找到container

  • 相关阅读:
    详解欧拉计划第757题:隐匿数
    Using Set Processing Examples 使用集合处理示例
    flutter系列之:flutter中常用的ListView layout详解
    getBean方法源码
    Spring异步任务async介绍与案例实战
    Spring AOP实现 | 代理模式分析
    Linux安装MySQL(源码安装)
    etcd选举源码分析和例子
    Sentinel服务熔断和降级
    【Java】Java对象的上转型对象与下转型
  • 原文地址:https://blog.csdn.net/m0_56405902/article/details/133646823