궁금한게 많은 개발자 노트

[ CKA ] etcd backup & restore 본문

DevOps

[ CKA ] etcd backup & restore

궁금한게 많은 개발자 2024. 3. 14. 18:22

https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster

 

Operating etcd clusters for Kubernetes

etcd is a consistent and highly-available key value store used as Kubernetes' backing store for all cluster data. If your Kubernetes cluster uses etcd as its backing store, make sure you have a back up plan for the data. You can find in-depth information a

kubernetes.io

etcd는 쿠버네티스의 모든 운영 정보가 들어가 있고, 하나의 pod형태로 존재합니다.

master-node에 etcd pod가 존재하며, 실제 메모리(key-value)인 etcd에 해당 pod를 통해 정보를 주고받아 처리합니다.

/var/lib/etcd라는 저장소로 db형태로 함께 보관 됨. (현재 kubernetes의 운영 정보)

 

backup: snapshot를 생성함으로써 상태를 저장 ex) /data/etcd-snaphost.db

restore: previous snaphot file로 이전 상태로 복구 ex) using /data/etcd-snapshot-previous.db

restore시에는 실제 /var/lib/etcd를 덮어쓰지 말고, 다른 디렉토리에 previous.db를 풀고, data 디렉토리를 변경 (config변경)

etcd가 재 시작되었는 지 확인 필요.

 

[ etcd 백업 ]

$ ssh k8s-mater-node

$ sudo ETCDCTL_API=3 etcdctl \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=<trusted-ca-file> \
  --cert=<cert-file> \
  --key=<key-file> \
  snapshot save /data/etcd-snapshot.db

cert,key,ca file정보 아래 명령어 통해 확인

kubectl describe  pods -n kube-system etcd-cluster1-controlplane  | grep pki
      --cert-file=/etc/kubernetes/pki/etcd/server.crt
      --key-file=/etc/kubernetes/pki/etcd/server.key
      --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
      --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
      --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
      --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
      /etc/kubernetes/pki/etcd from etcd-certs (rw)
    Path:          /etc/kubernetes/pki/etcd

 

[ 기존 db restore ]

$ ssh k8s-mater-node

$ export ETCDCTL_API=3
$ sudo etcdctl \
  --data-dir /var/lib/etcd-previous \
  snapshot restore /data/etcd-snapshot-previous.db

 

[ Pod에 data directory 변경 알리기 ]

$ kubectl get pods -n kube-system

#output
etcd-k8s-mater ... [static-pod]

# static pod이므로 다음 경로의 yaml파일에 의해 운영 
# /etc/kubernets/manifests/

$ sudo vi /etc/kubernets/manifests/etcd.yaml
# hostPath -> path: /var/lib/etcd-previous로 변경
# static pod이므로 변경 시 바로 재 시작
$ sudo docker ps -a | grep etcd로 Up상태가 되었는 지 확인
$ kubectl get pods로 재 시작됨을 확인 가능

'DevOps' 카테고리의 다른 글

[ k8s ] Kubernetes Cluster AutoScaler VS Karpenter  (0) 2024.04.19
[ CKA ] Cluster 업그레이드  (0) 2024.03.16
[ AWS ] VPC Peering  (0) 2024.02.16
[ k8s ] init container / infra container  (0) 2024.01.28
[ k8s ] Kubernetes Pod에 AWS S3 마운트  (2) 2024.01.26
Comments