美文网首页
k8s Flannel网络方案

k8s Flannel网络方案

作者: Wu杰语 | 来源:发表于2021-11-30 23:57 被阅读0次

k8s中规定了CNI接口,但是没有标准化网络方案,网络方案也是网络基础,在这个基础上k8s提供了service负载均衡抽象,搞清楚基础网络方案是非常重要的。

CNI定义

type    CNI interface   {
  AddNetworkList(net *NetworkConfigList, rt *RuntimeConf) (types.Result,    error)              
  DelNetworkList(net *NetworkConfigList, rt *RuntimeConf) error             
  AddNetwork    (net    *NetworkConfig, rt  *RuntimeConf) (types.Result,    error)                
  DelNetwork    (net    *NetworkConfig, rt  *RuntimeConf) error
}

当infra容器创建后,kubelet就调用CNI接口为Infra创建网络,这个网络是由一些列的插件创建出来的,例如IPM、IPAM、Flannel。

Flannel网络模型

Flannel网络模型有三种,基于

  • Vxlan
  • host-gw
  • UDP
基于UDP
UDP

数据从node1发送到node2的时候:在主机上有一系列的规则,当容器ip的目的地址匹配的时候,只能匹配的flannel设备,数据包被转发到这个设备 -》再匹配路由表,匹配到子网-》子网名称对应的ip保存在etcd中,flannel设备查询etcd中子网对那个的ip,将数据转发到node2节点。数据发送的时候是将ip包以UDP的方式发送出去的。

基于Vxlan
Vxlan

与UDP方式不同的是docker0网桥被替换程了cni网桥,容器的IP MAC信息被VxLan保存后,通过NAT,修改为Node的IP和MAC,从Node1传递到Node2.放到flannel,删除掉外层,变回内存ip和mac。寻址到最终目的ip和地址。

基于host-gw
host-gw

host-gw就是将子网保存的对那个ip换成节Node ip,将数据直接转发出去。

小结

k8s的网络方案非常多,深入学习需要了解很多网络基础知识,是学习网络的很好的入口点。

相关文章

网友评论

      本文标题:k8s Flannel网络方案

      本文链接:https://www.haomeiwen.com/subject/ssmjxrtx.html