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残留
接下来就是扩容了