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

Posted 云烟旧梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一次KubeSphere集群Calico组件报错相关的知识,希望对你有一定的参考价值。

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

记录一次KubeSphere集群Calico组件报错_配置文件

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

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

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

记录一次KubeSphere集群Calico组件报错_配置文件_03

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

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

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组件报错_ico_05

恢复正常。


这里也可以使用通配符:

[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组件报错_环境变量_06

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

记录一次KubeSphere集群Calico组件报错_环境变量_07

            - 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组件报错_配置文件_08

解决!


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

记录一次KubeSphere集群Calico组件报错_环境变量_09


以上是关于记录一次KubeSphere集群Calico组件报错的主要内容,如果未能解决你的问题,请参考以下文章

基于containerd搭建的K8S集群calico与coredns组件一直处于pending状态

(九)从零开始搭建k8s集群——使用KubeSphere管理平台搭建流控组件sentinel服务端

解决k8s核心组件calico pod资源不创建问题

etcd+calico集群的部署

从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的分布式事务服务组件Seata

(六)从零开始搭建k8s集群——使用KubeSphere管理平台创建Mysql数据库容器服务