这篇文章主要介绍了k8s集群网络是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
k8s集群网络。对于网络基本涉及两个方面,一是到各个服务的网络间负载均衡,另一个是网络间的通讯。
对于k8s来说网络间的负载均衡是由infrastructure实现的,即对于部署在集群中的各个pod是透明无感知的。基本的实现有2种方式,iptable方式和ipvs方式。
对于iptable方式是k8s默认的网络负载均衡模式,顾名思义就是利用linux iptable中的nat实现负载均衡。对于ipvs方式是在1.11版本中引入的,利用linux ipvs内核模块来实现负载均衡(大名鼎鼎的LVS同样也是利用ipvs来实现的负载均衡)。我们以前文章里并没有刻意配置k8s负载均衡策略,所以是默认的iptable方式。如果希望以ipvs方式运行,那么需要在kube-proxy网络组件的启动参数中加入–proxy-mode=ipvs。
对于容器之间的网络通讯总结起来基本分为两种,underlay方式和overlay方式。underlay方式在通讯过程中没有额外的封包,通常将容器的宿主作为路由来实现数据包的转发,需要宿主开启网络转发功能(net.ipv4.ip_forward = 1)。常见的实现方案有flannel host-gw方式,calico bgp方式。
overlay方式在通讯过程中有额外的封包,例如flannel vxlan方式(在三层网络里构建二层网络,即在udp包里封装eth以太包),calico ipip模式(在ip包里再次封装ip包)。还有flannel udp方式,在upd包里封装ip包(当然这种方式使用tun device,每次通讯都涉及到用户态到内核态的切换,所以效率不高,基本是不会被用的。不过作为学习入手是可以的)。
所以总结一下,对于k8s网络基本会包括以下方面
-
网络负载均衡
iptable方式(默认负载均衡策略)
ipvs方式(v1.11以及以后版本)
-
网络间通讯
underlay网络:flannel host-gw,calico bgp等方式
overlay网络:flannel vxlan,calico ipip,flannel udp等方式