Kubernetes 인증서 업데이트

오랫동안 쿠버네티스를 사용하지 않아, 쿠버네티스(Kubernetes) 가 사용 불능상태에 있었다. 원인은 인증서 만료 때문이었는데, 어떻게 다시 인증서를 업데이트하고 사용가능 상태로 만드는지 기록해 둔다.

증상

증상은 다음과 같다.

kube-apiserver 의 로그는 다음과 같다.

해결책

마스터 노드 복구

인증서를 갱신해주면 된다. 다음과 같이 확인과 갱신을 할 수 있다.

이걸로 끝이 아니다.

K8S 는 각종 설정 파일에 인증서를 포함시켜놨다. 그래서 이 설정 파일들도 재 생성을 해야 한다.

이제 kubectl 명령어가 사용하는 config 파일을 갱신해준다.

마스터 노드의 기존 PKI 캐시 정리 및 Kubelet 재시작해줘야 한다. 마스터 노드 내부에 남아 있는 구형 인증서 캐시를 날려주어야 새 인증서를 정상적으로 물고 살아난다.

워커 노드 복구

워커 노드도 인증서가 만료되어서 작동이 되지 않고 있다. 이를 처리하기 위해서는 Pod 를 제외한 kubelet 을 초기화 하고 worker 노드를 재가입시키는 방법을 적용 한다.

다음과 같이 워커 노드 서비스 중지 및 찌꺼기 강제 삭제 (각 워커 노드에서 실행)를 해준다.

다음으로 네트워크 및 iptables 찌꺼기 초기화를 해준다. 단, 이거는 선택사항이다. iptables 과 cni 인터페이스가 상태를 봐가면서해야 한다. 필자의 경우에는 아무것도 없어서 해줄게 없었다.

이제 마스터 노드에서 새 Join 명령어 발급해준다. 마치 처음 worker 노드를 추가하는 것과 같다. 마스터 노드에서 실행해줘야 한다.

출력되는 ‘kubeadm join ... --token ... --discovery-token-ca-cert-hash ...‘ 명령어 복사해 준다.

다음으로 워커 노드에서 클러스터 재참여(Join) 수행해준다.

혹시 대기중인 CSR 이 있는지를 확인하고 승인해 준다.

확인

다음과 같이 노드(Node)가 살아 있는지를 확인해 본다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다