Kubernetes(쿠버네티스) 내부 인증서 교체하기
(unable to connect to the server: x509: certificate has expired or is not yet valid:)
에러 내용 :
unable to connect to the server: x509: certificate has expired or is not yet valid: current time...
어..? 이건 또 뭔....
어플리케이션에서 사용하는 SSL 인증서만 교체해주면 되는지 알았더니
쿠버네티스가 사용하는 인증서가 별도로 있었고...
그 인증서가 만료가 된 것이다.
잠깐 혹시.. 서비스에 영향이 있을까?
접속해보니 서비스는 잘 된다.
다만 kubectl 명령어가 안되더이다. 그러니 배포도 안되지
다행히 운영 K8s에는 아직 만료되지 않았고, 개발 K8s에 먼저 교체 후 운영에도 빠른 조치를 진행했다.
1. 인증서 기간 확인
기존 인증서 기간 확인 해보자
명령어:
kubeadm certs check-expiration
- 2023년 07월 07일 만료 예정이다.
2. 기존 인증서 백업
혹시 잘못될 경우 롤백 해야한다 백업은 생활화 하자
/etc/kubernetes 경로에 쿠버네티스 설정파일과 인증서들이 존재한다.
명령어:
cp -pr /etc/kubernetes/ /etc/kubernetes_backup
3. 인증서 갱신
명령어로 간단히 갱신이 가능하다.
명령어:
kubeadm certs renew all
- 맨 아랫줄에 인증서가 갱신되었으니, 변경된 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler, etcd 서비스를 반드시 재기동 하라한다.
4. config 파일 변경
/etc/kubernetes 폴더에서 ll (또는 ls -l) 명령어로 확인하면 admin.conf 파일이 수정된 것이 보인다.
- 날짜가 바뀌어 있다. 파일을 열어보면 인증서의 값들이 들어가있는 파일이다.
이 인증서를 $HOME/.kube 경로에 존재하는 config 파일에 덮어씌워야 한다.
왜?
실제 admin.conf 파일과 config 파일을 열어보면 양식이 일치한다.
기본적으로 kubectl 명령어를 사용하면 $HOME/.kube 경로에 존재하는 config 파일을 먼저 찾게된다.
그래서 config 파일을 교체해줘야 하더이다.
명령어:
\cp /etc/kubernetes/admin.conf /root/.kube/config
- 맨 앞에 '\' 특수문자 오타 아닙니다. (없으면 덮어씌울때 y버튼 한번 더 눌러야함)
5. 서비스 재기동 (인증서 적용)
kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, daemon 재기동 및 설정 적용해보자.
명령어:
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
- 모두 입력하고 나면 kubectl 명령어가 정상동작 한다.
- 2024년 6월 11일로 바뀌었다.
앞으로 만료되기 전에 교체해주자 😂
Kubernetes(쿠버네티스) metric-server(kubectl top) 모니터링 설치하기 (0) | 2023.07.07 |
---|