记录一次KubeSphere集群Calico组件报错

我在使用kubesphere登录的时候,发现登录不上去,kubesphere报API错误,大量api相关组件down掉。

记录一次KubeSphere集群Calico组件报错

发现登陆的时候报如下错误:

记录一次KubeSphere集群Calico组件报错

根据经验,怀疑是calico网络组件的问题,查看发现:

记录一次KubeSphere集群Calico组件报错

Calico状态是0/1,describe查看一下详细信息,发现如下错误:

记录一次KubeSphere集群Calico组件报错

Warning  Unhealthy  8s  kubelet  Readiness probe failed: 2022-06-25 08:09:08.567 [INFO][251] confd/health.go 180: Number of node(s) with BGP peering established = 0

calico/node is not ready: BIRD is not ready: BGP not established with 192.168.1.50,192.168.1.51

原因分析:

原因是节点网卡比较多,calico选择了错误的网卡,所以我们指定一下网卡即可。

解决手段:

指定他要去的目的网卡即可解决。

方法一:

[root@k8s-master01 ~]# kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=ens192

daemonset.apps/calico-node env updated

记录一次KubeSphere集群Calico组件报错

恢复正常。

这里也可以使用通配符:

[root@k8s-master01 ~]# kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=ens*

daemonset.apps/calico-node env updated

方法二:

修改calico.yaml配置文件,apply加载生效。

起不来的组件名称是calico-node,找到calico.yaml指定配置位置,添加相应配置生效。

找到对应yaml位置:

记录一次KubeSphere集群Calico组件报错

在主容器下添加如下环境变量,这里也可以使用通配符。

记录一次KubeSphere集群Calico组件报错

            - name: IP_AUTODETECTION_METHOD

              value: "interface=ens192"

[root@k8s-master01 ~]# kubectl apply -f calico.yaml

[root@k8s-master01 ~]# kubectl get pods -n kube-system

记录一次KubeSphere集群Calico组件报错

解决!

等待2分钟左右,kubesphere组件恢复。Kubesphere业务正常:

记录一次KubeSphere集群Calico组件报错

发表评论

相关文章