CKA 시험 유형
작업 시스템 : k8s-master
https://127.0.0.1:2379에서 실행 중인 기존 etcd 인스턴스의 스냅샷을 생성하여 스냅샷을 /data/etcd-snapthot.db에 저장합니다. 다음으로 /data/etcd-snapshot-previous.db에 있는 기존의 이전 스냅샷을 복원합니다.
etcdctl을 사용하여 서버에 연결하기 위해 다음 TLS 인증서/키가 제공됩니다.
CA certificate: /etc/kubernetes/pki/etcd/ca.crt
Client certificate: /etc/kubernetes/pki/etcd/server.crt
Client key: /etc/kubernetes/pki/etcd/server.key
etcd
- CoreOS 가 만든 key:value 형태의 분산 데이터 스토리지
- 고가용성을 위해 여러 곳에 분산되어 동기화
- 쿠버네티스 클러스터의 정보를 저장
- 모든 etcd 데이터는 /var/lib/etcd에 보관
etcd 설치 확인
- k8s 마스터 노드에 접근 후(ex. ssh k8s-master) etcd 버전과 etcdctl 툴 설치 확인
# etcd --version
etcd Version: 3.2.26
Git SHA: Not provided (use ./build instead of go build)
Go Version: go1.13.8
Go OS/Arch: linux/amd64
# etcdctl --version
etcdctl version: 3.2.26
API version: 2
/var/lib/etcd 확인
# tree /var/lib/etcd
/var/lib/etcd
└── member
├── snap
│ ├── 000000000000001c-0000000000035b76.snap
│ ├── 000000000000001d-0000000000038287.snap
│ ├── 000000000000001e-000000000003a998.snap
│ ├── 000000000000001f-000000000003d0a9.snap
│ ├── 0000000000000021-000000000003f7ba.snap
│ └── db
└── wal
├── 0.tmp
├── 0000000000000000-0000000000000000.wal
├── 0000000000000001-0000000000015e1d.wal
├── 0000000000000002-000000000002a9dc.wal
└── 0000000000000003-000000000003e7ac.wal
3 directories, 11 files
etcd는 하나의 pod로 동작
# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-565d847f94-k9kvr 1/1 Running 28 (85m ago) 94d
coredns-565d847f94-tdhmn 1/1 Running 28 (85m ago) 94d
etcd-master.example.com 1/1 Running 0 94d
kube-apiserver-master.example.com 1/1 Running 33 (10m ago) 94d
kube-controller-manager-master.example.com 1/1 Running 35 (2m31s ago) 94d
kube-proxy-6529g 1/1 Running 29 (85m ago) 94d
kube-proxy-skhgb 1/1 Running 33 (26m ago) 94d
kube-proxy-x5gsk 1/1 Running 28 (25m ago) 94d
kube-scheduler-master.example.com 1/1 Running 35 (2m30s ago) 94d
metrics-server-7bc5695bdf-dcn54 1/1 Running 14 (25m ago) 78m
weave-net-bwqrp 2/2 Running 60 (85m ago) 94d
weave-net-r8v7n 2/2 Running 59 (25m ago) 94d
weave-net-t92nl 2/2 Running 68 (26m ago) 94d
Backup & Restore는 쿠버네티스 공식 문서를 참고해서 진행
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
etcd Backup
- 실행 중인 기존 etcd 인스턴스의 스냅샷을 생성하고 스냅샷을 /data/etcd-snaphost.db 로 저장
- 현재 deploy-nignx pod 3개 실행
# ssh k8s-master
# sudo ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /data/etcd-snapshot.db
# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-5cfbcf5f65-5tl6w 1/1 Running 0 20s
deploy-nginx-5cfbcf5f65-mrfwm 1/1 Running 0 20s
deploy-nginx-5cfbcf5f65-twrq6 1/1 Running 0 20s
etcd Restore
- /data/etcd-snapshot-previous.db에 있는 기존의 이전 스냅샷을 복원
- pod가 실행되지 않은 상태
- etcd.yaml 파일에 이전 스냅샷을 저장한 경로로 변경
- 변경 후 시간이 지나면 자동으로 설정이 적용되며 pod 확인시 복원된 스냅샷 설정으로 변경된 것을 확인할 수 있음
# ETCDCTL_API=3 etcdctl snapshot restore --data-dir /var/lib/etcd-new /data/etcd-snapshot-previous.db
# tree /var/lib/etcd-new
/var/lib/etcd-new
└── member
├── snap
│ ├── 0000000000000001-0000000000000001.snap
│ └── db
└── wal
└── 0000000000000000-0000000000000000.wal
3 directories, 3 files
# vi /etc/kubernetes/manifests/etcd.yaml
....
- hostPath:
path: /var/lib/etcd-new
type: DirectoryOrCreate
name: etcd-data
# kubectl get pod
No resources found in default namespace.
[참고]
- https://www.youtube.com/watch?v=dv_5WCYS5P8&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=4
'자격증 > CKA' 카테고리의 다른 글
[CKA] Deployment & Pod Scale (0) | 2023.03.14 |
---|---|
[CKA] Side-car Container Pod 실행 (0) | 2023.03.12 |
[CKA] multi-container Pod 생성 (0) | 2023.03.05 |
[CKA] Static Pod 생성 (0) | 2023.03.05 |
[CKA] Pod 생성하기 (0) | 2023.03.04 |