博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
k8s集群使用calico遇到的问题,报错内容如:“Readiness probe failed: caliconode is not ready: BIRD is not ready:
阅读量:3948 次
发布时间:2019-05-24

本文共 3723 字,大约阅读时间需要 12 分钟。

k8s集群使用calico遇到的问题,报错内容如:“Readiness probe failed: caliconode is not ready: BIRD is not ready: BGP not established with”

原因:在calico.yaml文件中,IP_AUTODETECTION_METHOD 配置项默认为first-found,这种模式中calico会使用第一获取到的有效网卡,虽然会排除docker网络,localhost啥的,但是在复杂网络环境下还是有出错的可能。在这次异常中p40主机上的calico选择了一个vbr网卡。

提供两种解决方案,第一种机器重启后依然生效,解决方案是修改calico.yaml中 IP_AUTODETECTION_METHOD 的默认值,第二种机器重启后需要重新配置,解决方案是使用calicoctl命令。

第一种方案:

一、修改 calico.yaml 文件

调整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"

二、重新应用calico.yaml

kubectl apply -f calico.yaml

查看

kubectl get pod --all-namespaces

第二种方案:

一、下载和安装calicoctl工具,注意calico版本与calicoctl版本要相同

cd /usr/local/bincurl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.11.3/calicoctlchmod +x calicoctl

二、编辑配置文件/etc/calico/calicoctl.cfg

mkdir /etc/calico

因为我们使用的是内部etcd集群,所以需要对calicoctl进行配置,使其能读取calico配置信息。

cat > /etc/calico/calicoctl.cfg << EOFapiVersion: projectcalico.org/v3kind: CalicoAPIConfigmetadata:spec:  datastoreType: "kubernetes"  kubeconfig: "/root/.kube/config"EOF

如果你使用的是外部etcd集群,这里提供个模版可参考:

apiVersion: projectcalico.org/v3kind: CalicoAPIConfigmetadata:spec:  datastoreType: "etcd"  etcdEndpoints: "https://192.168.246.193:2379,https://192.168.246.194:2379,https://192.168.246.195:2379"  etcdKeyFile: "/etc/kubernetes/pki/etcd/etcd-key.pem"  etcdCertFile: "/etc/kubernetes/pki/etcd/etcd.pem"  etcdCACertFile: "/etc/kubernetes/pki/etcd/ca.pem"

三、calicoctl常用命令

(1)查看网络节点

calicoctl get node
NAME     node-1   node-2   p40

(2)节点网络状态

calicoctl node status
Calico process is running.IPv4 BGP status+-----------------+-------------------+-------+----------+-------------+|  PEER ADDRESS   |     PEER TYPE     | STATE |  SINCE   |    INFO     |+-----------------+-------------------+-------+----------+-------------+| 10.95.10.92 | node-to-node mesh | up    | 05:08:38 | Established || 10.95.10.20 | node-to-node mesh | start | 05:08:38 | Passive |+-----------------+-------------------+-------+----------+-------------+IPv6 BGP statusNo IPv6 peers found.

状态“up”为正常,状态为“start”为还在启动状态,未就绪

四、使用calicoctl工具来对calico进行更改

(1)查看问题节点的yaml文件

calicoctl get node p40 -o yaml
apiVersion: projectcalico.org/v3kind: Nodemetadata:  annotations:    projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"p40","kubernetes.io/os":"linux","node-role.kubernetes.io/master":""}'  creationTimestamp: 2020-09-04T03:02:35Z  labels:    beta.kubernetes.io/arch: amd64    beta.kubernetes.io/os: linux    kubernetes.io/arch: amd64    kubernetes.io/hostname: p40    kubernetes.io/os: linux    node-role.kubernetes.io/master: ""  name: p40  resourceVersion: "948517"  uid: 68bb3f69-6726-4c52-b9a2-7f1f21ab86caspec:  bgp:    ipv4Address: 192.168.1.254/24  #很明显,calico网络绑定了错误的IP地址,正确的IP地址应该是:10.95.10.20    ipv4IPIPTunnelAddr: 10.244.185.0

(2)将ip更改正确

calicoctl get node p40 -o yaml > calico_p40.yaml
vim calico_p40.yaml......spec:  bgp:    ipv4Address: 10.95.10.20/24    ipv4IPIPTunnelAddr: 10.244.185.0

重新启动

calicoctl apply -f calico_p40.yamlkubectl get pod -n kube-system

可以看到calico-node的节点都正常启动

以上步骤完美解决,感谢

转载地址:http://bxhwi.baihongyu.com/

你可能感兴趣的文章
GPS数据解析
查看>>
The top 6 programming languages for IoT projects
查看>>
67 open source tools and resources for IoT
查看>>
蓝牙低功耗(BLE)应用领域
查看>>
nRF51822低功耗睡眠函数应用
查看>>
Android 语言码_国家码
查看>>
从iphone和android应用来看公司
查看>>
android 修改代码怎样编译
查看>>
领导者如何增强说服力
查看>>
比金钱更好的十样东西
查看>>
凡事必定不少于三个以上的解决方法
查看>>
带团队的点滴心经
查看>>
五种力量让你如虎添翼
查看>>
你害怕创新吗
查看>>
创新服务的七要素
查看>>
虚伪的奉承也有效
查看>>
蒂姆·库克的五项核心领导力
查看>>
你为何没有成为领导者
查看>>
一切悲剧都源于不当激励
查看>>
别把用户的高期望混同于好体验
查看>>