Certified Kubernetes Administration - 42

2024-06-22

  • Kubernetes
  • Cloud

쿠버네티스 백업 및 복원 방법

  • 백업 대상

    • etcd 클러스터: 모든 클러스터 관련 정보 저장

    • 퍼시스턴트 스토리지: 애플리케이션이 설정된 경우 백업 필요

  • 리소스 구성 백업

    • 선언적 접근법: 객체 정의 파일을 만들어 kubectl apply 명령어로 실행. 이는 구성 파일을 폴더에 저장하여 재사용하거나 공유 가능.

    • 소스 코드 저장소에 저장: 팀이 유지 관리할 수 있으며, 적절한 백업 솔루션 설정 필요.

    • 명령어 접근법: kubectl을 사용하여 명령어로 객체 생성 (네임스페이스, 시크릿, 컨피그맵 등).

  • 백업 방법

    • Kube API 서버 쿼리

      • kubectl get all 명령어를 사용하여 모든 네임스페이스의 모든 리소스를 YAML 형식으로 출력하여 파일로 저장.

      • 자동화 도구 사용: Ark(현재 Velero)와 같은 도구는 Kubernetes API를 사용하여 백업 수행 가능.

    • etcd 백업

      • etcd 클러스터는 클러스터 상태에 대한 정보를 저장.

      • 데이터 디렉터리: 백업 도구로 설정된 디렉터리를 백업.

      • 스냅샷 명령어: etcdctl snapshot save 명령어로 스냅샷 생성. snapshot.db 파일로 생성됨.

      • 스냅샷 상태 확인: etcdctl snapshot status 명령어 사용.

  • etcd 복원

    • Kube API 서버 서비스 중지.

    • etcdctl snapshot restore 명령어로 스냅샷 복원. 새로운 데이터 디렉터리가 생성됨.

    • etcd 설정 파일에서 새로운 데이터 디렉터리 사용하도록 구성.

    • 서비스 데몬 재로드 후 etcd 서비스 재시작.

    • Kube API 서버 서비스 시작.

    • 인증을 위한 인증서 파일과 etcd 클러스터의 엔드포인트 및 CS 인증서, etcd 서버 인증서, 키를 지정해야 함.

  • 관리형 쿠버네티스 환경

    • 관리형 환경에서는 etcd 클러스터에 접근할 수 없을 수 있음.

    • 이 경우 Kube API 서버를 쿼리하여 백업하는 것이 더 나은 방법.

요약

  • 백업 대상

    • etcd 클러스터와 퍼시스턴트 스토리지
  • 리소스 구성 백업

    • 선언적 접근법: 객체 정의 파일을 사용

    • 소스 코드 저장소에 저장하여 팀이 유지 관리

    • 명령어 접근법: kubectl 명령어로 객체 생성

  • 백업 방법

    • Kube API 서버 쿼리: kubectl get all 명령어 사용

    • 자동화 도구: Velero 등 사용

    • etcd 백업: etcdctl snapshot save 명령어 사용

  • etcd 복원

    • Kube API 서버 서비스 중지 후 etcdctl snapshot restore 명령어 사용

    • etcd 설정 파일 수정 및 서비스 재시작

    • 인증서 파일과 클러스터 엔드포인트 지정 필요

  • 관리형 쿠버네티스 환경

    • etcd 클러스터 접근 불가 시 Kube API 서버 쿼리하여 백업

Certified ...

Certified ...