Search

[CKA] 3. ETCD

Date
2024/11/04
Category
Devops
Tag
Kubernetes
CKA
Core Concept
๋ชฉ์ฐจ

ย ETCD

Key-Value Store

ย Key-Value Store

โ€ข
์ •๋ณด๋ฅผ ๋ฌธ์„œ๋‚˜ ํŽ˜์ด์ง€ ํ˜•ํƒœ๋กœ ์ €์žฅ
โ€ข
ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ ๊ณณ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ
โ€ข
๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ํ•„์š”์—†์ด ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
โ€ข
๊ฐ„๋‹จํ•œ ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅ
โ€ข
๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด JSON ๋˜๋Š” YAML ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ํŠธ๋žœ์ ์…˜ํ•จ

ย Operate ETCD

1.
Download Binaries
2.
Extract
3.
Run ETCD Service
โ€ข
Port 2379 ์˜ ์‹ ํ˜ธ๋ฅผ ์ž๋™์œผ๋กœ ๋“ฃ๋Š” ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋จ
โ€ข
ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ฒจ๋ถ€ํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ
โ—ฆ
๊ธฐ๋ณธ ํด๋ผ์ด์–ธํŠธ๋Š” etctctl - ETCD์˜ ์ปค๋งจ๋“œ๋ผ์ธ ํด๋ผ์ด์–ธํŠธ
โ–ช
ํ‚ค๊ฐ’ ์Œ ์ €์žฅ ๋ฐ ํšŒ์ˆ˜ ๊ฐ€๋Šฅ
โ–ช
์ €์žฅ: /etcdctl set key1 value1
โ–ช
ํšŒ์ˆ˜: /etcdctl get key1
โ—ฆ
๋ฒ„์ „๋งˆ๋‹ค ์ปค๋งจ๋“œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— version์— ๋”ฐ๋ฅธ ์ปค๋งจ๋“œ ํ™•์ธํ•˜๋Š” ์ข‹์Œ
โ–ช
v2์™€ v3์—์„œ ์ฐจ์ด๊ฐ€ ํผ - v3๋ถ€ํ„ฐ CNCF์—์„œ ๊ด€๋ฆฌํ•˜๋ฉด์„œ API๊ฐ€ ๋ณ€๊ฒฝ๋จ
โ–ช
/etcdctl --version ์ปค๋งจ๋“œ๋กœ ๋ฒ„์ „ ํ™•์ธ
โ€ข
API version์„ ํ™•์ธํ•ด์•ผ ํ•จ
โ–ช
๋ฒ„์ „ ๋ณ€๊ฒฝ ์ปค๋งจ๋“œ:
โ€ข
ETCDCTL_API=3 ./etcdctl version
โ€ข
export ETCDCTL_API=3 ./etcdctl version

ย Role

โ€ข
ํด๋Ÿฌ์Šคํ„ฐ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ - Nodes, PODs, Configs, Secrets, Accounts, Roles, Bindings, Others
โ€ข
kube controle์„ ์‹คํ–‰ํ•  ๋•Œ ์–ป๊ฒŒ ๋˜๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ETCD Server์—์„œ ๊ฐ€์ ธ์™€ ์ง
โ—ฆ
ETCD์— ์—…๋ฐ์ดํŠธ ๋œ ๊ฒƒ๋“ค๋งŒ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋จ

ย Deploy

ETCD๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ์Œ

Manual

โ€ข
ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์…‹์—…ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•ด ๋ฐฐํฌํ•ด์•ผ ํ•จ
โ—ฆ
๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ
wget -q --https-only \ "https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz"
Bash
๋ณต์‚ฌ
โ€ข
์„œ๋น„์Šค ์˜ต์…˜
โ—ฆ
์ƒ๋‹น์ˆ˜๊ฐ€ ์ธ์ฆ์„œ์™€ ๊ด€๋ จ๋จ (TLS ์ธ์ฆ์„œ)
โ—ฆ
๋‹ค๋ฅธ ์„น์…˜์€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ์„œ etcd๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ
โ–ช
HA๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ด ์˜ต์…˜๋“ค์ด ํ•„์š”
โ—ฆ
์ค‘์š” ์˜ต์…˜์€ etcd๊ฐ€ ์ˆ˜์‹ ํ•˜๋Š” ์ฃผ์†Œ์ธ advertise-client-urls ์ž„
โ–ช
์„œ๋ฒ„์˜ ๋‚ด๋ถ€ IP์™€ 2379 ํฌํŠธ์— ์œ„์น˜ํ•จ
โ–ช
kube API server์—์„œ ๊ตฌ์„ฑ๋ผ์•ผ ํ•˜๋Š” URL

kubeadm

โ€ข
kubeadm์„ ์ด์šฉํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋ฉด kubeadm์ด kube-system ์ด๋ž€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ทธ ์™ธ ๊ธฐํƒ€ ์„œ๋ฒ„๋ฅผ pod๋กœ ๋ฐฐํฌํ•จ
โ—ฆ
์ด pod ๋‚ด์˜ etcd control utility๋ฅผ ํ†ตํ•ด etcd ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ
# ์˜ˆ์‹œ: ๋ชจ๋“  key๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด kubectl exec etcd-master -n kube-system etcdctl get / --prefix -keys-only
Bash
๋ณต์‚ฌ
โ€ข
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•จ
โ—ฆ
๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋กœ, ๊ทธ ์•„๋ž˜์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์„ฑ์ฒด๊ฐ€ ์žˆ์Œ (minions, nodes, pods, โ€ฆ)
โ€ข
High Availability ํ™˜๊ฒฝ์—์„  ํด๋Ÿฌ์Šคํ„ฐ์— ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฟ์ธ๋ฐ, ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ „์ฒด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ etcd instance๊ฐ€ ํผ์ ธ ์กด์žฌํ•จ
โ—ฆ
์ด ๊ฒฝ์šฐ etcd ์„œ๋น„์Šค ๊ตฌ์„ฑ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •์„ ํ†ตํ•ด etcd instance๋“ค์ด ์„œ๋กœ์— ๋Œ€ํ•ด ์•Œ๋„๋ก ํ•ด์•ผ ํ•จ