본문 바로가기
Programing/Kubernetes

쿠버네티스(Kubernetes) 클러스터 복구

by 슈퍼와이비 2023. 9. 12.
반응형

쿠버네티스 클러스터 오류 발생 시 복원하는 방법에 대해 공유해보려고 합니다.

 

쿠버네티스 with 랜처 버젼: v.1.25.12+rker1

 

이슈 상황

  1. 개발 쿠버네티스 클러스터에 신규 서버 한대를 추가해야 하는 상황이 발생했습니다.
  2. 신규 서버는 워커노드로 클러스터에 추가할 예정이였습니다.
  3. 신규 서버의 노드 설정 실수로 워커노드가 아닌 마스터노드로 클러스터에 추가했습니다.
  4. 워커노드로 신규 서버에 접속하여 쿠버네티스를 삭제했습니다.

 

이슈 발생

  1. 쿠버네티스 클러스터는 지워버린 신규 서버의 노드와 통신하려고 시도
  2. 쿠버네티스 마스터 노드의 명령어가 동작하지 않음

클러스터 정보를 확인해 보기 위해 커맨드를 입력해 보면 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?

 

이슈 해결

  1. 쿠버네티스 클러스터에 대한 설정값을 변경하기 위해 이리저리 찾아봐도 답이 보이지 않는다.
  2. 결정적으로 kubectl 이 동작하지 않는 것은 치명적이였다.
  3. 그러던 중 Rancher의 클러스터 백업과 복구에 대한 레퍼런스를 찾았다!
  4. Etcd Backup and Restore | RKE2
 

Etcd Backup and Restore | RKE2

In this section, you'll learn how to create backups of the rke2 cluster data and to restore the cluster from backup.

docs.rke2.io

 

 

쿠버네티스 클러스터에 대한 복원 스크립트
#모든 서버 노드에서 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

 

쿠버네티스 클러스터가 정상적으로 복구되었습니다. 이제 쿠버네티스 명령어가 정상적으로 동작합니다.

반응형