Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ansible
- kernel
- WSGI
- Deployment
- POD
- FastAPI
- ebs
- EKS
- github
- asyncio
- IAM
- AWS
- 쿠버네티스
- asgi
- K8S
- EC2
- Django
- Kubernetes
- IAC
- Service
- leetcode
- docker
- YAML
- Python
- elasticsearch
- intervals
- 자바스크립트
- dockerfile
- event loop
- terraform
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ CKA ] etcd backup & restore 본문
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 마운트 (6) | 2024.01.26 |
Comments