Backup and Restore

zuckerfrei·2024년 1월 6일
0

Kubernetes

목록 보기
36/63

1. 백업 대상

1) resource configuration

declarative 방식으로 파일로 관리하는 것이 좋음

클러스터 전체가 망가져도 이 백업 파일이 있으면 복구 가능

kube-apiserver에 쿼리하여 오브젝트를 백업 파일로 받아놓는다.

다만 이 명령어로 모든 오브젝트를 백업할 수 있는 것은 아님

kubectl get all --all-namespaces -o yaml > all-deploy-services.yaml

2) ETCD

클러스터에 대한 정보 및 모든 리소스가 이곳에 저장됨

마스터 노드에 위치하며 데이터 경로를 확인하면 이곳에서 파일 백업 가능

--data-dir=/var/lib/etcd

스냅샷 기능도 있음

인증서를 포함하여 백업할 것

ETCDCTL_API=3 etcdctl snapshot save snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt \
--cert=/etc/etcd/etcd-server.crt \
--key=/etc/etcd/etcd-server.key

스냅샷 복구하기

# kube-apiserver 중지시킨 후
service kube-apiserver stop

# 복구
ETCDCTL_API=3 etcdctl snapshot resotre snapshot.db \
--data-dir /var/lib/etcd-from-backup

# 재기동
systemctl daemon-reload
service etcd restart
service kube-apiserver restart

2. etcd 백업 / 복구

1) 백업

ETCDCTL : etcd를 사용하기 위한 커맨드 라인 클라이언트

# 현재 etcd 버전
export ETCDCTL_API=3

etcd에 TLS 적용되면서 아래처럼 인증서도 함께 백업해야 한다

etcdctl snapshot save {파일이름} \
--cacert= ~~~ \ # verify certificates of TLS-enabled secure servers using this CA bundle
--cert= ~~~ \ # identify secure client using this TLS certificate file
--endpoints= ~~~ \ # This is the default as ETCD is running on master node and exposed on localhost 2379.
--key= ~~~ # identify secure client using this TLS key file

2) 복구

# /var/lib/etcd-from-backup -> 새로운 호스트 경로
etcdctl snapshot restore {파일이름} \
--data-dir /var/lib/etcd-from-backup

etcd.yaml 파일 수정

vi /etc/kubernetes/manifests/etcd.yaml

----------------------------
...
volumes:
  ...
  - hostPath:
      path: /var/lib/etcd-from-backup # 새로운 경로로 변경
      type: DirectoryOrCreate
    name: etcd-data

실습하면서 복구 부분 보완 할 것

profile
무설탕 음료를 좋아합니다

0개의 댓글