报错calico/ノードの準備ができていません: BIRD の準備ができていません: BGP が 172.16.0.20、172.16.0.30 で確立されていません
\\calico未准备好,BGP协议不能与172.16.0.20,172.16.0.30内网IP地址连接
BGP协议:边界网关协议
k8s のダッシュボード インターフェイスにアクセスすると、Web サイトにアクセスできず、ポッドを表示できません。不明な理由により、calico のポッド リソースが再作成後に起動できず、ステータスが 0/1 と表示されます。
[root@k8s-master yaml]# kubectl get pod -n kube-system NAMESPACE NAME READY STATUS RESTARTS AGE ... kube-system calico-kube-controllers-578894d4cd-rsgqd 1/1 Running 0 115d kube-system calico-node-64s8s 1/1 Running 3 127d kube-system calico-node-j4t7q 1/1 Running 0 127d kube-system calico-node-n6vr4 0/1 Running 0 40s
Calico ポッドのエラー内容
[root@k8s-master yaml]# kubectl describe pod -n kube-system calico-node-n6vr4
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned kube-system/calico-node-n6vr4 to k8s-master
Normal Pulled 41s kubelet, k8s-master Container image "calico/cni:v3.15.1" already present on machine
Normal Created 41s kubelet, k8s-master Created container upgrade-ipam
Normal Started 40s kubelet, k8s-master Started container upgrade-ipam
Normal Pulled 40s kubelet, k8s-master Container image "calico/cni:v3.15.1" already present on machine
Normal Started 39s kubelet, k8s-master Started container install-cni
Normal Created 39s kubelet, k8s-master Created container install-cni
Normal Pulled 39s kubelet, k8s-master Container image "calico/pod2daemon-flexvol:v3.15.1" already present on machine
Normal Pulled 38s kubelet, k8s-master Container image "calico/node:v3.15.1" already present on machine
Normal Started 38s kubelet, k8s-master Started container flexvol-driver
Normal Created 38s kubelet, k8s-master Created container flexvol-driver
Normal Created 37s kubelet, k8s-master Created container calico-node
Normal Started 37s kubelet, k8s-master Started container calico-node
Warning Unhealthy 27s kubelet, k8s-master Readiness probe failed: 2020-08-14 02:16:54.068 [INFO][142] 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 172.16.0.20,172.16.0.30
Warning Unhealthy 17s kubelet, k8s-master Readiness probe failed: 2020-08-14 02:17:04.059 [INFO][181] 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 172.16.0.20,172.16.0.30
Warning Unhealthy 7s kubelet, k8s-master Readiness probe failed: 2020-08-14 02:17:14.065 [INFO][207] 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 172.16.0.20,172.16.0.30
理由: calico は実際のノードの実際のネットワーク カード名を見つけられませんでした
解決
calicao のネットワーク プラグインのネットワーク カード検出メカニズムを調整し、IP_AUTODETECTION_METHOD
対応する値を変更します。ダウンロードした公式 yaml ファイルでは、IP 識別戦略(IPDETECTMETHOD)
が構成されていません。つまり、デフォルトは ですfirst-found
。これにより、ネットワーク内の異常な IP が NodeIP として登録され、ノード間のネットワーク接続に影響を及ぼします。can-reach
またはの戦略に変更できますinterface
。正しい IP を選択するために、Ready ノードの IP への接続を試みます。
# 修改calicao的yaml文件,添加两行配置
# - name: IP_AUTODETECTION_METHOD
# value: "interface=eth1" # 根据实际网卡名称配置
[root@k8s-master yaml]# vim calico.yaml
...(3546行)
# Cluster type to identify the deployment type
- name: CLUSTER_TYPE
value: "k8s,bgp"
#新添加的配置
- name: IP_AUTODETECTION_METHOD
value: "interface=eth1"
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
# Enable IPIP
- name: CALICO_IPV4POOL_IPIP
value: "Always"
# Enable or Disable VXLAN on the default IP pool.
- name: CALICO_IPV4POOL_VXLAN
value: "Never"
#重新构建
kubectl apply -f calico.yaml
修理完了
[root@k8s-master yaml]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-578894d4cd-rsgqd 1/1 Running 0 115d
calico-node-6ktn4 1/1 Running 0 26m
calico-node-8k5z8 1/1 Running 0 26m
calico-node-g87hc 1/1 Running 0 1m
クラスタの各種リソースに再度アクセス可能