๐ŸŽฏ EKS ๋…ธ๋“œ ์šด์˜ ํšจ์œจํ™”: ๋นŒ๋“œ ๋…ธ๋“œ์™€ ์šด์˜ ๋…ธ๋“œ ๋ถ„๋ฆฌ๋กœ ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”ํ•˜๊ธฐ

sangjinsuยท2025๋…„ 5์›” 11์ผ

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Amazon EKS(Elastic Kubernetes Service)๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์šฉ๋„์˜ ์„œ๋ฒ„โ€”ํ…Œ์ŠคํŠธ, ์‚ฌ๋‚ด์šฉ, ๊ฐœ๋ฐœ, ๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ ์ž‘์—…โ€”๋ฅผ ๋‹จ์ผ EKS ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์šด์˜ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ์ด 5๋Œ€์˜ ๋…ธ๋“œ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ถ„์„ํ•ด ๋ณธ ๊ฒฐ๊ณผ, ๊ธฐ๋Œ€๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ํ™œ์šฉ๋ฅ ์„ ๋ณด์ด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๋ฆฌ์†Œ์Šค ์˜ค๋ฒ„ํ”„๋กœ๋น„์ €๋‹(over-provisioning)์„ ์˜์‹ฌํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ตœ์ ํ™” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Š ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ  ์ง„๋‹จ ๊ฒฐ๊ณผ

์šฐ์„  ๊ฐ ๋…ธ๋“œ์˜ ํ‰๊ท  ์‚ฌ์šฉ๋ฅ ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

  • CPU ์‚ฌ์šฉ๋ฅ : ๋Œ€๋ถ€๋ถ„์˜ ๋…ธ๋“œ๊ฐ€ 2% ๋‚ด์™ธ์˜ ๋งค์šฐ ๋‚ฎ์€ ์ˆ˜์ค€
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ : 30% ์ด๋‚ด๋กœ ์•ˆ์ •์ ์ธ ์ˆ˜์ค€
  • ์˜ˆ์™ธ ์ƒํ™ฉ: ๋นŒ๋“œ ์ž‘์—…์ด ์‹คํ–‰๋  ๋•Œ ํ•œ ๋…ธ๋“œ์—์„œ๋งŒ ์ผ์‹œ์ ์œผ๋กœ CPU 100% ์‚ฌ์šฉ

์ฆ‰, ์ง€์†์ ์ธ ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ์€ ์—†์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์œ ํœด ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ๋Š” ๊ตฌ์กฐ์˜€์Šต๋‹ˆ๋‹ค.


๐Ÿงฉ ๋นŒ๋“œ ๋…ธ๋“œ์™€ ์šด์˜ ๋…ธ๋“œ์˜ ๋ถ„๋ฆฌ ์ „๋žต

์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ์šด์˜ ๋…ธ๋“œ์™€ ๋นŒ๋“œ ๋…ธ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ์žฌ์„ค๊ณ„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Terraform๊ณผ Argo Workflow๋ฅผ ํ™œ์šฉํ•ด ์ธํ”„๋ผ ๋ฐ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ†ตํ•ด ๋ถ„๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค:

๐Ÿ›ก๏ธ Taint์™€ Toleration์„ ํ™œ์šฉํ•œ ๋…ธ๋“œ ์ œ์–ด

Kubernetes์˜ taint๋Š” ํŠน์ • ๋…ธ๋“œ์— ์ผ๋ฐ˜์ ์ธ ํŒŒ๋“œ๊ฐ€ ์Šค์ผ€์ค„๋˜์ง€ ์•Š๋„๋ก ๋ง‰๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ฆ‰, โ€œ์ด ๋…ธ๋“œ๋Š” ํŠน๋ณ„ํ•œ ๋ชฉ์ ์—๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ˆ ์•„๋ฌด ํŒŒ๋“œ๋‚˜ ๋“ค์–ด์˜ค์ง€ ๋งˆ๋ผโ€๋Š” ์˜๋ฏธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” toleration์€ ํŒŒ๋“œ๊ฐ€ ํŠน์ • taint๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์— ๋“ค์–ด๊ฐ€๋„ ๋˜๋Š” ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

โœ… ์˜ˆ์‹œ: Terraform์—์„œ ๋นŒ๋“œ ๋…ธ๋“œ์— taint ์„ค์ •

hcl
๋ณต์‚ฌํŽธ์ง‘
resource "aws_eks_node_group" "build_nodes" {
  node_group_name = "build-group"
  ...
  taints {
    key    = "workload"
    value  = "build"
    effect = "NO_SCHEDULE"
  }
}

โœ… ์˜ˆ์‹œ: Argo Workflow ํ…œํ”Œ๋ฆฟ์—์„œ ๋นŒ๋“œ ํŒŒ๋“œ์— toleration ์„ค์ •

yaml
๋ณต์‚ฌํŽธ์ง‘
- name: build-job
  template: build
  nodeSelector:
    purpose: build
  tolerations:
    - key: "workload"
      operator: "Equal"
      value: "build"
      effect: "NoSchedule"

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, build ํŒŒ๋“œ๋Š” ์˜ค์ง taint๊ฐ€ ์ ์šฉ๋œ ๋นŒ๋“œ ๋…ธ๋“œ์—์„œ๋งŒ ์Šค์ผ€์ค„๋˜๋ฉฐ,

์šด์˜ ํŒŒ๋“œ๋Š” ํ•ด๋‹น ๋…ธ๋“œ์— ์ ˆ๋Œ€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”ง ๋…ธ๋“œ ์ˆ˜ ๊ฐ์ถ•์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ ˆ๊ฐ

์ดˆ๊ธฐ์—๋Š” Required ์ˆ˜๊ฐ€ 4๋กœ ์„ค์ •๋œ ์šด์˜ ๋…ธ๋“œ ๊ทธ๋ฃน์„ 3๋Œ€๋กœ ์ค„์ด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์šด์˜ ๋…ธ๋“œ: 3๋Œ€
  • ๋นŒ๋“œ ์ „์šฉ ๋…ธ๋“œ: 1๋Œ€

์ธ์Šคํ„ด์Šค ํƒ€์ž…์ด ๋™์ผํ•˜๋‹ค๋Š” ์ „์ œํ•˜์—, ์ „์ฒด ๋…ธ๋“œ ์ˆ˜๋Š” 5 โ†’ 4๋Œ€๋กœ 20% ๊ฐ์†Œํ–ˆ์œผ๋ฉฐ, ์šด์˜์— ์ „ํ˜€ ์ง€์žฅ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„: ๋ฆฌ์†Œ์Šค ๋น„์šฉ ์ตœ์ ํ™”

์•„์ง ์ตœ์ ํ™”ํ•  ์—ฌ์ง€๋Š” ๋” ๋งŽ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ์˜ˆ์•ฝ๋œ ๋ฆฌ์†Œ์Šค(CPU/Memory) ์žฌ์ ๊ฒ€
    • ์‹ค์ œ ์š”์ฒญ๋Ÿ‰ ๋Œ€๋น„ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žกํ˜€ ์žˆ๋Š” request/limit ์„ค์ • ํ™•์ธ
  2. ๋…ธ๋“œ ์ธ์Šคํ„ด์Šค ํƒ€์ž… ๋ณ€๊ฒฝ ๊ฒ€ํ† 
    • ์šด์˜ ๋…ธ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ค‘์‹ฌ, ๋นŒ๋“œ ๋…ธ๋“œ๋Š” CPU ์ค‘์‹ฌ์œผ๋กœ ์ ์ ˆํ•œ ์ธ์Šคํ„ด์Šค ์œ ํ˜• ๋ณ€๊ฒฝ ๊ณ ๋ ค

โœ… ๊ฒฐ๋ก 

์ด๋ฒˆ ๊ตฌ์กฐ ๊ฐœ์„ ์„ ํ†ตํ•ด ๋‹จ์ˆœํ•œ ๋…ธ๋“œ ๋ถ„๋ฆฌ์™€ ์ˆ˜ ์กฐ์ •๋งŒ์œผ๋กœ๋„ 20%์˜ ๋น„์šฉ ์ ˆ๊ฐ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ์—ญํ•  ๊ธฐ๋ฐ˜ ๋…ธ๋“œ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ํ™œ์šฉ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ธํ”„๋ผ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์—ญ์‹œ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

taint์™€ toleration์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๋ฉด EKS ํ™˜๊ฒฝ์„ ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ์šด์˜์˜ ์ค‘์š”ํ•œ ์ „๋žต ํฌ์ธํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

profile
๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š”, ์ด์Šˆ๋ฅผ ์ค„์ด๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€