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)
二、其他网络
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