쿠버네티스 인증서 갱신

kubeadm으로 만든 클러스터의 인증서는 기본적으로 1년마다 만료됩니다. 갱신하지 않고 방치하면 어느 날 갑자기 kubectl 이 먹통이 되고 클러스터를 못 쓰게 되니, 주기적으로 확인하고 갱신해야 해요.

만료일 확인

kubeadm certs check-expiration

각 인증서의 남은 기간을 보여줍니다. 만료가 다가오면 갱신을 준비합니다.

갱신 전 백업 (중요)

갱신은 대체로 안전하지만, 문제가 생겼을 때 되돌릴 수 있도록 설정 파일과 인증서를 통째로 백업해둡니다. 마스터와 워커는 인증서가 다르므로 각각 백업하세요.

cp -r /etc/kubernetes/ /etc/kubernetes-backup

갱신 진행

kubeadm certs renew all

갱신 후 새 인증서를 kubeconfig에 반영하고, 관련 컨트롤 플레인 컴포넌트에 재로딩 신호를 보냅니다.

cp /etc/kubernetes/admin.conf $HOME/.kube/config

kill -s SIGHUP $(pidof kube-apiserver)
kill -s SIGHUP $(pidof kube-controller-manager)
kill -s SIGHUP $(pidof kube-scheduler)

systemctl restart kubelet
systemctl daemon-reload

다시 kubeadm certs check-expiration 을 실행해 만료일이 갱신됐는지 확인하면 끝입니다.

참고: 인증서 갱신 중 만나는 오류

갱신 도중 이런 메시지를 볼 수 있습니다.

use of closed network connection

이건 실행 중이던 apiserver·controller-manager 등이 아직 예전 인증서를 들고 있어서 생기는 현상이에요. 위처럼 systemctl restart kubelet 을 포함한 재로딩을 마치면 정리됩니다.

인증서 갱신은 “잊고 있다가 사고 나는” 대표적인 항목이라, 캘린더에 만료 알림을 걸어두거나 정기 점검 항목에 넣어두는 걸 추천합니다.