Search

Backup & Restore

Created
2023/10/22 01:36
Tags
k8s
CKA
Mumshad Mannambeth
Cluster Maintenance

1) About

Backup 대상은 3가지로 나뉨
Resource Configuration (객체의 설정 값을 보유)
ETCD Cluster (클러스터의 모든 정보를 보유)
Persistent Volume (데이터 저장소)

2) Resource Configuration

Resource Configuration의 경우 Kube API Server의 기능을 이용하여 쉽게 복사할 수 있음
kubectl get all —all-namespaces -o yaml > all-deploy-services.yaml
하지만 명령어에 예시를 기재해놓은 대로 deploy 및 service 관련 복사만 되므로, 전체 객체를 복사하기 위해선 HeptIO 사에서 개발한 VELERO 등의 도구를 이용하면 됨

3) ETCD Cluster

ETCD Cluster는 마스터 노드에 위치해 있음
ETCD를 서비스로 구동할 때는 데이터를 어디 저장할지 옵션을 명시하게 되어 있는데, 이를 백업하면 됨
ETCDCTL_API=3 etcdctl snapshot save ${NAME}
혹은 위와 같이 ETCD는 스냅샷 기능을 갖고 있으므로 이를 이용할 수도 있음
service kube-apiserver stop ETCDCTL_API=3 etcdctl snapshot restore ${NAME} —datadir ${PATH} etcd.service의 —data-dir 경로를 수정 systemctl daemon-reload service etcd restart service kube-apiserver start
위 절차로 백업된 스냅샷을 복구할 수 있음
ETCDCTL_API=3 etcdctl snapshot status ${NAME}
위 명령어로 스냅샷의 상태를 확인할 수 있음
ETCDCTL_API=3 etcdctl snapshot ${COMMAND} ${NAME} —endpoints=127.0.0.1:2379 —cacert=/etc/etcd/ca.crt —cert=/etc/etcd/etcd-server.crt —key=/etc/etcd/etcd-server.key
모든 ETCDCTL의 API 호출에서는 —endpoints, —cacert, —cert, —key라는 옵션을 모두 명시하여 인증이 가능하도록 해야함