반응형
쿠버네티스 클러스터 오류 발생 시 복원하는 방법에 대해 공유해보려고 합니다.
쿠버네티스 with 랜처 버젼: v.1.25.12+rker1
이슈 상황
- 개발 쿠버네티스 클러스터에 신규 서버 한대를 추가해야 하는 상황이 발생했습니다.
- 신규 서버는 워커노드로 클러스터에 추가할 예정이였습니다.
- 신규 서버의 노드 설정 실수로 워커노드가 아닌 마스터노드로 클러스터에 추가했습니다.
- 워커노드로 신규 서버에 접속하여 쿠버네티스를 삭제했습니다.
이슈 발생
- 쿠버네티스 클러스터는 지워버린 신규 서버의 노드와 통신하려고 시도
- 쿠버네티스 마스터 노드의 명령어가 동작하지 않음
클러스터 정보를 확인해 보기 위해 커맨드를 입력해 보면 kube-apiserver 가 동작하지 않는다.
쿠버네티스 클러스터에 마스터 노드를 추가한 뒤 클러스터에서 제거하지 않고 서버에서 삭제한 것이 원인인것 같다.
#> kubectl cluster-info
The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?
#> kubectl get nodes
The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?
#> kubectl get pods
The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?
이슈 해결
- 쿠버네티스 클러스터에 대한 설정값을 변경하기 위해 이리저리 찾아봐도 답이 보이지 않는다.
- 결정적으로 kubectl 이 동작하지 않는 것은 치명적이였다.
- 그러던 중 Rancher의 클러스터 백업과 복구에 대한 레퍼런스를 찾았다!
- Etcd Backup and Restore | RKE2
쿠버네티스 클러스터에 대한 복원 스크립트
#모든 서버 노드에서 RKE2 서비스 중지
systemctl stop rke2-server
# 첫번째 서버 노드에서 스냅샷 복원 시작
ke2 server \
--cluster-reset \
--cluster-reset-restore-path=<PATH-TO-SNAPSHOT>
# 복원이 완료되면 첫번째 서버 노드에서 RKE2 서비스 시작
systemctl start rke2-server
스냅샷 복원에 대한 참고사항
- 스냅샷은 기본적으로 활성화되어 있습니다.
- 스냅샷은 12시간마다 생성 되도록 되어있습니다.
- 경로는 랜처사용시: /var/lib/rancher/rke2/server/db/snapshots
- RKE2에서 스냅샷은 각 etcd 노드에 저장됩니다.
- etcd 또는 etcd + 컨트롤 플레인 노드가 여러 개 있는 경우 로컬 etcd 스냅샷의 복사본이 여러 개 있습니다.
- 스냅샷 복원 스크립트는 해당 경로에 들어가서 실행하면 됩니다.
rke2 server \
--cluster-reset \
--cluster-reset-restore-path=etcd-snapshot-xxxx
쿠버네티스 클러스터가 정상적으로 복구되었습니다. 이제 쿠버네티스 명령어가 정상적으로 동작합니다.
반응형
'Programing > Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 3편 (0) | 2023.09.27 |
---|---|
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 2편 (0) | 2023.09.13 |
쿠버네티스(Kubernetes), 랜처(Rancher, RKE2) 설치 1편 (0) | 2023.09.13 |
쿠버네티스(Kubernetes) PV / PVC / StorageClass (2) (0) | 2023.09.08 |
쿠버네티스(Kubernetes) PV / PVC / StorageClass (1) (0) | 2023.08.22 |