Kubernetes Calico node 시작 시 kube-apiserver의 svc로 통신 실패
[Issue]
- Calico node 시작 시에 kube api server의 svc와 통신 실패로 인해 시작을 못하는 상황입니다.
2023-06-21 04:03:37.230 [FATAL][29] tunnel-ip-allocator/allocateip.go 201:
failed to fetch node resource 'xxxx' error=Get "<https://10.233.0.1:443/api/v1/nodes/xxxxx>":
dial tcp 10.233.0.1:443: connect: connection refused
Calico node failed to start
Kubernetes Cluster가 Multi master로 구성되어 있는 상황이고, kube-apiserver의 Service와 Endpoint를 확인해보니 Public IP로 지정되어 있었습니다.
kube-apiserver의 --advertise-address가 퍼블릭 IP로 설정된 경우라면, Calico와 같은 내부 네트워크를 사용하는 CNI 플러그인이 kube-apiserver와 통신하지 못할 가능성이 큽니다. 특히 Calico는 Kubernetes API 서버에 접근할 때 내부 IP 주소를 선호하기 때문에, 퍼블릭 IP를 advertise-address로 지정하면 연결 문제가 발생할 수 있습니다.
[solution]
이를 해결하기 위해 다음과 같이 조치할 수 있습니다.
1. --advertise-address를 내부 IP로 변경하기
kube-apiserver의 --advertise-address를 내부 네트워크 IP로 변경하는 것이 가장 좋은 해결 방법입니다. 이를 통해 Calico와 같은 CNI 플러그인과 다른 클러스터 내부 서비스가 API 서버에 안정적으로 접근할 수 있습니다.
- /etc/kubernetes/manifests/kube-apiserver.yaml에서 -advertise-address 플래그를 찾은 후, 내부 IP 주소(예: 10.0.0.x)로 수정합니다.
- 저장 후 kube-apiserver가 자동으로 재시작되면서 새로운 설정이 적용됩니다.
sudo -i
vi /etc/kubernetes/manifests/kube-apiserver.yaml
--
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=10.27.251.30
- --allow-privileged=true
- --anonymous-auth=True
2. 노드 및 기타 컴포넌트의 설정 확인
- --advertise-address를 변경하면 클러스터의 다른 컴포넌트와 워커 노드들이 API 서버에 내부 IP로 접근하는지 확인해야 합니다. Worker 노드에서 kubelet이 올바른 IP 주소로 API 서버에 접근하고 있는지 점검해 주세요.
3. Calico 및 CoreDNS 구성 점검
- --advertise-address 변경 후, Calico가 정상적으로 API 서버와 통신하는지 확인합니다. 문제가 지속될 경우, kubectl logs -n calico-system <calico-node-pod-name> 명령으로 Calico Pod의 로그를 확인해 보세요.
- CoreDNS도 올바른 API 서버 주소를 리졸빙하고 있는지 확인하여 네트워크 서비스가 정상적으로 동작하도록 해야 합니다.
이와 같이 내부 IP로 변경하면, Calico와의 통신이 원활해질 가능성이 높아집니다.
위의 설정으로 Calico node들이 복구가 시작됩니다.
'Kubernetes' 카테고리의 다른 글
Kubernetes Calico Bird is not ready (0) | 2024.10.26 |
---|---|
Rabbit MQ Kubernetes Helm 배포 (1) | 2024.10.15 |
Kubernetes Dashboard 배포 Istio domain 설정 (0) | 2024.10.14 |
Kubernetes Session Affinity (0) | 2024.10.13 |
Kubernetes Ingress Controller (2) | 2024.10.13 |