k8s-flannel
k8s网络通讯:(1)容器间通信:同一个Pod内的多个容器间的通信,lo(2)Pod通信:Pod IP <–> Pod IP(3)Pod与service通信:PodIP <–> ClusterIP(4)Service与集群外部客户端的通信;CNICNI(Container Network Interface)是CNCF 旗下的一个项目,由一组用于配置Linux 容器的网络接
k8s网络通讯:
(1)容器间通信:同一个Pod内的多个容器间的通信,lo
(2)Pod通信:Pod IP <–> Pod IP
(3)Pod与service通信:PodIP <–> ClusterIP
(4)Service与集群外部客户端的通信;
CNI
CNI(Container Network Interface)是CNCF 旗下的一个项目,由一组用于配置Linux 容器的网络接口的规范和库组成,同时还包含了一些插件
k8s的CNI:
flannel(网络地址分配,网络管理,但没有网络策略(定义Pod之间能不能访问))
calico(既支持网络地址分配,又支持网络策略,但安装复杂)
canel
kube-router(k8s自带)
…
解决方案:
1)虚拟网桥
2)多路复用 MacVLAN
3)硬件交换 SR-IOV(单根IO序列化,一个网卡可以虚拟出多个物理接口,这种性能最好
)
kubelet,/etc/cni/net.d/ 放在这个目录下即可使用网络插件
ifconfig我们会查看到flannel和cni0(只有创建了Pod之后才会出现)
flannel支持多种后端:
- VxLAN:
1)vxlan
2)Drectrouting
- host-gw: Host Gateway(主机网关,
不允许跨网段
)
如果在同一网络会用host-gw,不在同一网络会自动选择VxLAN - UDP效果最差
flannel的配置参数
Network: flannel使用的CIDR格式的网络地址,用于Pod配置网络功能;
10.244.0.0/16->master:10.244.0.0/24;node01:10.244.1.0/24…node255:10.244.255.0/24
10.0.0.0/8->master:10.0.0.0/24;node01:10.0.1.0/24…node65536:10.2255.255.0/24
SubnetLen:把Network切分子网供各节点使用时,使用多长的亚麻进行切分,默认为24位
SubnetMin:10.244.10.0//24(使用最小IP段是10)
SubnetMax:10.244.100.0//24(使用最大IP段是100)
Backend:vxlan,host-gw,udp
vxlan:vxlan,drectrouting
添加flannel的directroute为true
kubectl edit cm -n kube-system kube-flannel-cfg
"Directrouting": true
查看是否生效ip route show
发现没有生效
需要重启主机才会起作用:
使用抓包工具:tcpdump
tcpdump -i en0 -nn icmp
更多推荐
所有评论(0)