티스토리 뷰
1. 리소스 구성 백업
1) 데이터 저장소
- 쿠버네티스의 모든 구성정보는 etcd에 저장
- 애플리케이션이 영구 스토리지를 사용하고 있다면, 이 또한 백업 대상이 됩니다.
2) 구성 파일 관리
- 선언적 접근 방식: YAML 파일을 사용하여 리소스를 정의하고 kubectl apply 명령어로 적용. 이 방식은 구성 파일을 소스 코드 저장소에 저장하여 팀이 관리
- 명령적 접근 방식: kubectl create 명령어를 사용하여 직접 리소스를 생성. 이 경우, 별도의 기록이 없으면 추적이 어려울 수 있음
3) Kube API 서버 쿼리
- kubectl get all -all-namespaces -o yaml >all-deploy-services.yaml 명령어를 사용하여 모든 네임스페이스의 리소스를 YAML 형식으로 백업 가능
- Velero와 같은 도구를 사용하여 자동화된 백업 솔루션을 구현가능
2. etcd 백업
1) etcd 데이터베이스
- etcd는 클러스터의 상태정보를 저장하는 핵심 구성요소
- etcd의 데이터를 직접 백업하면 클러스터 전체의 상태를 보존
2) 스냅샷 생성
- etcdctl snapshot save snapshot.db 명령어를 사용하여 etcd 데이터베이스의 스냅샷을 생성
- 스냅샷 파일을 지정한 경로에 저장
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt --cert=/etc/etcd/etcd.crt --key=/etc/etcd/etcd.key \
snapshot save /desired/path/snapshot.db
- etcd endpoint에 필요한 인증서, 키, ca 인증서를 옵션으로 설정한뒤 스냅샷을 생성하며, 자신이 원하는 경로에 지정을 해서 snapshot을 저장한다.
- 스냅샷 상태 확인 을 위해서는 아래와 같은 명령어를 사용한다.
ETCDCTL_API=3 etcdctl snapshot status /desired/path/snapshot.db
3) 복구 절차:
- 복구를 위해 kube api 서버 서비스를 중지한 후 , etcdctl snapshot restore snapshot.db 명령어로 스냅샷을 복원
- 복원시 새로운 데이터 디렉토리가 생성되며 etcd 설정 파일에서 이 디렉토리를 사용하도록 변경해야함
- etcd 복구 시작전에 kubeAPI 서버를 중지해야함. (API 서버가 etcd에 의존하기 때문이다.)
sudo systemctl stop kube-apiserver
- etcd 스냅샷 복원을 위해서 아래와 같이 구체적인 명령어도 사용가능
ETCDCTL_API=3 etcdctl snapshot restore /path/to/snapshot.db \
--data-dir /var/lib/etcd-from-backup \
--initial-cluster master-1=https://192.168.5.11:2380,master-2=https://192.168.5.12:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-advertise-peer-urls https://${INTERNAL_IP}:2380
- --data-dir를 통해 복원된 데이터를 지정할 디렉토리를 설정할 수 있다.
- 또한 etcd 클러스터도 구성할 수 있따.
- etcd 서비스를 재시작하고 Kube API 서버 서비스를 다시 시작하여 클러스터를 원 상태로 복원
sudo systemctl daemon-reload
sudo systemctl restart etcd
sudo systemctl start kube-apiserver
4) 인증 및 보안
- etcd 명령어를 사용할 때는 인증서 파일과 클러스터 엔드포인트를 지정
5) 비교 및 고려사항
- 리소스 구성백업은 개별 리소스의 구성을 보존하는 데 유용하며, 특히 관리형 쿠버네티스 환경에서는 etcd에 접근할 수 없는 경우에 적합
- etcd 백업은 전체 클러스터 상태를 보존하는데 적합하지만, etcd에 대한 직접적인 접근 권한이 필요
'쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 7. 보안 (2)사용자 등록 및 승인, kubeconfig (0) | 2024.12.13 |
---|---|
[쿠버네티스] 7. 보안 (1)PKI (0) | 2024.12.13 |
[쿠버네티스] 6. Cluseter Maintanence 2) 쿠버네티스 Release, Version (0) | 2024.12.13 |
[쿠버네티스] 6. Cluster Maintanence 1) Cordon, Uncordon, Drain (0) | 2024.12.12 |
[쿠버네티스] 5. Application Management 5) InitContainers (0) | 2024.12.12 |