06 K8S 一次排错calico网络-Readiness probe failed: caliconode is not ready: BIRD is not ready

K8S 一次排错calico网络

现象

[root@k8s-master1 k8s]# kubectl get pods -o wide -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE    IP               NODE          NOMINATED NODE   READINESS GATES
calico-kube-controllers-78d6f96c7b-4gfls   1/1     Running   0          104s   10.244.159.129   k8s-master1   <none>           <none>
calico-node-gdcv2                          0/1     Running   0          105s   192.168.1.12     k8s-node2     <none>           <none>
calico-node-sh7cg                          0/1     Running   0          105s   192.168.1.11     k8s-master1   <none>           <none>

  • 发现calic网络节点总是不是ready状态

排查分析

  • 日志查看
    • 注意查看日志需要带上命名空间
kubectl describe pod calico-node-6v4k8 -n kube-system

Readiness probe failed: caliconode is not ready: BIRD is not ready
  • 发现是BIRD错误
  • 原因
调整calicao网络插件的网卡发现机制,修改IP_AUTODETECTION_METHOD对应的value值。官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-node
mesh。我们可以修改成can-reach或者interface的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP

解决问题

  • calico.yaml 文件添加以下二行
   - name: IP_AUTODETECTION_METHOD
      value: "interface=ens.*"  # ens 根据实际网卡开头配置,支持正则表达式
  • 位置
            - name: CLUSTER_TYPE
              value: "k8s,bgp"
            - name: IP_AUTODETECTION_METHOD
              value: "interface=ens.*"
            # Auto-detect the BGP IP address.
            - name: IP
              value: "autodetect"
            # Enable IPIP
            - name: CALICO_IPV4POOL_IPIP
              value: "Always"

  • kubectl delete -f calico.yaml
  • kubectl apply -f calico.yaml

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值