Programming/DevOps

[DevOps]๐Ÿ“Œ Ubuntu 22.04์—์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ ์„ธํŒ… (๋งˆ์Šคํ„ฐ 1๋Œ€ + ์›Œ์ปค 2๋Œ€)

๋ฉ์Ÿˆ๋ฝ€์จ• 2025. 3. 12. 17:08

๐ŸŽฏ ๋ชฉํ‘œ:

๊ฐ€์ƒ๋จธ์‹  3๋Œ€(Master 1๊ฐœ + Worker 2๊ฐœ)๋ฅผ ์ด์šฉํ•ด์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์ „ ์ค€๋น„๋ฅผ ์ง„ํ–‰ํ•  ๊ฑฐ์•ผ!

CPU 2๊ฐœ, ๋ฉ”๋ชจ๋ฆฌ 4GB๋ฅผ ๊ฐ€์ง„ ๊ฐ€์ƒ๋จธ์‹ ์ด ํ•„์š”ํ•ด.


โœ… 1๏ธโƒฃ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„(์ปดํ“จํ„ฐ ์ด๋ฆ„) ์„ค์ •

๊ฐ ๊ฐ€์ƒ๋จธ์‹ (์„œ๋ฒ„)์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•ด.

์„œ๋ฒ„์˜ ์—ญํ• ์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•ด์•ผ ๋‚˜์ค‘์— ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•ด!

๐Ÿ”น ํ•  ์ผ

  • ๋งˆ์Šคํ„ฐ ์„œ๋ฒ„: master
  • ์›Œ์ปค ์„œ๋ฒ„ 1: worker01
  • ์›Œ์ปค ์„œ๋ฒ„ 2: worker02

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

vi /etc/hostname

โžก ํŒŒ์ผ์„ ์—ด๊ณ  ์•„๋ž˜์ฒ˜๋Ÿผ ๋ณ€๊ฒฝํ•ด์ค˜!

master   # (๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์„ค์ •)
worker01 # (์ฒซ ๋ฒˆ์งธ ์›Œ์ปค ๋…ธ๋“œ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์„ค์ •)
worker02 # (๋‘ ๋ฒˆ์งธ ์›Œ์ปค ๋…ธ๋“œ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์„ค์ •)

๐Ÿ“Œ ์ ์šฉํ•˜๊ธฐ (๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

init 6  # ์‹œ์Šคํ…œ์„ ์žฌ๋ถ€ํŒ…ํ•ด์„œ ๋ณ€๊ฒฝ๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ ์šฉํ•จ

โœ… 2๏ธโƒฃ containerd ์„ค์น˜ (์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„)

Kubernetes๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, containerd๋ผ๋Š” ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•ด.

Docker๋„ ์žˆ์ง€๋งŒ, K8s์—์„œ๋Š” containerd๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด.

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

apt -y install containerd

โžก -y ์˜ต์…˜์€ ์„ค์น˜ํ•  ๋•Œ "Yes"๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•ด์ฃผ๋Š” ๊ฑฐ์•ผ.


โœ… 3๏ธโƒฃ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์„ค์ • (๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ ํ™œ์„ฑํ™”)

Kubernetes์—์„œ๋Š” ๋…ธ๋“œ ๊ฐ„์— ๋„คํŠธ์›Œํฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ด.

์ด ์„ค์ •์„ ํ•ด์ค˜์•ผ K8s ๋„คํŠธ์›Œํฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•ด!

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

cat > /etc/sysctl.d/99-k8s-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF

โžก ์ด ์„ค์ •์ด ํ•„์š”ํ•œ ์ด์œ :

  • iptables=1 → ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
  • ip6tables=1 → IPv6 ๋„คํŠธ์›Œํฌ๋„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
  • ip_forward=1 → ์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํ„ฐ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ํŒจํ‚ท์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •

๐Ÿ“Œ ์œ„ ์„ค์ •์„ ์ฆ‰์‹œ ์ ์šฉํ•˜๊ธฐ

sysctl --system

โœ… 4๏ธโƒฃ ์ถ”๊ฐ€ ๋„คํŠธ์›Œํฌ ๋ชจ๋“ˆ ๋กœ๋“œ

์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€์ ์ธ ๋„คํŠธ์›Œํฌ ๋ชจ๋“ˆ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ด.

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

modprobe overlay; modprobe br_netfilter

โžก ์ด ์„ค์ •์ด ํ•„์š”ํ•œ ์ด์œ :

  • overlay → ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
  • br_netfilter → ๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌ

๐Ÿ“Œ ์‹œ์Šคํ…œ์ด ์žฌ๋ถ€ํŒ…ํ•ด๋„ ์„ค์ •์ด ์œ ์ง€๋˜๋„๋ก ํ•˜๊ธฐ

echo -e overlay\\\\nbr_netfilter > /etc/modules-load.d/k8s.conf

โœ… 5๏ธโƒฃ iptables ๋ฒ„์ „ ๋งž์ถ”๊ธฐ

Kubernetes๋Š” ํŠน์ • iptables ๋ฒ„์ „์„ ์š”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งž์ถฐ์ค˜์•ผ ํ•ด.

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

update-alternatives --config iptables

โžก ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒ„์ „์ด ๋‚˜์˜ค๋ฉด iptables-legacy๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ด!


โœ… 6๏ธโƒฃ Swap ๋„๊ธฐ (๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์ƒํ™” ๋น„ํ™œ์„ฑํ™”)

Kubernetes๋Š” ์„ฑ๋Šฅ์„ ์œ„ํ•ด swap(๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ)์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ผ.

๊ทธ๋ž˜์„œ Swap์„ ๊บผ์•ผ ํ•ด.

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

swapoff -a

โžก ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ swap์„ ๊บผ์ฃผ๋Š” ๋ช…๋ น์–ด์•ผ.

๐Ÿ“Œ ์žฌ๋ถ€ํŒ…ํ•ด๋„ swap์ด ๋‹ค์‹œ ์ผœ์ง€์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๊ธฐ

vi /etc/fstab

โžก ํŒŒ์ผ์„ ์—ด์–ด์„œ ์•„๋ž˜ ์ค„์„ ์ฐพ์•„์„œ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ด์ค˜!

#/swap.img      none    swap    sw      0       0

โžก #์„ ์ถ”๊ฐ€ํ•˜๋ฉด, ์žฌ๋ถ€ํŒ…ํ•ด๋„ swap์ด ๋‹ค์‹œ ์ผœ์ง€์ง€ ์•Š์•„.


โœ… 7๏ธโƒฃ GRUB ์„ค์ • (๋ถ€ํŒ… ์‹œ cgroup ์„ค์ •)

Kubernetes๋Š” cgroup(๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ)์ด ํ•„์š”ํ•ด.

Ubuntu 22.04์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ cgroup v2๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”๋ฐ,

Kubernetes๋Š” cgroup v1์„ ํ•„์š”๋กœ ํ•ด!

๊ทธ๋ž˜์„œ ๋ถ€ํŒ…ํ•  ๋•Œ cgroup v1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ด.

๐Ÿ“Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด (๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)

vi /etc/default/grub

โžก ํŒŒ์ผ์„ ์—ด์–ด์„œ GRUB_CMDLINE_LINUX ์„ค์ •์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ด์ค˜.

GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"

๐Ÿ“Œ ์„ค์ •์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด GRUB ์—…๋ฐ์ดํŠธ

bash
๋ณต์‚ฌํŽธ์ง‘
update-grub

โžก ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋ถ€ํŒ… ์„ค์ •์ด ์—…๋ฐ์ดํŠธ ๋ผ.


๐ŸŽฏ ์ •๋ฆฌ (ํ•œ ์ค„ ์š”์•ฝ)

1๏ธโƒฃ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ณ€๊ฒฝ → master, worker01, worker02

2๏ธโƒฃ containerd ์„ค์น˜ → ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์„ค์น˜

3๏ธโƒฃ ๋„คํŠธ์›Œํฌ ์„ค์ • → ๋ธŒ๋ฆฟ์ง€ ๋„คํŠธ์›Œํฌ & iptables ์„ค์ •

4๏ธโƒฃ Swap ๋„๊ธฐ → Kubernetes๋Š” swap์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

5๏ธโƒฃ GRUB ์„ค์ • ๋ณ€๊ฒฝ → cgroup v1 ํ™œ์„ฑํ™”

๐Ÿ“Œ ์ด ๊ณผ์ •์€ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ด! (๋งˆ์Šคํ„ฐ & ์›Œ์ปค ๋‘˜ ๋‹ค) ๐Ÿš€

'Programming > DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[DevOps] Docker์™€ Container(feat. ๋„์ปค์™€ ๊ฐ€์ƒ๋จธ์‹ ์˜ ์ฐจ์ด)  (0) 2025.03.10