前提:calico版本是v3.22.1
Calico 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
或者是以下报错:

网上大部分的解决方式都是添加网卡识别,但是对我的这次故障没有效果,因为在部署集群的时候,我已经加过网卡识别的配置了。
# 识别网卡
- name: IP_AUTODETECTION_METHOD
value: "interface=eth.*"

在解决的过程中,我尝试过以下方式,仍然没有解决问题:
1、删除calico,重装,kubectl delete -f calico.yaml;kubectl apply -f calico.yaml;
2、重置节点,kubeadm reset;
3、重启机器,reboot;
4、删除节点,并重新加入,Master执行kubectl delete node node1; kubeadm token create –print-join-command,worker节点执行kubeadm join命令;
最后,我尝试删除calico,安装最新版本,问题才解决了,但还是不知道原因。
# 备份旧文件
mv calico.yaml calico.old.yaml
# 下载最新版本calico,v3.26.1
wget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificate
# 编辑calico.yaml,把识别网卡的配置加上
vim calico.yaml
# 删除现有calico.yaml
kubectl delete -f calico.old.yaml
# 安装最新版本calico
kubectl apply -f calico.yaml
# 查看pod状态
kubectl get pod -n kube-system -o wide |grep calico
# 注意,可能会因为网络环境问题,遇到镜像pull不下来。需要自己另想办法(VPN)