k8s集群在扩容的是某个节点出现 Error querying BIRD: unable to connect to BIRDv4 socket

发布时间 2023-09-11 09:57:52作者: xiaohaoge

k8s集群在扩容的是某个节点出现 Error querying BIRD: unable to connect to BIRDv4 socket

1、问题背景:

原因是因为新扩容的机器在扩容之前安装过docker切和当前的版本相差较大:

在k8s扩容的时候扩容完发现calico异常,describe查看事件后发现报错如下:

发现 Kubernetes 容器集群中有一个节点出现 calico-node异常的情况,查看该 Pod 的描述信息:

Readiness probe failed: calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket: dial unix /var/run/calico/bird.ctl: connect: connection refused

提示 calico/node 连接 BIRDv4 socket 被拒绝。

原因是因为在扩容之前没有把扩容机器的docker网卡做清理,导致docker和calico无法建立连接

于是尝试把之前docker环境都清理了

这里不做赘述,因安装 方式不一样,这里以后环境二进制安装为例去卸载docker:

卸载docker

 # 1.停止所有容器
 docker stop $(docker ps -a -q)
 ​
 # 2.停止docker服务
 systemctl stop docker
 ​
 # 3.删除docker配置文件目录
 rm -rf /etc/docker
 ​
 # 4.删除docker service文件目录
 rm -rf /etc/systemd/system/docker.service
 ​
 # 5.删除docker部署目录
 # 如果配置文件中指定了docker-root配置项,则删除该配置项对应的目录
 rm -rf /home/docker_data
 ​
 # 如果配置项中未指定docker-root配置项,则docker会被部署到/var/lib/docker目录下
 rm -rf /var/lib/docker
 ​
 # 6.删除docker可执行文件
 cd /usr/bin
 rm -rf containerd containerd-shim ctr docker dockerd docker-init docker-proxy runc
 ​
 # 7.删除docker0网桥
 ifconfig docker0 down
 brctl delbr docker0
 ​
 8.删除docker其他文件
 # 这里默认网络命令空间需要先卸载再删除,否则会提示:
 # device or resource busy
 umount /var/run/docker/netns/default
 rm -rf /var/run/docker

当上面步骤清理完成后记得把报错节点的calico的节点也需要清理下面的目录

删除/etc/cni/net.d/ 目录下是否存在相关文件 已经calico的网卡tunl0

 ifconfig down tunl0 && ip link delete tunl0

/tmp目录下的文件都清理掉

 cd /tmp && mkdir  bak && mv * bak

在重启当前的服务器

 reboot

重启后检查机器用ifconfig命令查看是否还有docker和之前扩容后留下的calico残留

接下来就是扩容了