Search

[CKA] 36. Backup & Restore

Date
2025/01/07
Category
Devops
Tag
Kubernetes
CKA
Cluster
๋ชฉ์ฐจ

ย Backup & Restore

๋ฐ์ดํ„ฐ ์†์‹ค, ํด๋Ÿฌ์Šคํ„ฐ ์žฅ์•  ๋“ฑ์˜ ์ด์œ ๋กœ ๋ฐฑ์—…๊ณผ ๋ณต๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฐฑ์—…์„ ํ†ตํ•ด ๋น ๋ฅธ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์„œ๋น„์Šค์˜ ์—ฐ์†์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐฑ์—…ํ•ด์•ผ ํ•  ์š”์†Œ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:
โ€ข
Resource Configuration - ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์€ definition file์„ ํ†ตํ•ด ๋ฐฐํฌ๋œ๋‹ค
โ€ข
ETCD Cluster - ETCD ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ๋‹ค
โ€ข
Persistent Volumes - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด PV๋กœ ๊ตฌ์„ฑ๋˜๋ฉด ๋˜๋‹ค๋ฅธ ๋ฐฑ์—… ํ›„๋ณด๊ฐ€ ๋œ๋‹ค

ย Resource Configuration

Declarative

Configuration์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„  ์„ ์–ธ์  ์ ‘๊ทผ(Declarative approach)์„ ์œ„ํ•œ ์ •์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. Object definition file์€ ๋‚˜์ค‘์— ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ๋“ค์€ Github ๊ฐ™์€ ์†Œ์Šค ์ฝ”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค. ์ด ๋ฐฑ์—… ์†”๋ฃจ์…˜์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ์žƒ์–ด๋„, configuration file์„ ์ ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Query the kube-apiserver

๋ˆ„๊ตฐ๊ฐ€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜์ง€ ์•Š๊ณ  ๋ช…๋ น์  ์ ‘๊ทผ(Imperative)์œผ๋กœ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ ๋•Œ๋ฌธ์— Resource Configuration์„ ๋ฐฑ์—…ํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ Kube-apiserver๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
kubectl์„ ํ†ตํ•ด kube-apiserver๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ apiserver์— ์ง์ ‘ ์•ก์„ธ์Šคํ•จ์œผ๋กœ์จ ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์„ ๋ณต์‚ฌํ•ด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
kubectl get all --all-namespaces -o yaml > all-deploy-services.yaml
Bash
๋ณต์‚ฌ
kubectl์„ ํ†ตํ•ด ๋ชจ๋“  pod, deploy, service๋ฅผ ๊ฐ€์ ธ์™€ yaml ํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์™ธ์—๋„ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์ด ๋งŽ์€๋ฐ, ์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด VELERO์ด๋‹ค. ARK๋ผ๊ณ  ๋ถˆ๋ ธ์—ˆ๋˜ VELERO๋Š” HeptIO์—์„œ ์ œ๊ณตํ•˜๋Š” ํˆด๋กœ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐฑ์—…์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ย ETCD

ETCD Cluster๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด์— ๊ด€ํ•œ ์ •๋ณด์™€ ๋…ธ๋“œ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์—์„œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ ๋Œ€์‹  ETCD ์„œ๋ฒ„ ์ž์ฒด๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Data Directory

ETCD๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ํ˜ธ์ŠคํŠธ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ์žฅ์†Œ๋ฅผ --data-dir์— ๋ช…์‹œํ•ด๋†“๋Š”๋‹ค. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ฐฑ์—… ํˆด๋กœ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

Snapshot - backup

ETCD๋Š” ๋‚ด์žฅ(built-in) ์Šค๋ƒ…์ƒท ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. etcdctl snapshot save๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค๋ƒ…์ƒท์„ ์ฐ์„ ์ˆ˜ ์žˆ๋‹ค. ์Šค๋ƒ…์ƒท์€ .db ์ด๋ฆ„์„ ๋ถ™์ด๋ฉฐ ์Šค๋ƒ…์ƒท ํŒŒ์ผ์€ ํ˜„์žฌ ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ๋œ๋‹ค. ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ๋ช…์‹œํ•˜๋ฉด ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฑ์—…์˜ ์ƒํƒœ ํ™•์ธ์€ etcd snapshot status ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ๋‹ค.
# snapshot ์ €์žฅ ETCDCTL_API=3 etcdctl snapshot save snapshot.db # ๋ฐฑ์—… ์ƒํƒœ ํ™•์ธ ETCDCTL_API=3 etcdctl snapshot status snapshot.db
Bash
๋ณต์‚ฌ
์Šค๋ƒ…์ƒท์„ ์ฐ์„ ๋•Œ๋Š” ์ธ์ฆ์„œ ํŒŒ์ผ๊ณผ etcd ํด๋Ÿฌ์Šคํ„ฐ๋กœ์˜ ์—”๋“œํฌ์ธ๋“œ, CA ์ธ์ฆ์„œ, 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
Bash
๋ณต์‚ฌ

Snapshot - restore

์Šค๋ƒ…์ƒท์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณต์›์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € kube-apiserver ์„œ๋น„์Šค๋ฅผ ์ค‘๋‹จ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋ณต์› ๊ณผ์ •์—์„œ๋Š” ETCD Cluster๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š”๋ฐ kube-apiserver๊ฐ€ etcd์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. kube-apiserver๋ฅผ ์ค‘์ง€์‹œ์ผฐ๋‹ค๋ฉด ๋ฐฑ์—… ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ธ snapshot.db ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์—ฌ etcd snapshot restore ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. --data-dir ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ /var/lib/etcd์ด๋ฉฐ, ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฎ์–ด ์”Œ์›Œ์ง„๋‹ค. ์ดํ›„๋กœ๋Š” ๋ฐ๋ชฌ ๋ฆฌ๋กœ๋“œ์™€ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘์„ ํ•œ ํ›„, kube-apiserver๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„์˜จ๋‹ค.
# kube-apiserver ์„œ๋น„์Šค ์ค‘์ง€ service kube-apiserver stop # ์Šค๋ƒ…์ƒท ๋ณต์› ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \ --data-dir /var/lib/etcd-from-backup # ๋ฐ๋ชฌ ๋‹ค์‹œ ๋กœ๋“œ systemctl daemon-reload # etcd ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ service etcd restart # kube-apiserver ์„œ๋น„์Šค ์‹คํ–‰ service kube-apiserver start
Bash
๋ณต์‚ฌ
ETCD๊ฐ€ ๋ฐฑ์—…์—์„œ ๋ณต์›ํ•  ๋•Œ, ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  etcd์˜ ๋ฉค๋ฒ„๋“ค์„ ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒˆ๋กœ์šด ๋ฉค๋ฒ„๋กœ ์„ค์ •ํ•œ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ์šด ๋ฉค๋ฒ„๊ฐ€ ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ์— ์šฐ์—ฐํžˆ ์กฐ์ธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ โ€œ์Šค๋ƒ…์ƒท์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋ณต์›์„ ํ•œ๋‹ค๋ฉด ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‚ฌ๋ผ์งˆํ…๋ฐ ์™œ ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ์— ์กฐ์ธ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„๊นŒโ€๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. GPT์— ์˜ํ•œ ๋‹ต์œผ๋กœ๋Š” ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ณต์› ๊ณผ์ •์—์„œ ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ๋กœ configuration์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

ย Summary

Resource Configuration

manifest ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฐฐํฌํ•œ ๊ฐ์ฒด๋“ค์„ Github ๋“ฑ์˜ Source Code Repository์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ช…๋ น์  ์ ‘๊ทผ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์€ manifest ํŒŒ์ผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฐฑ์—… ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.
kube-apiver์— ์ง์ ‘ ์ฟผ๋ฆฌํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช…๋ น์  ์ ‘๊ทผ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค๊นŒ์ง€ ์ „๋ถ€ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ETCD์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋„ ์œ ์šฉํ•˜๋ฉฐ, Managed Kubernetes ํ™˜๊ฒฝ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์œผ๋กœ, ์ด ๊ฒฝ์šฐ kube-apiserver๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ETCD

ETCD๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•˜๋ฉฐ, ์Šค๋ƒ…์ƒท์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ์ƒํƒœ๋ฅผ ๋ฐฑ์—… ๋ฐ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณต์›์„ ์ง„ํ–‰ํ•˜๋ฉด ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์‚ฌ๋ผ์ง€๊ณ  ์Šค๋ƒ…์ƒท์— ์˜ํ•œ ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค.