Kubernetes 1.14 전환 중 CNI 초기화 오류와 Flannel 확인
Kubernetes 1.13에서 1.14로 올리는 과정에서 CNI 초기화 오류를 확인했고, Flannel을 갱신하는 내용을 메모해 두었습니다. 당시 기록에 남은 오류의 핵심은 다음과 같습니다.
NetworkPluginNotReady
docker: network plugin is not ready: cni config uninitialized이 메시지는 컨테이너 네트워크가 준비되지 않았다는 상태를 보여 줍니다. 메시지 하나만으로 특정 Flannel 버전의 호환성 결함까지 확정할 수는 없습니다.
kubelet과 Flannel 상태 확인
네트워크를 준비하는 Flannel Pod가 실행됐는지, 이미지 다운로드나 권한·설정 오류가 있는지부터 확인합니다.
kubectl get nodes -o wide
kubectl get daemonsets -n kube-system
kubectl get pods -n kube-system -o wide
journalctl -u kubeletFlannel의 네임스페이스와 DaemonSet 이름은 설치 방식에 따라 다를 수 있습니다. 해당 Pod의 이벤트와 로그를 보고 CNI 설정 파일과 네트워크 대역도 함께 확인해야 합니다.
Flannel 매니페스트 갱신
당시에는 Flannel 매니페스트를 다시 적용하는 방법을 기록했습니다. 다만 메모의 URL은 master 브랜치를 가리키므로 현재 같은 주소를 실행하면 당시와 다른 파일을 받게 됩니다.
기존 클러스터에 적용할 때는 버전이 확인된 매니페스트를 준비하고, 기존 설정과 차이를 살펴봐야 합니다. Pod 대역과 노드 인터페이스, 이미지·권한 설정이 유지되는지도 확인합니다.
kubectl apply -f kube-flannel.yaml여기서 kube-flannel.yaml은 대상 버전에 맞춰 준비한 파일을 뜻합니다. 현재 최신 파일로 교체하면 모든 초기화 오류가 해결된다는 명령은 아닙니다.
갱신 이후의 네트워크 확인
Flannel Pod와 노드의 상태를 본 뒤 DNS와 서로 다른 노드 사이의 Pod 통신을 확인합니다. kubelet의 오류가 사라졌는지와 애플리케이션 요청이 정상인지는 각각 봐야 합니다.
이 기록은 CNI 초기화 오류를 만났을 때 네트워크 플러그인의 상태와 버전을 함께 확인했던 메모로 남깁니다. 정확한 호환성은 Kubernetes와 플러그인의 해당 버전 문서를 기준으로 확인해야 합니다.