Kubernetes์— ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค์„ฏ ๊ฐ€์ง€ ์‹ค์ˆ˜

Kubernetes์— ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค์„ฏ ๊ฐ€์ง€ ์‹ค์ˆ˜Aris Dreamer์˜ ์‹คํŒจ

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Kubernetes๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(Helm์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ). ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

ํŒ€ Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ DevOps ์—”์ง€๋‹ˆ์–ด Julian Gindy์˜ ๊ธฐ์‚ฌ๋ฅผ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ด์ „ ๊ณผ์ •์—์„œ ์ž์‹ ์˜ ํšŒ์‚ฌ๊ฐ€ ์–ด๋–ค ํ•จ์ •์— ๋น ์กŒ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ™์€ ๊ฐˆํ€ด๋ฅผ ๋ฐŸ์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„: Pod ์š”์ฒญ ๋ฐ ์ œํ•œ ์„ค์ •

ํฌ๋“œ๊ฐ€ ์‹คํ–‰๋  ๊นจ๋—ํ•œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Kubernetes๋Š” ํŒŸ(Pod) ์Šค์ผ€์ค„๋ง ๋ฐ ์žฅ์•  ์กฐ์น˜(failover)์— ํƒ์›”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์ˆ˜๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํฌ๋“œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ๋ฐ ์ œํ•œ์— ๋Œ€ํ•œ ์š”์ฒญ์ด ํŒ์—…๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ๋ฐ ์ œํ•œ ์„ค์ •์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์Ÿ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์ด๊ฒƒ์€ ๊ณผํ•™๋ณด๋‹ค ์˜ˆ์ˆ ์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์šฐ๋ฆฌ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ ์š”์ฒญ Pod๋ฅผ ์ตœ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์Šค์ผ€์ค„๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฌธ์„œ: ํ•„ํ„ฐ ๋‹จ๊ณ„๋Š” Pod๋ฅผ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ์ง‘ํ•ฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด PodFitsResources ํ•„ํ„ฐ๋Š” ํฌ๋“œ์˜ ํŠน์ • ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ์ถฉ์กฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋…ธ๋“œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‹ค์ œ๋กœ ๋…ธ๋“œ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๊ฐ ํฌ๋“œ์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์˜ˆ์•ฝํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์˜ˆ์•ฝ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ๊ณ  ์ผ๋ถ€ ํฌ๋“œ๋Š” ๋ฆฌ์†Œ์Šค ์š”์ฒญ์ด ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์™„์ „ํžˆ ์˜ˆ์•ฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ข…์ข… ํฌ๋“œ๋ฅผ "์••์ถ•"ํ•˜๊ณ  ์ œ์–ด ํ‰๋ฉด์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์˜ ์–‘์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์˜ˆ์•ฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

ํฌ๋“œ ํ•œ๋„ ํฌ๋“œ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ œํ•œ์ž…๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•  ์ตœ๋Œ€ ๋ฆฌ์†Œ์Šค ์–‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๊ณต์‹ ๋ฌธ์„œ: ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ด 4GiB์ด๋ฉด kubelet(๋ฐ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„)์ด ์ด๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ง€์ •๋œ ๋ฆฌ์†Œ์Šค ํ•œ๋„ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋œ ๋ฉ”๋ชจ๋ฆฌ ์–‘๋ณด๋‹ค ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹œ์Šคํ…œ ์ปค๋„์ด "๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ"(OOM) ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ํ•ญ์ƒ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์ด ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒ์ ์œผ๋กœ๋Š” ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ํฌ๋“œ์˜ ๋ฆฌ์†Œ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œํ•œ์„ ์„ค์ •ํ•˜๋Š” ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ์„ค์ •ํ•  ๊ฐ’์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋‹ค์Œ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์˜ ๊ธฐ๋ณธ ์ˆ˜์ค€์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ  ํฌ๋“œ ๋ฆฌ์†Œ์Šค(๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ”„๋กœ์„ธ์„œ)์˜ ์‚ฌ์šฉ์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.
  2. Pod ์š”์ฒญ์„ ์ž„์˜๋กœ ๋‚ฎ์€ ๊ฐ’(์š”์ฒญ ๊ฐ’์˜ ์•ฝ 5๋ฐฐ ๋ฆฌ์†Œ์Šค ์ œํ•œ)์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ์ˆ˜์ค€์ด ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์–ด ์ข…์ข… ์ˆ˜์ˆ˜๊ป˜๋ผ ๊ฐ™์€ Go ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋“œ์—๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถฉ๋ถ„ํ•œ ๋Œ€์ƒ ๋…ธ๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์†Œ์Šค ์ œํ•œ์ด ๋†’์„์ˆ˜๋ก ์˜ˆ์•ฝ์ด ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

4GB ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค ์ œํ•œ์ด ๋งค์šฐ ๋†’์€ ๊ฒฝ๋Ÿ‰ ์›น ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์„ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ์ƒˆ ํฌ๋“œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 4GB ์ด์ƒ์ธ ๋…ธ๋“œ์—์„œ ์˜ˆ์•ฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ด ํฌ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋„์ž…ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ๋‹ค์†Œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ณ  ์›ํ™œํ•œ ํ™•์žฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค ์š”์ฒญ๊ณผ ์ œํ•œ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„: ํ™œ์„ฑ ๋ฐ ์ค€๋น„ ํ…Œ์ŠคํŠธ ์„ค์ •

์ด๊ฒƒ์€ Kubernetes ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ž์ฃผ ๋…ผ์˜๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฏธ๋ฌ˜ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. Liveness ๋ฐ Readiness ํ…Œ์ŠคํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์•ˆ์ •์ ์ธ ์ž‘๋™์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๊ณ  ๋‹ค์šดํƒ€์ž„์„ ์ตœ์†Œํ™”ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์ž˜ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์— ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‘ ์ƒ˜ํ”Œ์ด ๋ฌด์—‡์ธ์ง€ ์š”์•ฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒ๋™๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์‹คํŒจํ•˜๋ฉด kubelet์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ ์ •์ฑ…์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— Liveness Probe๊ฐ€ ์žฅ์ฐฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ƒํƒœ๋Š” ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฌธ์„œ.

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์ €๋ ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž์ฃผ ์‹คํ–‰๋˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ ์ค‘์ž„์„ Kubernetes์— ์•Œ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1์ดˆ๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋„๋ก ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด ์ดˆ๋‹น XNUMX๊ฐœ์˜ ์š”์ฒญ์ด ์ถ”๊ฐ€๋˜๋ฏ€๋กœ ์ด ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‚ฌ์—์„œ Liveness ํ…Œ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ(์˜ˆ: ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ)๋ฅผ ์™„์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ 200 ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— "์ƒํƒœ" ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๊ณ  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค(์•„์ง ํŠธ๋ž˜ํ”ฝ์€ ์•„๋‹˜).

์ƒ˜ํ”Œ ์ค€๋น„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์—”๋“œํฌ์ธํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํฌ๋“œ์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค์˜ ์—”๋“œํฌ์ธํŠธ์—์„œ ํฌ๋“œ์˜ IP ์ฃผ์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Kubernetes ์„ค๋ช…์„œ์—๋„ ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์š”์ฒญ์„ ์ˆ˜๋ฝํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐฑ์—”๋“œ์— ๋„๋‹ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์•ก์„ธ์Šคํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋งŽ์€ ๋…ผ์Ÿ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ—ค๋“œ(๊ฒ€์‚ฌ๋Š” ๋นˆ๋ฒˆํ•˜์ง€๋งŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ)๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ผ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•œ ํ›„์—๋งŒ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์ค€๋น„๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ์„ค๊ณ„๋œ ์ค€๋น„ ํ‰๊ฐ€ํŒ์€ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๋ฐฐํฌ ์ค‘ ๋‹ค์šดํƒ€์ž„์„ ์—†์•ด์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ค€๋น„ ์ƒํƒœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฟผ๋ฆฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ ํ•œ ์ €๋ ดํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SELECT small_item FROM table LIMIT 1

๋‹ค์Œ์€ Kubernetes์—์„œ ์ด ๋‘ ๊ฐ’์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

livenessProbe: 
 httpGet:   
   path: /api/liveness    
   port: http 
readinessProbe:  
 httpGet:    
   path: /api/readiness    
   port: http  periodSeconds: 2

๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • initialDelaySeconds - ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘๊ณผ ํ”„๋กœ๋ธŒ ์‹œ์ž‘ ์‚ฌ์ด์— ๊ฒฝ๊ณผํ•  ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.
  • periodSeconds - ์ƒ˜ํ”Œ ์‹คํ–‰ ์‚ฌ์ด์˜ ๋Œ€๊ธฐ ๊ฐ„๊ฒฉ.
  • timeoutSeconds โ€” ํฌ๋“œ๊ฐ€ ๋น„์ƒ ์ƒํƒœ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์‹œ๊ฐ„ ์ดˆ๊ณผ.
  • failureThreshold ์žฌ์‹œ์ž‘ ์‹ ํ˜ธ๊ฐ€ ํŒŸ(Pod)์œผ๋กœ ์ „์†ก๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์‹คํŒจ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • successThreshold Pod๊ฐ€ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ ์ „(Pod๊ฐ€ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ๋ณต๊ตฌ๋  ๋•Œ ์‹คํŒจ ํ›„) ์„ฑ๊ณต์ ์ธ ์‹œ๋„ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„: ํฌ๋“œ์˜ ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์„ค์ •

Kubernetes์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” "ํ”Œ๋žซ" ๋„คํŠธ์›Œํฌ ์ง€ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ด๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž ์žฌ์ ์ธ ๋ณด์•ˆ ๋ฌธ์ œ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์ทจ์•ฝํ•œ ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ํฌ๋“œ์— ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๋ณด์•ˆ ์˜์—ญ์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์ด ์—ฌ๊ธฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์€ ํฌ๋“œ ๊ฐ„์˜ ํ—ˆ์šฉ๋˜๋Š” ์—ฐ๊ฒฐ๊ณผ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์€ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:  
 name: default-deny-ingress
spec:  
 podSelector: {}  
 policyTypes:  
   - Ingress

์ด ๊ตฌ์„ฑ์˜ ์‹œ๊ฐํ™”:

Kubernetes์— ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค์„ฏ ๊ฐ€์ง€ ์‹ค์ˆ˜
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
์„ธ๋ถ€ ์ •๋ณด ์—ฌ๊ธฐ์—.

XNUMX๋‹จ๊ณ„: ํ›„ํฌ ๋ฐ ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋™์ž‘

์šฐ๋ฆฌ์˜ ์ฃผ์š” ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ค‘๋‹จ ์‹œ๊ฐ„ ์—†์ด Kubernetes์— ๋ฐฐํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒํ•˜๊ณ  ์‚ฌ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•˜๋Š” ์˜ต์…˜์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Nginx์—. ์ด๋Ÿฌํ•œ Pod๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐํฌํ•  ๋•Œ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ํ™œ์„ฑ ์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์—ฐ๊ตฌ ๋์— Kubernetes๋Š” ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— Nginx ์—ฐ๊ฒฐ์ด ์†Œ์ง„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ์˜ ๋„์›€์œผ๋กœ ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ค‘๋‹จ ์‹œ๊ฐ„์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

lifecycle: 
 preStop:
   exec:
     command: ["/usr/local/bin/nginx-killer.sh"]

ํ•˜์ง€๋งŒ nginx-killer.sh:

#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
   echo "Waiting while shutting down nginx..."
   sleep 10
done

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

๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์ฒด๊ณ„๋Š” ๊ธฐ๋ณธ ๋ชจ๋“ˆ์— ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ณตํ•˜๋Š” init ์ปจํ…Œ์ด๋„ˆ์˜ ๋น„๋ฐ€์— ์•ก์„ธ์Šคํ•˜์—ฌ ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ ์ž์ฒด์—์„œ ๋น„๋ฐ€์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์•ก์„ธ์Šค๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ‰์†Œ์™€ ๊ฐ™์ด ๋ฌธ์„œ์—์„œ ์ธ์šฉ: ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ณด์•ˆ์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ฝ”๋“œ ๋˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

XNUMX๋‹จ๊ณ„: ์ปค๋„ ๊ตฌ์„ฑ

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํฌ๋“œ์— ๋Œ€ํ•œ ์ปค๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด๋ฆฐ ์—ฐ๊ฒฐ์˜ ์ตœ๋Œ€ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

initContainers:
  - name: sysctl
     image: alpine:3.10
     securityContext:
         privileged: true
      command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]

์ด๊ฒƒ์€ ์ข…์ข… ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณผ๋„ํ•œ ๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์„ค์ • ์ค‘ ์ผ๋ถ€๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ๋ฐ ๋‹ค๋ฅธ ๊ฐ’ ์„ค์ • - ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ๊ณต์‹ ๋ฌธ์„œ์—์„œ.

๊ฒฐ๋ก ์ ์œผ๋กœ

Kubernetes๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์›ํ™œํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์•ˆ "๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ฃผ๊ธฐ"๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ , ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋ฉ”ํŠธ๋ฆญ ๋ฐ ํ™•์žฅ ๋™์ž‘์„ ๊ด€์ฐฐํ•˜๊ณ , ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ์„ ์กฐ์ •ํ•œ ๋‹ค์Œ, ์ด ์ฃผ๊ธฐ๋ฅผ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ํ˜„์‹ค์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์–ด๋–ค ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋จผ์ € ์ค‘๋‹จ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ์ด์ƒ์„ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ฐ˜๋ณต์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜์—ด๋œ ๊ถŒ์žฅ ์‚ฌํ•ญ ์ค‘ ๋ช‡ ๊ฐ€์ง€๋งŒ์œผ๋กœ๋„ ์„ฑ๊ณต์„ ๊ฑฐ๋‘๊ธฐ์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋ณด๋‹ค ์‹ฌ์ธต์ ์ธ ์‚ฌ์šฉ์ž ์ง€์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ์Šค์Šค๋กœ์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•˜์‹ญ์‹œ์˜ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์†Œ๋น„ํ•˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ์–‘์€ ์–ผ๋งˆ์ด๋ฉฐ ์ด ์–‘์€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ๊นŒ์š”?
  2. ์‹ค์ œ ํ™•์žฅ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์•ฑ์ด ํ‰๊ท ์ ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? ์ตœ๋Œ€ ํŠธ๋ž˜ํ”ฝ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
  3. ์„œ๋น„์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๋ ค๋ฉด ์ƒˆ ํŒŸ(Pod)์„ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  4. ํฌ๋“œ๋Š” ์–ผ๋งˆ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋‚˜์š”? ์ „ํ˜€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋‹ค์šดํƒ€์ž„ ์—†์ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  5. ๋ณด์•ˆ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์†์ƒ๋œ ํŒŸ(Pod)์˜ ์†์ƒ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์„œ๋น„์Šค์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ถŒํ•œ์ด๋‚˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Kubernetes๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์ˆ˜์ฒœ ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋†€๋ผ์šด ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ๊ตฌํ˜„์— ์กฐ๊ธˆ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ ๋ฐ–์— ์ฝ์„ ๋‚ด์šฉ:

  1. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋ฐ Kubernetes๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€.
  2. Kubernetes๋ฅผ ์œ„ํ•œ 90๊ฐœ ์ด์ƒ์˜ ์œ ์šฉํ•œ ๋„๊ตฌ: ๋ฐฐํฌ, ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ณด์•ˆ ๋“ฑ.
  3. Telegram์˜ Kubernetes ์ฃผ๋ณ€ ์ฑ„๋„.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€