k8s之calico网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之calico网络相关的知识,希望对你有一定的参考价值。
参考技术A 在一个物理server上安装三个VM,VM操作系统如下:root@master:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.10
Release: 19.10
Codename: eoan
一个VM作为master,另外两个VM作为worker:
calico安装
wget https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f calico.yaml
calico客户端命令工具-calicoctl,可用来查看,修改calico配置
calico支持三种网络模式,可通过修过calico.yaml进行配置:
下面分别进行配置验证,并分析数据流向
安装完calico,默认就是ipip模式。
node之间是full mesh连接。
进入calico pod,查看运行的进程。
而且在node上会多出一个网络接口tunl0,用于封装/解封装ipip报文
通过下面yaml文件部署两个pod,验证网络连通性。
nginx.yaml
1nginx.yaml -- 复制nginx.yaml,修改name
可看到两个pod分别部署在不同的worker上。
进入一个pod,可以ping通另一个pod
以10.24.166.130 ping 10.24.104.3 为例:
所以报文达到tunl0设备时,报文格式如下,源目的ip不变,因为ipip模式,所以mac已经没了。
封装完ipip,根据外层ip再次查找host路由表,从ens3网卡发送出去
参考: https://docs.projectcalico.org/getting-started/kubernetes/installation/config-options : Switching from IP-in-IP to VXLAN
修过 calico.yaml:
重新apply calico.yaml
查看calico node上运行的进程,已经没了bird等和BGP相关的进程。
calicoctl查看node状态,也已经没有BGP相关内容
而且每个节点上多了一个网络接口:
和ipip模式verify一样,创建两个pod。
进入一个pod,可以ping通另一个pod
以10.24.166.130 ping 10.24.104.2 为例:
所以pod发出icmp request报文,可在eth0抓到。
从neigh信息可知,10.24.104.0 对应的mac地址为66:2d:bf:44:a6:8b
所以报文达到vxlan.calico设备时,报文格式如下,源目的ip不变,但是目的mac已经变为10.24.104.0对应的mac,源mac变为vxlan.calico设备的mac
在 vxlan_xmit 中调用 vxlan_find_mac 根据目的mac查找fdb信息。
从fdb信息可知,mac 66:2d:bf:44:a6:8b 对应ip 192.168.122.22。
此ip即为vxlan外层目的ip。
封装完vxlan,根据外层ip再次查找host路由表,从ens3网卡发送出去
解封装后,将报文发送给vxlan.calico网卡,可在此抓到报文
修改 calico.yaml,将 CALICO_IPV4POOL_IPIP 的value改完 Never
重新apply calico.yaml
查看 calico node status和calico node上的进程,看和ipip模式没有区别。区别在于worker上的路由表,跨节点通信不再通过tunl0。
或者通过如下方式动态更新,从IPIP到纯BGP模式
和ipip模式verify一样,创建两个pod。
进入一个pod,可以ping通另一个pod
以10.24.166.128 ping 10.24.104.1为例
引用自 https://docs.projectcalico.org/reference/faq
k8s网络之Calico网络-工作原理
参考技术A 他写的太好了,上链接: https://www.cnblogs.com/goldsunshine/p/10701242.htmlcalico有两种模式:ipip(默认)、bgp,bgp效率更高。
如果宿主机在同一个网段,可以使用ipip模式;
如果宿主机不在同一个网段,pod通过BGP的hostGW是不可能互相通讯的,此时需要使用ipip模式(如果仍想使用bgp模式,除非你在中间路由器上手动添加路由)。
以上是关于k8s之calico网络的主要内容,如果未能解决你的问题,请参考以下文章