kubelet, Readiness probe failed: calico/node is not ready:
BIRD is not ready: BGP not established with 192.168.**,192.168.**2022-12-28 07:31:11.283
[INFO][151] health.go 156: Number of node(s) with BGP peering established = 0
kubelet, Readiness probe failed: calico/node is not ready:
BIRD is not ready: BGP not established with 192.168.**,192.**.182022-12-28 07:31:21.284
[INFO][202] health.go 156: Number of node(s) with BGP peering established = 0
calico-node
가 nic
가 두 개일 때 어떤 인터페이스를 찾아가야 할 지 몰라서 생기는 에러
제 환경 같은 경우에서는 ens192
인터페이스의 ip로 지정되어야 하는데
10번대 ip를 가진 cni0
인터페이스로 calico-node
가 선택을 해 192번대 ip와 BGP가 불가능하였다.
[root@master1 1.yaml]# nmcli con
NAME UUID TYPE DEVICE
ens192 46c5f189-5de9-49d0-8bc2-ddd25e8fc7cd ethernet ens192
cni0 f82006c2-fce2-4b44-a057-cb68a9c35c4f bridge cni0
calico version
이 3.13.*
버전이라 cidr
을 통한 ~ 는 불가능하여 cni 인터페이스를 참조하지 않도록 calico-node
의 daemonset env
를 수정하여서 해결하였습니다.
kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=skip-interface=cni*
아래의 Including matching interfaces와 같이 인터페이스명을 직접 지정하는 방법도 가능하지만
[root@test2 ~]# nmcli con
NAME UUID TYPE DEVICE
ens6f1 f1bad97f-8e01-45f8-9213-d9e8293b2a7b ethernet ens6f1
eno1 8ff64e8e-874a-4311-8ac5-452e6e06517d ethernet --
eno2 ddf1bafa-43b0-4083-a9c0-4a0841af85fb ethernet --
ens6f0 7a59569d-c290-4a71-a623-a3f52148f907 ethernet --
한 노드에서 master1와 인터페이스 이름이 다르고 ens로 시작하는 인터페이스가 두 개라 *과 같은 정규식으로 인터페이스를 특정지을 수 없어 cni 인터페이스를 참조하지 않는 방식으로 해결
아래 명령어는 calico-node가 eth.*
형식의 인터페이스를 참조하도록 합니다.
kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=skip-interface=eth.*
kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=cidr=192.168.200.0/24,172.15.0.0/24
참고문서
[projectcalico.docs.tigera.io/networking/ip-autodetection]