Kubernetes๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ”ํžˆ ์ €์ง€๋ฅด๋Š” 10๊ฐ€์ง€ ์‹ค์ˆ˜

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: ์ด ๊ธ€์˜ ์ €์ž๋Š” ์ฒด์ฝ”์˜ ์†Œ๊ทœ๋ชจ ํšŒ์‚ฌ์ธ ํŒŒ์ดํ”„ํ…Œ์ผ(pipetail)์˜ ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜๊ณผ ๊ด€๋ จ๋œ [๋•Œ๋•Œ๋กœ ์ง„๋ถ€ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ] ๋งค์šฐ ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ์™€ ์˜คํ•ด์˜ ๋ฉ‹์ง„ ๋ชฉ๋ก์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ”ํžˆ ์ €์ง€๋ฅด๋Š” 10๊ฐ€์ง€ ์‹ค์ˆ˜

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

์ด ๊ธฐ์‚ฌ์—๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋ฆฌ์†Œ์Šค: ์š”์ฒญ ๋ฐ ์ œํ•œ

์ด ํ•ญ๋ชฉ์€ ํ™•์‹คํžˆ ๊ฐ€์žฅ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ๋ชฉ๋ก์—์„œ XNUMX์œ„๋ฅผ ์ฐจ์ง€ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ CPU ์š”์ฒญ ์ „ํ˜€ ์ง€์ •๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๊ฐ’์ด ๋งค์šฐ ๋‚ฎ์Œ (๊ฐ ๋…ธ๋“œ์— ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ํฌ๋“œ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด) ๋”ฐ๋ผ์„œ ๋…ธ๋“œ๊ฐ€ ๊ณผ๋ถ€ํ•˜๋ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ๊ฐ€ ๋†’์€ ์‹œ๊ฐ„์—๋Š” ๋…ธ๋“œ์˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์ด ์™„์ „ํžˆ ํ™œ์šฉ๋˜๊ณ  ํŠน์ • ์›Œํฌ๋กœ๋“œ๋Š” ๋…ธ๋“œ์—์„œ "์š”์ฒญํ•œ" ๊ฒƒ๋งŒ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. CPU ์กฐ์ ˆ. ์ด๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„, ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐ ๊ธฐํƒ€ ๋ถˆ์พŒํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ตœ๊ทผ ๋‹ค๋ฅธ ๋ฒˆ์—ญ์—์„œ ์ฝ์–ด๋ณด์„ธ์š”: โ€œKubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ" - ์•ฝ. ๋ฒˆ์—ญ)

์ตœ๊ณ ์˜ ๋…ธ๋ ฅ (๊ทน๋„๋กœ ์•„๋‹ˆ ๊ถŒ์žฅ):

resources: {}

๋งค์šฐ ๋‚ฎ์€ CPU ์š”์ฒญ(๋งค์šฐ ์•„๋‹ˆ ๊ถŒ์žฅ):

   resources:
      Requests:
        cpu: "1m"

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

๊ณผ๋„ํ•œ ์„ ํƒ (์˜ค๋ฒ„ ์ปค๋ฐ‹) ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋Š” ๋” ํฐ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU ํ•œ๋„์— ๋„๋‹ฌํ•˜๋ฉด ํด๋ก ์ฃผ๊ธฐ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ๋˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์— ๋„๋‹ฌํ•˜๋ฉด ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ด€์ฐฐํ•œ ์ ์ด ์žˆ๋‚˜์š”? OOMํ‚ฌ? ์˜ˆ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ์„ ํ•œ๋„๋กœ ์„ค์ •ํ•˜์—ฌ(์•„๋ž˜ ์˜ˆ์™€ ๊ฐ™์ด) ๋ณด์žฅ๋œ QoS(์„œ๋น„์Šค ํ’ˆ์งˆ)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”. ํ—ค๋‹ ์ œ์ด์ฝฅ์Šค ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (Zalando์˜ ์ˆ˜์„ ์—”์ง€๋‹ˆ์–ด)

๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅ (OOMkill์ด ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๋†’์•„์ง):

   resources:
      requests:
        memory: "128Mi"
        cpu: "500m"
      limits:
        memory: "256Mi"
        cpu: 2

๋ณด์žฅ:

   resources:
      requests:
        memory: "128Mi"
        cpu: 2
      limits:
        memory: "128Mi"
        cpu: 2

๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ž ์žฌ์ ์œผ๋กœ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ณผ ๋ฉ”ํŠธ๋ฆญ ์„œ๋ฒ„ Pod(๋ฐ ๊ทธ ์•ˆ์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ)๋ณ„ ํ˜„์žฌ CPU ๋ฆฌ์†Œ์Šค ์†Œ๋น„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

kubectl top pods
kubectl top pods --containers
kubectl top nodes

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

VerticalPodAutoscaler ๊ทธ๊ฒƒ์€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์ž๋™ํ™”ํ•˜๋‹ค ์ด ๊ณผ์ •. CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๋‚ด์—ญ์„ ์ถ”์ ํ•˜๊ณ  ์ด ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์š”์ฒญ ๋ฐ ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ปดํ“จํŒ… ์„ฑ๋Šฅ์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•ญ์ƒ ํ…ŒํŠธ๋ฆฌ์Šค ๊ฒŒ์ž„์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ฎ์€ ํ‰๊ท  ์†Œ๋น„(์˜ˆ: 10%)๋กœ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ์žˆ๋‹ค๋ฉด AWS Fargate ๋˜๋Š” Virtual Kubelet ๊ธฐ๋ฐ˜ ์ œํ’ˆ์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„๋ฆฌ์Šค/์ข…๋Ÿ‰์ œ ๊ฒฐ์ œ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์—์„œ๋Š” ๋” ์ €๋ ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ํ™œ๋™์„ฑ ๋ฐ ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ

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

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

์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ข…์ข… ์„œ๋กœ ํ˜ผ๋™๋ฉ๋‹ˆ๋‹ค.

  • ์ƒ๋™๊ฐ โ€” "์ƒ์กด ๊ฐ€๋Šฅ์„ฑ" ๊ฒ€์‚ฌ - ์‹คํŒจํ•  ๊ฒฝ์šฐ ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค€๋น„ โ€” ์ค€๋น„ ํ™•์ธ, ์‹คํŒจํ•˜๋ฉด Kubernetes ์„œ๋น„์Šค์—์„œ ํฌ๋“œ ์—ฐ๊ฒฐ์„ ๋Š์Šต๋‹ˆ๋‹ค(์ด๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). kubectl get endpoints) ๋‹ค์Œ ํ™•์ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํŠธ๋ž˜ํ”ฝ์ด ๋„์ฐฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€ ๊ฒ€์‚ฌ ๋ชจ๋‘ ํฌ๋“œ์˜ ์ „์ฒด ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์˜คํ•ด๋Š” ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘ ์‹œ์—๋งŒ ์‹คํ–‰๋˜์–ด ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํฌ๋“œ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(Ready) ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์‚ฌ์šฉ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

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

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

๊ณตํ†ต ์ข…์†์„ฑ์ด ์‹คํŒจํ•  ๋•Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๊ฒ€์‚ฌ ๋ชจ๋‘ ์‹คํŒจํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  Pod์— ๊ณ„๋‹จ์‹(๋ˆˆ์‚ฌํƒœ์™€ ๊ฐ™์€) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด์„œ, ์ž์‹ ์—๊ฒŒ ํ•ด๋ฅผ ๋ผ์น˜ ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

3. ๊ฐ HTTP ์„œ๋น„์Šค์— ๋Œ€ํ•œ LoadBalancer

์•„๋งˆ๋„ ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ์™ธ๋ถ€๋กœ ์ „๋‹ฌํ•˜๋ ค๋Š” HTTP ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋น„์Šค๋ฅผ ์—ด๋ฉด type: LoadBalancer, ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ(์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)๋Š” ์™ธ๋ถ€ LoadBalancer(๋ฐ˜๋“œ์‹œ L7์—์„œ ์‹คํ–‰๋  ํ•„์š”๋Š” ์—†์ง€๋งŒ L4์—์„œ๋„ ์‹คํ–‰๋จ)๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ˜‘์ƒํ•˜๋ฉฐ ์ด๋Š” ๋น„์šฉ(์™ธ๋ถ€ ์ •์  IPv4 ์ฃผ์†Œ, ์ปดํ“จํŒ… ์„ฑ๋Šฅ, ์ดˆ๋‹น ์ฒญ๊ตฌ)์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ) ๊ทธ๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์™ธ๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. type: NodePort. ์•„๋‹ˆ๋ฉด ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. nginx-์ˆ˜์‹ -์ปจํŠธ๋กค๋Ÿฌ (๋˜๋Š” Traefik), ๋ˆ„๊ฐ€ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด ๋  ๊ฒƒ์ธ๊ฐ€? ๋…ธ๋“œํฌํŠธ ์™ธ๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์™€ ์—ฐ๊ฒฐ๋œ ์—”๋“œํฌ์ธํŠธ์ด๋ฉฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์ž…๊ตฌ-์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค.

์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด(๋งˆ์ดํฌ๋กœ) ์„œ๋น„์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "ํ†ต์‹ "ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐIP DNS๋ฅผ ํ†ตํ•œ ๋‚ด์žฅํ˜• ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜. ๊ณต์šฉ DNS/IP๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ง€์—ฐ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํด๋Ÿฌ์Šคํ„ฐ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ ํ™•์žฅ

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

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

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

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

5. IAM/RBAC ๊ธฐ๋Šฅ ๋ฌด์‹œ

์˜๊ตฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ๊ฐ€์ง„ IAM ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์„ธ์š”. ๊ธฐ๊ณ„ ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ. ์—ญํ•  ๋ฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์•ก์„ธ์Šค ๊ตฌ์„ฑ (์„œ๋น„์Šค ๊ณ„์ •).

์šฐ๋ฆฌ๋Š” ์•ก์„ธ์Šค ํ‚ค(๋ฐ ๋ณด์•ˆ ๋น„๋ฐ€)๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ๊ณ  Cloud IAM์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ณด์•ˆ ๋น„๋ฐ€ ์ˆœํ™˜์„ ๋ฌด์‹œํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ž์ฃผ ์ ‘ํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๋Œ€์‹  IAM ์—ญํ•  ๋ฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Kubernetes๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ”ํžˆ ์ €์ง€๋ฅด๋Š” 10๊ฐ€์ง€ ์‹ค์ˆ˜

kube2iam์€ ์žŠ์–ด๋ฒ„๋ฆฌ๊ณ  ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ IAM ์—ญํ• ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์„ธ์š”(์— ์„ค๋ช…๋œ ๋Œ€๋กœ). ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”๋ชจ ์Šˆํ…ŒํŒ ๋ธŒ๋ผ๋‹ˆ(ล tฤ›pรกn Vranรฝ):

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-app-role
  name: my-serviceaccount
  namespace: default

์ฃผ์„ ํ•˜๋‚˜. ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์ฃ ?

๋˜ํ•œ ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ์ธ์Šคํ„ด์Šค ํ”„๋กœํ•„ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ๋งˆ์„ธ์š”. admin ะธ cluster-adminํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด. ์ด๋Š” ํŠนํžˆ RBAC K8์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ๋” ์–ด๋ ต์ง€๋งŒ ํ™•์‹คํžˆ ๋…ธ๋ ฅํ• ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

6. Pod์— ๋Œ€ํ•œ ์ž๋™ ๋ฐ˜์นœํ™”์„ฑ์— ์˜์กดํ•˜์ง€ ๋งˆ์„ธ์š”.

๋…ธ๋“œ์— ์ผ๋ถ€ ๋ฐฐํฌ์˜ ๋ณต์ œ๋ณธ์ด XNUMX๊ฐœ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋–จ์–ด์ง€๊ณ  ๋ชจ๋“  ๋ณต์ œ๋ณธ๋„ ํ•จ๊ป˜ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋ถˆ์พŒํ•œ ์ƒํ™ฉ์ด์ฃ ? ๊ทธ๋Ÿฐ๋ฐ ์™œ ๋ชจ๋“  ๋ณต์ œ๋ณธ์ด ๋™์ผํ•œ ๋…ธ๋“œ์— ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? Kubernetes๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ(HA)์„ ์ œ๊ณตํ•ด์•ผ ํ•˜์ง€ ์•Š๋‚˜์š”?!

๋ถˆํ–‰ํ•˜๊ฒŒ๋„ Kubernetes ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ž์ฒด์ ์œผ๋กœ ๋ณ„๋„์˜ ์กด์žฌ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋ฐ˜์นœํ™”์„ฑ) ํฌ๋“œ์šฉ. ๋ช…์‹œ์ ์œผ๋กœ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// ะพะฟัƒั‰ะตะฝะพ ะดะปั ะบั€ะฐั‚ะบะพัั‚ะธ
      labels:
        app: zk
// ะพะฟัƒั‰ะตะฝะพ ะดะปั ะบั€ะฐั‚ะบะพัั‚ะธ
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                    - zk
              topologyKey: "kubernetes.io/hostname"

๊ทธ๊ฒŒ ๋‹ค์•ผ. ์ด์ œ ํฌ๋“œ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์˜ˆ์•ฝ๋ฉ๋‹ˆ๋‹ค(์ด ์กฐ๊ฑด์€ ์˜ˆ์•ฝ ์ค‘์—๋งŒ ํ™•์ธ๋˜๊ณ  ์ž‘์—… ์ค‘์—๋Š” ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. requiredDuringSchedulingIgnoredDuringExecution).

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” podAntiAffinity ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ: topologyKey: "kubernetes.io/hostname", - ๋‹ค๋ฅธ ๊ฐ€์šฉ์„ฑ ์˜์—ญ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์™„์ „ํ•œ HA๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ด ์ฃผ์ œ๋ฅผ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

7. PodDisruptionBudget ๋ฌด์‹œ

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ํ”„๋กœ๋•์…˜ ๋กœ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์„ธ์š”. ์ฃผ๊ธฐ์ ์œผ๋กœ ๋…ธ๋“œ์™€ ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด๋ฅผ ์—…๋ฐ์ดํŠธ(๋˜๋Š” ์„œ๋น„์Šค ํ•ด์ œ)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. PodDisruptionBudget(PDB)์€ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž์™€ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์„œ๋น„์Šค ๋ณด์ฆ ๊ณ„์•ฝ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

PDB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋…ธ๋“œ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์„œ๋น„์Šค ์ค‘๋‹จ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: zookeeper

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

์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

8. ๊ณตํ†ต ํด๋Ÿฌ์Šคํ„ฐ์˜ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ๋˜๋Š” ํ™˜๊ฒฝ

Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค (๋„ค์ž„์ŠคํŽ˜์ด์Šค) ๊ฐ•ํ•œ ์ ˆ์—ฐ์„ ์ œ๊ณตํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

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

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

9. ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ ์ •์ฑ…: ํด๋Ÿฌ์Šคํ„ฐ

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์ด ๊ธฐ๋ณธ ์ •์ฑ…์ด ์„ค์ •๋œ NodePort์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ๋งค์šฐ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. externalTrafficPolicy: Cluster. ์ฆ‰, ๋…ธ๋“œํฌํŠธ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ์— ์—ด๋ ค ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์„œ๋น„์Šค(ํฌ๋“œ ์„ธํŠธ)์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ”ํžˆ ์ €์ง€๋ฅด๋Š” 10๊ฐ€์ง€ ์‹ค์ˆ˜

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

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

์ด๋ฏธ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. Traefik ๋˜๋Š” nginx-์ˆ˜์‹ -์ปจํŠธ๋กค๋Ÿฌ NodePort ์—”๋“œํฌ์ธํŠธ(๋˜๋Š” NodePort๋ฅผ ์‚ฌ์šฉํ•˜๋Š” LoadBalancer)๋กœ HTTP ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๊ณ  ์ด ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ะ’ ์ด ๊ฐ„ํ–‰๋ฌผ externalTrafficPolicy์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10. ํด๋Ÿฌ์Šคํ„ฐ์— ์–ฝ๋งค์ด์ง€ ๋ง๊ณ  ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ๋‚จ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

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

์ „ํ˜•์ ์ธ ์ด์•ผ๊ธฐ(์‹ค์ œ ์‚ฌ๊ฑด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ): ๋ชจ๋“  ๊ฒƒ์ด ๊ฐœ๋… ์ฆ๋ช…์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ž๋ž‘์Šค๋Ÿฌ์šด ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธโ€ฆ ๋ช‡ ๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ƒ์‚ฐ์— ์‚ฌ์šฉ๋˜๋ฉฐ ๋ชจ๋‘๊ฐ€ ๋งŒ์ง€๊ธฐ๋ฅผ ๋‘๋ ค์›Œํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํŽซ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์—ฐ์Šตํ•˜๋ฉด์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์žฌํ•ด ๋ณต๊ตฌ (์ด๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง - ๋Œ€๋žต. ๋ฒˆ์—ญ). ๋˜ํ•œ ์ปจํŠธ๋กค ๋ ˆ์ด์–ด์—์„œ ์ž‘์—…ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ œ์–ด ํ‰๋ฉด). ๊ทธ๋ฅผ ๋งŒ์ง€๊ธฐ๋ฅผ ๋‘๋ ค์›Œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ง•์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐํƒ€ ์ฃฝ์€? ์—ฌ๋Ÿฌ๋ถ„, ์ •๋ง ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!

๋ฐ˜๋ฉด์— ๊ทธ๊ฒƒ์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ํ‘น ๋น ์ ธ์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ปจํŠธ๋กค ๋ ˆ์ด์–ด๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๋Š” ํšŒ์ „ ์—†์ด ์ƒ์„ฑ๋œ ๋งŽ์€ ์ˆ˜์˜ ๊ฐ์ฒด ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ Helm์„ ์‚ฌ์šฉํ•  ๋•Œ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์ด๋ฏ€๋กœ configmaps/secrets์˜ ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์ œ์–ด ๊ณ„์ธต) ๋˜๋Š” kube-api ๊ฐ์ฒด์˜ ์ง€์†์ ์ธ ํŽธ์ง‘(์ž๋™ ํ™•์žฅ, CI/CD, ๋ชจ๋‹ˆํ„ฐ๋ง, ์ด๋ฒคํŠธ ๋กœ๊ทธ, ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ)์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ด€๋ฆฌํ˜• Kubernetes ๊ณต๊ธ‰์ž์™€์˜ SLA/SLO ๊ณ„์•ฝ์„ ํ™•์ธํ•˜๊ณ  ๋ณด์ฆ์— ์ฃผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŒ๋งค์ž๋Š” ๋ณด์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์–ด ๊ณ„์ธต ๊ฐ€์šฉ์„ฑ (๋˜๋Š” ๊ทธ ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ)์ด์ง€๋งŒ ๋ณด๋‚ด๋Š” ์š”์ฒญ์˜ p99 ์ง€์—ฐ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl get nodes, ๊ทธ๋ฆฌ๊ณ  10๋ถ„ ํ›„์—์•ผ ๋‹ต๋ณ€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์„œ๋น„์Šค ๊ณ„์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

11. ๋ณด๋„ˆ์Šค: ์ตœ์‹  ํƒœ๊ทธ ์‚ฌ์šฉ

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ด๋ฏธ ๊ณ ์ „์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์šฐ๋ฆฌ๋Š” ์“ฐ๋ผ๋ฆฐ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋ฐฐ์šด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํƒœ๊ทธ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ์ˆ ์„ ๋œ ์ž์ฃผ ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค. :latest ๋ฒ„์ „ ๊ณ ์ •์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์„ธ!

ECR ์ด๋ฏธ์ง€ ํƒœ๊ทธ์˜ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.; ์ด ๋†€๋ผ์šด ๊ธฐ๋Šฅ์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐœ์š”

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

๋‹ค์–‘ํ•œ ํŒ€์˜ ์‹คํŒจํ•œ ๊ฒฝํ—˜์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ด์•ผ๊ธฐ ๋ชจ์Œ ํ—ค๋‹ ์ œ์ด์ฝฅ์Šค.

์ด ๊ธฐ์‚ฌ์— ์ œ๊ณต๋œ ์˜ค๋ฅ˜ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Twitter(@MarekBartik, @MstrsObserver).

๋ฒˆ์—ญ๊ฐ€์˜ ์ถ”์‹ 

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

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