1. 백업 대상
1-1. 리소스 설정 파일
yml 파일을 github과 같은 리파지터리를 이용한다면 별도 백업을 걱정할 필요없고 장애 시에 설정 파일을 이용해 복구가 가능하다. 그러나 명령어를 통한 선언적 방식으로 객체들을 생성했다면 yml 파일이 남아있지 않을 것이다. 이 때는 kube-apiserver에 질의하여 현재 설정된 모든 값들을 파일로 생성할 수 있다. 이런 질의와 설정파일 백업을 해주는 상용툴(VELERO 등)도 있다.
kubectl get all —all-namespaces -o yaml > all-deploy-services.yaml
1-2. ETCD 클러스터
다른 방법으로는 현재 상태값에 대한 데이터가 저장되어 있는 ETCD 클러스터 자체를 백업하는 방법이 있다. etcd 클러스터가 데이터를 저장하는 경로(/var/lib/etcd)를 사용 중인 백업 솔루션으로 받으면 된다.
etcd 클러스터에서 자체 스냅샷 백업을 지원하기도 하는데 명령어는 아래와 같다.
#스냅샷 찍기
etcdctl snapshot save snapshot.db
#스냅샷 파일 정보 조회
etcdctl snapshot status snapshot.db
#복구하기 전에 kube-apiserver 서비스 중지
service kube-apiserver stop
#스냅샷 파일로 복구(데이터 경로, 토큰을 기존환경과 다르게 작성)
etcdctl snapshot restore snapshot.db \
--data-dir /var/lib/etcd-from-backup \
.
.
--initial-cluster-token etcd-cluster-1
# /etc/kubernetes/manifests/etcd.yaml 파일 수정(데이터 경로, 토큰)
systemctl daemon-reload
service etcd restart
- ETCD에 TLS를 사용중이라면 백업, 복구 명령에 인증서 관련 옵션을 추가해야만 수행된다.
- —cacert=
- —cert=
- —endpoint=[127.0.0.1:2379]
- —key=
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Network Policy (0) | 2021.01.19 |
---|---|
[Kubernetes] 권한 관리(RBAC) (0) | 2020.12.30 |
[Kubernetes] 클러스터 업그레이드 (0) | 2020.12.17 |
[Kubernetes] 어플리케이션 배포 관리 (0) | 2020.12.11 |
[Kubernetes] 모니터링, 로깅 (0) | 2020.11.28 |