容器技术 · 2023年9月21日 0

K8S节点Calico故障处理

前提: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)