-
[kubernetes] 인증서 갱신 쉽게 하는 방법Web 2022. 2. 11. 10:38
쿠버네티스 인증서는 유효기간이 1년이라 매년 갱신을 해줘야 한다.
그래서 갱신방법을 정리 한다.
kubernetes ver 1.28.7은 최신화 하여 아래 링크에 정리함
kubernetes ver 1.22.3
master서버에서 진행을 하는데 다중 master 구성이면 모든 컨트롤 플레인 노드에서 실행해야 한다.
1. 인증서 일자 확인
$ kubeadm certs check-expiration
2. 혹시모를 사태에 대비하여 인증서 백업
$ cp -r /etc/kubernetes ~/backups
3. 인증서 갱신
$ kubeadm certs renew all
5. kube-apiserver, kube-controller-manager, kube-scheduler재시작
이 순서는 static pod는 API 서버가 아닌 로컬 kubelet에서 관리되므로 kubectl을 사용하여 삭제 및 재시작 할 수 없기때문에 하는 것이다.
공식홈 방법대로 하면 /etc/kubernetes/manifests/에서 yml파일들을 일시적으로 다른곳에 복사해놓고 1~2분정도 기다리면된다. ( 공홈에선 20초라 하지만 반영 시간이 조금 더 걸리더라 )
파드가 manifest 디렉터리에 없는 경우에 kubelet는 파드를 종료하기 때문이다.
이때 kubectl명령어 사용시 Unable to connect to the server: EOF 에러 가 난다. 이건 yml파일들이 없어서 나는 에러이니 yml파일들을 다시 /etc/kubernetes/manifests/에 넣고 기다리면 kubectl명령어가 잘 먹는다.
하지만 위처럼 하기엔 귀찮을 수 있다. 그래서 아래 명령어로 대체해도 된다.
$ 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 $ systemctl restart docker ( docker 재시작 이후엔 중지된 컨테이너들을 실행해줘야한다.)
6. apiserver, controller-manager, scheduler 가 재실행되었는지 AGE 확인
$ kubectl get pods --all-namespaces -o wide
7. 인증서 복사
$ cp /etc/kubernetes/admin.conf /root/.kube/config
8. node 조회
$ kubectl get nodes $ kubeadm certs check-expiration # 일자확인
정상적으로 출력되면 끝!
* jenkins에서도 k8s의 config를 사용하는 곳이 있다면 config 파일 업데이트도 해줘야한다.
* docker 재시작 이후엔 중지된 컨테이너들을 실행해줘야한다. ( 아예 컨테이너 자동 재시작 설정하는 방법도 있음 )
반응형'Web' 카테고리의 다른 글
[k8s] 외부ip 변경시 바꿔야 할것 (0) 2022.01.12 [Maven] package install차이점 (0) 2021.11.29 [css] css 모음 (0) 2020.12.07 [vscode] 저장시 자동정렬 설정, prettier플러그인 (5) 2020.07.11 [프로젝트 환경설정] (0) 2019.08.09