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

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

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

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

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๊ฐ€์žฅ ํ”ํ•œ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์ด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

์ด ์ง€์ ์€ ํ™•์‹คํžˆ ๊ฐ€์žฅ ๋งŽ์€ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.

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

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

resources: {}

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

   resources:
      Requests:
        cpu: "1m"

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

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

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

๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅ (OOMkilled๋ฅผ ๋ฐ›์„ ํ™•๋ฅ ์ด ๋” ๋†’์Œ):

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

๋ณด์žฅ:

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

๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋ฌด์—‡์ด โ€‹โ€‹๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‚˜์š”?

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

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

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

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

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

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

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

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

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

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

๋‘ ํ…Œ์ŠคํŠธ ๋ชจ๋‘ POD์˜ ์ „์ฒด ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.. ์ด๊ฑด ๋งค์šฐ ์ค‘์š”ํ•ด์š”.

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

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

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

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

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

ํด๋Ÿฌ์Šคํ„ฐ์— ์™ธ๋ถ€ ์„ธ๊ณ„์— ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์€ HTTP ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

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

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

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

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

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

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

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

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

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

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

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

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

kube2iam์„ ์žŠ๊ณ  ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ IAM ์—ญํ• ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์„ธ์š”(๋‹ค์Œ์—์„œ ์„ค๋ช…). ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”๋ชจ ์Šคํ…ŒํŒ ๋ธŒ๋ผ๋‹ˆ):

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, ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด์š”. ํŠนํžˆ K8s RBAC์—์„œ๋Š” ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ๋” ์–ด๋ ต์ง€๋งŒ, ๊ทธ๋งŒํ•œ ๋…ธ๋ ฅ์€ ์ถฉ๋ถ„ํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

6. ํฌ๋“œ์— ๋Œ€ํ•œ ์ž๋™ ์•ˆํ‹ฐ ์นœํ™”์„ฑ์— ์˜์กดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

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

์•ˆํƒ€๊น๊ฒŒ๋„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ทธ ์ž์ฒด๋กœ ๋ณ„๋„๋กœ ์กด์žฌํ•˜๋Š” ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋ฐ˜์นœํ™”์„ฑ) ํฌ๋“œ์šฉ. ๋‹ค์Œ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// ะพะฟัƒั‰ะตะฝะพ ะดะปั ะบั€ะฐั‚ะบะพัั‚ะธ
      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

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

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

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

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

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

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

9. externalTrafficPolicy: ํด๋Ÿฌ์Šคํ„ฐ

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

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

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

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

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

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

10. ํด๋Ÿฌ์Šคํ„ฐ์— ์ง‘์ฐฉํ•˜์ง€ ๋ง๊ณ  ์ œ์–ด ํ‰๋ฉด์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

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

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

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

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

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

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

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

ECR ์ด๋ฏธ์ง€ ํƒœ๊ทธ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.; ์ด ๋†€๋ผ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์•Œ์•„๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐœ์š”

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

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

์ด ๊ธฐ์‚ฌ์— ๋‚˜์—ด๋œ ์˜ค๋ฅ˜ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์€ Twitter์—์„œ ์ €ํฌ์—๊ฒŒ ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.@๋งˆ๋ ‰๋ฐ”ํ‹ฑ, @MstrsObserver).

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

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

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster