[ํ”„๋กœ์ ํŠธ 2]๐Ÿ”ง ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5์—์„œ K3s ํด๋Ÿฌ์Šคํ„ฐ ์˜ฌ๋ฆฌ๊ธฐ – ํ•˜๋“œ์›จ์–ด๋ถ€ํ„ฐ Longhorn HA๊นŒ์ง€

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

๐Ÿ”— K3s ์œ„ํ‚ค ์ƒ์„ธ ๋ฌธ์„œ: GitHub Wiki โ€” Kubernetes(K3s) | Longhorn HA


๐Ÿ–ฅ๏ธ ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ

๋ณธ๊ฒฉ์ ์ธ ์ด์•ผ๊ธฐ์— ์•ž์„œ ๋ฌผ๋ฆฌ ํ™˜๊ฒฝ์„ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜๋ฉด, ๋…ธ๋“œ ์„ธ ๋Œ€๋Š” ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ์—ญํ• RAM์ €์žฅ์†Œ๋„คํŠธ์›Œํฌ
MasterControl Plane ์ „์šฉ4GBSSD 128GB์ด๋”๋„ท(eth0)
Worker 1๋ฐฑ์—… ๊ฐ์‹œ ๋…ธ๋“œ8GBSSD 256GB์ด๋”๋„ท(eth0)
Worker 2๋ฉ”์ธ AI ๊ฐ์ง€ ๋…ธ๋“œ8GBSSD 256GB์ด๋”๋„ท(eth0)

๋ชจ๋“  ๋…ธ๋“œ๋Š” ํ์‡„๋ง(์ด๋”๋„ท)๊ณผ ์ธํ„ฐ๋„ท(Wi-Fi) ๋‘ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ํ†ต์‹ ์€ ์ด๋”๋„ท, ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ์™€ Docker Hub ์ด๋ฏธ์ง€ pull์€ Wi-Fi๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด ์ด์ค‘ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๊ฐ€ ๋’ค์—์„œ ์—„์ฒญ๋‚œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 1. SSD๊ฐ€ ์‹œ์Šคํ…œ์„ ์–ผ๋ ค๋ฒ„๋ ธ๋‹ค โ€” USB-SATA UAS ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ

์ฒซ ๋ฒˆ์งธ ์‹œ๋ จ์€ ํ•˜๋“œ์›จ์–ด์—์„œ ์™”์Šต๋‹ˆ๋‹ค. ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5๋ฅผ SSD์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋ถ€ํŒ…ํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” ๋ฉ€์ฉกํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. SSH๋„ ์ž˜ ๋ถ™๊ณ , ping๋„ ์ž˜ ๊ฐ€๊ณ . ๊ทธ๋Ÿฐ๋ฐ VS Code Remote-SSH๋กœ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์ง€๋‚˜๋ฉด ์‹œ์Šคํ…œ์ด ํ†ต์งธ๋กœ ๊ตณ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

์ฆ์ƒ:

  • SSH๊ฐ€ ๋จนํ†ต์ด ๋˜๊ณ , ์™ธ๋ถ€์—์„œ ping์„ ๋ณด๋‚ด๋ฉด Destination host unreachable
  • ์ปค๋„ ํŒจ๋‹‰ ๋กœ๊ทธ๋Š” ์—†๋Š”๋ฐ ์ฟจ๋ง ํŒฌ์ด ๊ณ ์†์œผ๋กœ ๋Œ๋ฉด์„œ ๋ฐœ์—ด์ด ์‹ฌํ•ด์ง
  • htop์œผ๋กœ ํ™•์ธํ•˜๋ฉด ํŠน์ • CPU ์ฝ”์–ด ํ•˜๋‚˜๊ฐ€ 100%๋กœ ์น˜์†Ÿ๋Š” Interrupt Storm ๋ฐœ์ƒ

์›์ธ์€ USB-SATA ์–ด๋Œ‘ํ„ฐ์˜€์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” USB ์—ฐ๊ฒฐ ์Šคํ† ๋ฆฌ์ง€์— UAS(USB Attached SCSI) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋กœ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋‚ด๋Š” ํ”„๋กœํ† ์ฝœ์ธ๋ฐ, ์ €๊ฐ€ํ˜• ์–ด๋Œ‘ํ„ฐ ์นฉ์…‹(JMicron ๊ณ„์—ด)์ด ์ด ๋“œ๋ผ์ด๋ฒ„์™€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. VS Code ์ธ๋ฑ์‹ฑ์ฒ˜๋Ÿผ ๋žœ๋ค I/O ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์ˆœ๊ฐ„ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐ๋“œ๋ฝ์— ๋น ์ง€๋ฉด์„œ CPU๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ํญํ’์— ์‹œ๋‹ฌ๋ฆฌ๋‹ค๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์‘๋‹ต ๋ถˆ๋Šฅ์ด ๋˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: ์ปค๋„ ๋ถ€ํŒ… ํŒŒ๋ผ๋ฏธํ„ฐ์— quirks๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ UAS๋ฅผ ๋„๊ณ  BOT(Bulk-Only Transport) ๋ชจ๋“œ๋กœ ๊ฐ•์ œ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

# /boot/firmware/cmdline.txt ๋งจ ์•ž์ด๋‚˜ ๋’ค์— ์ถ”๊ฐ€
# ๋ณธ์ธ ์–ด๋Œ‘ํ„ฐ ID๋Š” lsusb๋กœ ํ™•์ธ
usb-storage.quirks=7825:a2a4:u
๋ชจ๋“œํŠน์ง•
BOT1์ฐจ์„  ๋„๋กœ โ€” ์ˆœ์ฐจ ์ฒ˜๋ฆฌ, ๋А๋ฆฌ์ง€๋งŒ ์•ˆ์ •์ 
UAS๋‹ค์ฐจ์„  ๊ณ ์†๋„๋กœ โ€” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ๋น ๋ฅด์ง€๋งŒ ์นฉ์…‹ ์ง€์› ํ•„์ˆ˜

๐Ÿ’ก ๊ตํ›ˆ: USB-SATA ์–ด๋Œ‘ํ„ฐ๋Š” ๋‹จ์ˆœ ์ผ€์ด๋ธ”์ด ์•„๋‹™๋‹ˆ๋‹ค. ์นฉ์…‹ ํ˜ธํ™˜์„ฑ์„ ํƒ€๋Š” ํ•˜๋‚˜์˜ ‘์žฅ๋น„’์ž…๋‹ˆ๋‹ค. Longhorn์ฒ˜๋Ÿผ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ASMedia ASM1153E ์นฉ์…‹์ด ํƒ‘์žฌ๋œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 2. ๋„คํŠธ์›Œํฌ๊ฐ€ 5๋ถ„๋งˆ๋‹ค ๋Š๊ฒผ๋‹ค โ€” DHCP ํƒ€์ž„์•„์›ƒ์˜ ํ•จ์ •

SSD ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  K3s ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ์—” ์ด์ƒํ•œ ์ผ์ด ์ƒ๊ฒผ์–ด์š”. ๋ถ€ํŒ… ์งํ›„์—๋Š” SSH๊ฐ€ ์ž˜ ๋˜๋Š”๋ฐ, 5๋ถ„ ํ›„์— ์ •ํ™•ํ•˜๊ฒŒ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๊น๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์ด ๋‹ค์šด๋œ ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค. ์ „์› ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ •์ƒ ์ข…๋ฃŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ๊ฑฐ๋“ ์š”. ๋„คํŠธ์›Œํฌ๋งŒ ๋”ฑ ์ฃฝ๋Š” ๊ฑฐ์˜ˆ์š”.

์›์ธ์„ ์ฐพ๋Š” ๋ฐ ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. K3s CNI ์ถฉ๋Œ? Longhorn I/O ๋ณ‘๋ชฉ? ๋ฉ”๋ชจ๋ฆฌ ์Šค๋ž˜์‹ฑ? ์˜จ๊ฐ– ๋ณต์žกํ•œ ๊ฐ€์„ค์„ ์„ธ์› ๋Š”๋ฐ, ์ •๋‹ต์€ ์ •๋ง ํ—ˆ๋ฌดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋”๋„ท์— ๊ณ ์ • IP๋ฅผ ์ž…๋ ฅํ–ˆ์ง€๋งŒ ํ• ๋‹น ๋ฐฉ์‹์„ ‘์ž๋™(Automatic)’์œผ๋กœ ๋†”๋’€๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ์‡„๋ง ํ—ˆ๋ธŒ์—๋Š” DHCP ์„œ๋ฒ„๊ฐ€ ์—†์œผ๋‹ˆ, NetworkManager๊ฐ€ 5๋ถ„ ๋™์•ˆ DHCP ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€ ํƒ€์ž„์•„์›ƒ ์ฒ˜๋ฆฌ ํ›„ ์ด๋”๋„ท ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์Šค์Šค๋กœ ๊บผ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. 300์ดˆ, ๋”ฑ 5๋ถ„์ž…๋‹ˆ๋‹ค.

# ํ•ด๊ฒฐ: nmtui๋กœ IPv4 ํ• ๋‹น ๋ฐฉ์‹์„ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝ
sudo nmtui
# IPv4 CONFIGURATION: <Automatic> โ†’ <Manual> ๋กœ ๋ณ€๊ฒฝ

์ด ์™ธ์—๋„ ์ด ๊ณผ์ •์—์„œ ์ž ์žฌ์  ์œ„ํ—˜ ์š”์ธ๋“ค์„ ์ถ”๊ฐ€๋กœ ๋ฐœ๊ฒฌํ•˜๊ณ  ์กฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

# K3s๊ฐ€ Wi-Fi๊ฐ€ ์•„๋‹Œ ์ด๋”๋„ท์œผ๋กœ๋งŒ ํ†ต์‹ ํ•˜๋„๋ก ๊ฐ•์ œ
# /etc/systemd/system/k3s.service ์‹คํ–‰ ์˜ต์…˜์— ์ถ”๊ฐ€
--flannel-iface=eth0

๐Ÿ’ก ๊ตํ›ˆ: ํ์‡„๋ง + ์™ธ๋ถ€๋ง์ด ๊ณต์กดํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” โ‘  ํ์‡„๋ง ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋น„์šฐ๊ณ , โ‘ก IPv4๋ฅผ ์™„์ „ํ•œ ์ˆ˜๋™(Manual)์œผ๋กœ ์„ค์ •ํ•˜๊ณ , โ‘ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉํ•  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ช…ํ™•ํžˆ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 3. Worker ๋…ธ๋“œ๊ฐ€ ์—‰๋šฑํ•œ IP๋กœ ๋ถ™์—ˆ๋‹ค – ํ† ํฐ ์ž˜๋ฆผ๊ณผ ์žฌ์„ค์น˜

Worker ๋…ธ๋“œ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์กฐ์ธํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. kubectl get nodes -o wide๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ Worker ๋…ธ๋“œ๋“ค์˜ INTERNAL-IP๊ฐ€ ์˜๋„ํ–ˆ๋˜ 192.168.0.x๊ฐ€ ์•„๋‹Œ ์—‰๋šฑํ•œ 192.168.219.x ๋Œ€์—ญ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

IP๋ฅผ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด k3s-agent.service ์„ค์ • ํŒŒ์ผ์„ ์ง์ ‘ nano ์—๋””ํ„ฐ๋กœ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ, ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋‹ˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„์˜ˆ ๋ฉˆ์ถ”๊ณ  ๋ฐ˜ํ™˜์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์›์ธ์€ ๋‘ ๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๋‹ค์ค‘ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ K3s๊ฐ€ ์˜๋„์น˜ ์•Š์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ณธ ํ†ต์‹  IP๋กœ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, nano๋กœ ๊ธด K3s ํ† ํฐ์„ ๋ณต๋ถ™ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ† ํฐ ๋์ด ์ž˜๋ ค๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค. ๋ถˆ์™„์ „ํ•œ ์ธ์ฆ ์ •๋ณด๋กœ ๋งˆ์Šคํ„ฐ์™€ ๊ณ„์† ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉˆ์ถฐ๋ฒ„๋ฆฐ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์€ ์ง์ ‘ ์ˆ˜์ •์ด ์•„๋‹ˆ๋ผ ๊ณต์‹ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊น”๋”ํ•˜๊ฒŒ ์žฌ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

# ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์˜จ์ „ํ•œ ํ† ํฐ ๋‹ค์‹œ ํ™•์ธ
cat /var/lib/rancher/k3s/server/node-token

# Worker ๋…ธ๋“œ์—์„œ ๊ณต์‹ ์Šคํฌ๋ฆฝํŠธ๋กœ ์žฌ์„ค์น˜ + IP ๊ฐ•์ œ ์ฃผ์ž…
curl -sfL https://get.k3s.io | \
  K3S_URL=https://192.168.0.10:6443 \
  K3S_TOKEN="<์˜จ์ „ํ•œ_ํ† ํฐ>" \
  INSTALL_K3S_EXEC="--node-ip=192.168.0.11" \
  sh -

๐Ÿ’ก ๊ตํ›ˆ: K3s ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ์„œ๋น„์Šค ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ณต์‹ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ ์žฌ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์˜คํƒ€ยทํ…์ŠคํŠธ ์ž˜๋ฆผ ๊ฐ™์€ ํœด๋จผ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์žฌ์„ค์น˜ํ•ด๋„ ๊ธฐ์กด ํŒŒ๋“œ ๋ฐ์ดํ„ฐ๋Š” ๋‚ ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 4. Longhorn 3-Node HA – “๋‹ญ๊ณผ ์•Œ์˜ ๋ฌธ์ œ”

๋“œ๋””์–ด Longhorn์„ ์„ค์น˜ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. Master ๋…ธ๋“œ(RAM 4GB)๋ฅผ AI ํŒŒ๋“œ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋ฉด์„œ, ๋‚จ๋Š” ๋””์Šคํฌ ์ž์›์€ Longhorn 3-Node HA ์Šคํ† ๋ฆฌ์ง€๋กœ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€์Šต๋‹ˆ๋‹ค.

Master ๋…ธ๋“œ์— NoSchedule Taint(์ž๋ฌผ์‡ )๋ฅผ ๊ฑธ๊ณ , Longhorn ์‹œ์Šคํ…œ์—๋งŒ Toleration(๋งŒ๋Šฅ ์—ด์‡ )์„ ๋ถ€์—ฌํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Longhorn ๋Œ€์‹œ๋ณด๋“œ์—์„œ Master ๋…ธ๋“œ๊ฐ€ ๊ณ„์† READY: False ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

kubectl describe node master
# โ†’ "manager pod missing: node master has no manager pod running on it"

์›์ธ์€ “๋‹ญ๊ณผ ์•Œ์˜ ๋ฌธ์ œ”์˜€์Šต๋‹ˆ๋‹ค.

Longhorn ์ „์—ญ ์„ค์ •์— Toleration์„ ํŒจ์น˜ํ•˜๋ฉด csi-attacher, csi-provisioner ๊ฐ™์€ ์ž์ž˜ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์—ด์‡ ๋ฅผ ๋ฐ›๊ณ  Master ๋…ธ๋“œ์— ์ž˜ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •์ž‘ ์ด ์—ด์‡ ๋“ค์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•  longhorn-manager ๋ฐ๋ชฌ์…‹ ์ž์‹ ์—๊ฒŒ๋Š” Toleration์ด ๋ˆ„๋ฝ๋˜์–ด ์žˆ์–ด์„œ, ๋งค๋‹ˆ์ € ํŒŒ๋“œ ์ž์ฒด๊ฐ€ Master ๋…ธ๋“œ์— ์ƒ์„ฑ๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: Longhorn Manager ๋ฐ๋ชฌ์…‹์— ์ง์ ‘ Toleration์„ ๊ฐ•์ œ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

# 1๋‹จ๊ณ„: ๊ผฌ์ธ Longhorn ๊น”๋”ํ•˜๊ฒŒ ์žฌ์„ค์น˜
# (๊ณต์‹ Uninstall Job์œผ๋กœ ์ฐŒ๊บผ๊ธฐ ์™„์ „ ์ œ๊ฑฐ ํ›„ ์žฌ์„ค์น˜)

# 2๋‹จ๊ณ„: longhorn-manager ๋ฐ๋ชฌ์…‹์— ์ง์ ‘ ํŒจ์น˜
kubectl patch ds longhorn-manager -n longhorn-system -p \
  '{"spec":{"template":{"spec":{"tolerations":[{
    "key":"node-role.kubernetes.io/master",
    "operator":"Equal",
    "value":"true",
    "effect":"NoSchedule"
  }]}}}}'

ํŒจ์น˜ ์‹คํ–‰ ํ›„ ๋‹จ 6์ดˆ ๋งŒ์— Master ๋…ธ๋“œ์— longhorn-manager ํŒŒ๋“œ๊ฐ€ 1/1 Running ์ƒํƒœ๋กœ ์ƒ์„ฑ๋์Šต๋‹ˆ๋‹ค. ์„ธ ๋Œ€ ๋…ธ๋“œ ๋ชจ๋‘ READY: True๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ์™„๋ฒฝํ•œ 3-Node HA ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ธ ์ด๋ฏธ์ง€ ์ž๋ฆฌ: Longhorn ๋Œ€์‹œ๋ณด๋“œ โ€” 3-Node READY:True ์ƒํƒœ ํ™•์ธ ํ™”๋ฉด


โœ… ์—ฌ๊ธฐ๊นŒ์ง€์˜ ์„ฑ๊ณผ

Episode 1~4๋ฅผ ๊ฑฐ์น˜๋ฉฐ ์ด๋ ‡๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ์ƒํƒœ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 3๋Œ€ SSD ๋ถ€ํŒ… ์•ˆ์ •ํ™”โœ…
ํ์‡„๋ง ์ด๋”๋„ท ๊ณ ์ • IP ์„ค์ •โœ…
K3s 3-Node ํด๋Ÿฌ์Šคํ„ฐ ์กฐ์ธ ์™„๋ฃŒโœ…
Longhorn 3-Node HA ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑโœ…
Master ๋…ธ๋“œ Control Plane ๊ฒฉ๋ฆฌ (Taint)โœ…

ํ•˜์ง€๋งŒ ์ง„์งœ ๊ณ ๋‚œ์€ ๋‹ค์Œ ํŽธ์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋‚ด๋ง DHCP๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์™€ IP ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋ฉด์„œ MetalLB ์„ค์น˜๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด๋ฅผ ๋ฌด๋„ˆ๋œจ๋ฆฌ๋Š” ์‚ฌ๊ฑด์ด ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๊ฑฐ๋“ ์š”.

๐Ÿ”— ๋‹ค์Œ ํŽธ: 3ํŽธ โ€” ์‚ฌ๋‚ด๋ง DHCP ์ถฉ๋Œ๊ณผ K3s ์ „๋ฉด ์žฌ๊ตฌ์ถ• + GitOps ํŒŒ์ดํ”„๋ผ์ธ ์™„์„ฑ ๐Ÿ”— ์ „์ฒด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๋กœ๊ทธ: GitHub Wiki โ€” Troubleshooting & Operations Log