安装calico网络插件后K8s集群节点间通信找不到主机路由(no route to host)
安装calico网络插件后K8s集群节点间通信找不到主机路由(no route to host)背景:k8s安装calico网络插件后master节点ping不通其它node节点,但可以ping通外网,同时calico有一个pod启动异常,日志报错信息calico/node is not ready: BIRD is not ready: BGP not established with 192.
安装calico网络插件后K8s集群节点间通信找不到主机路由(no route to host)
背景:k8s安装calico网络插件后master节点ping不通其它node节点,但可以ping通外网,同时calico有一个pod启动异常,日志报错信息calico/node is not ready: BIRD is not ready: BGP not established with 192.168.8.xxx,192.168.8.xxx
[root@master1 ~]# ping 192.168.8.131
connect: No route to host
[root@master1 ~]# ping 192.168.8.132
connect: No route to host
节点一会处于Ready状态,一会处于NotReady状态
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 22d v1.23.4
node1 NotReady <none> 22d v1.23.4
node2 NotReady <none> 22d v1.23.4
最后排查到的原因
Pod CIDR
与节点IP冲突,Calico的Pod CIDR
即--pod-network-cidr
默认使用的是192.168.0.0/16
,而当集群节点的IP段也为192.168.0.0/16
时,必然导致IP段冲突
当Pod子网和主机网络出现冲突的情况下就会出现问题。节点与节点,Pod与Pod之间通信会因为路由问题被中断。仔细检查网络设置,确保Pod CIDR
、VLAN
或VPC
之间不会有重叠。如果有冲突的,我们可以在CNI插件或kubelet的pod-cidr
参数中指定 IP 地址范围,避免冲突。
解决方案
重新配置Calico的Pod CIDR
vim calico.yaml
..............
- name: CALICO_IPV4POOL_CIDR
#value: "192.168.0.0/16"
value: "172.16.0.0/16"
..............
kubectl delete -f calico.yaml
kubectl apply -f calico.yaml
到此,calico所有pod成功启动,节点间可以相互ping通,问题解决
更多推荐
所有评论(0)