Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

27์›” XNUMX์ผ ์ปจํผ๋Ÿฐ์Šค์—์„œ ํŒŒ์—… 2019, "DevOps" ์„น์…˜์˜ ์ผ๋ถ€๋กœ "Kubernetes์˜ ์ž๋™ ํ™•์žฅ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ" ๋ณด๊ณ ์„œ๊ฐ€ ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. K8์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ „ํ†ต์— ๋”ฐ๋ผ ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ ์˜์ƒ (44๋ถ„, ๊ธฐ์‚ฌ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์ตํ•จ) ๋ฐ ํ…์ŠคํŠธ ํ˜•์‹์˜ ์ฃผ์š” ์š”์•ฝ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋‹ค!

๋ณด๊ณ ์„œ์˜ ์ฃผ์ œ๋ฅผ ํ•œ ๋‹จ์–ด์”ฉ ๋ถ„์„ํ•˜๊ณ  ๋๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Kubernetes

ํ˜ธ์ŠคํŠธ์— Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์œ„ํ•ด? ๋ฐ˜๋ณต์„ฑ๊ณผ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์šฐ์ˆ˜ํ•œ ๋ฐฐํฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” CI/CD์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ–์ถ˜ ์ฐจ๋Ÿ‰์„ ๋งŽ์ด ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ Kubernetes๋Š” ๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

  1. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๊ณ„์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๋ฉˆ์ถ”๊ณ  "ํด๋ผ์šฐ๋“œ"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ํฌ๋“œ(์ปจํ…Œ์ด๋„ˆ ๊ทธ๋ฃน).
  2. ๊ฒŒ๋‹ค๊ฐ€ ๊ฐœ๋ณ„ ํฌ๋“œ๊นŒ์ง€ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๋” ๋งŽ์€ ๊ฒƒ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.ะพ๋” ํฐ ๊ทธ๋ฃน. ๊ทธ๋Ÿฐ ๋†’์€ ์ˆ˜์ค€์˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํŠน์ • ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์ด ์žˆ๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ํ…œํ”Œ๋ฆฟ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ณผ ์„ ์–ธ์  API ์ผ๋ จ์˜ ํŠน์ • ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  Kubernetes๊ฐ€ ์ƒ์„ฑํ•˜๋Š” "์„ธ๊ณ„์˜ ๊ตฌ์กฐ"(YAML)๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์„ค๋ช…์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์‹ค์ œ ํ‘œ์‹œ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ž์› ๊ด€๋ฆฌ

CPU

์„œ๋ฒ„์—์„œ nginx, php-fpm ๋ฐ mysql์„ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค์—๋Š” ์‹ค์ œ๋กœ ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ๊ฐ ํ”„๋กœ์„ธ์Šค์—๋Š” ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)
(์Šฌ๋ผ์ด๋“œ์˜ ์ˆซ์ž๋Š” ์ปดํ“จํŒ… ๋Šฅ๋ ฅ์— ๋Œ€ํ•œ ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ถ”์ƒ์ ์ธ ํ•„์š”์„ฑ์ธ "์•ต๋ฌด์ƒˆ"์ž…๋‹ˆ๋‹ค)

์ด ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค(์˜ˆ: ๋ชจ๋“  nginx ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน "nginx"๋กœ). ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ ๊ทธ๋ฃน์„ ์ปจํ…Œ์ด๋„ˆ์— ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

๊ณ„์†ํ•˜๋ ค๋ฉด (Linux์—์„œ) ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ์˜ค๋ž˜ ์ „์— ๊ตฌํ˜„๋œ ์ปค๋„์˜ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ ๋•๋ถ„์— ์ด๋Ÿฌํ•œ ๋ชจ์Šต์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ, ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค ะธ cgroup. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๊ธฐ์ˆ (Docker์™€ ๊ฐ™์€ ํŽธ๋ฆฌํ•œ "์…ธ" ํฌํ•จ)์„ ํ†ตํ•ด ์ถ”๊ฐ€ ๊ฐœ๋ฐœ์ด ์ด‰์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

๋ณด๊ณ ์„œ์˜ ๋งฅ๋ฝ์—์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. cgroup, ์ œ์–ด ๊ทธ๋ฃน์€ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ(Docker ๋“ฑ) ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ทธ๋ฃน์œผ๋กœ ๊ฒฐํ•ฉ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ์–ด ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์™€ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์— ๋Œ€ํ•œ CPU ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)
(๋ชจ๋“  ์ˆซ์ž๋Š” ์ž์› ํ•„์š”์„ฑ์„ ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž„์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค)

๋™์‹œ์— CPU ์ž์ฒด์—๋Š” ํŠน์ • ์œ ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ์—์„œ๋Š” 1000์ž…๋‹ˆ๋‹ค), ์ด๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ๊ทธ๋ฃน์˜ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ํ•ฉ์€ 150+850+460=1460์ž…๋‹ˆ๋‹ค). ์ด ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์ปค๋„์€ ๋ฆฌ์†Œ์Šค ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  "๊ณต์ •ํ•˜๊ฒŒ" ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฐ ๊ทธ๋ฃน์— ๋™์ผํ•œ ์–‘์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์œผ๋ฏ€๋กœ(333>150) ์ดˆ๊ณผ๋ถ„(333-150=183)์€ ์˜ˆ๋น„๋กœ ๋‚จ์•„ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋‹ค๋ฅธ ๋‘ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ด๊ฒƒ์ด CFS ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•˜๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์ถ”๊ฐ€๋กœ ํ˜ธ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ. ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ•˜๋“œ ํ• ๋‹น๋Ÿ‰์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (ํ•˜๋“œ ์ œํ•œ). ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ์–ตํ•ด๋‘์ž ์ œํ•œ. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์ œํ•œ์„ ๋ถ„๋ฐฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. mysql์ด ๋„๋กœ๋ฅผ ๋”ฐ๋ผ ์šด์ „ํ•˜๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ CPU์— ๋Œ€ํ•œ ์š”๊ตฌ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” CPU๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์œผ๋ฅธ.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

Linux ์ปค๋„๊ณผ CPU์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๊ทธ๋ฆผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

cgroup์—๋Š” ๋‘ ๊ฐ€์ง€ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Š” ๋‹ค์Œ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ "๋น„ํ‹€๊ธฐ"์ž…๋‹ˆ๋‹ค.

  1. ์ปจํ…Œ์ด๋„ˆ ์ค‘๋Ÿ‰(์š”์ฒญ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฃผ์‹;
  2. ์ปจํ…Œ์ด๋„ˆ ์ž‘์—…(ํ•œ๋„) ์ž‘์—…์— ์†Œ์š”๋˜๋Š” ์ด CPU ์‹œ๊ฐ„์˜ ๋น„์œจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰.

CPU๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ฌด์—‡์ธ๊ฐ€ ์•ต๋ฌด์ƒˆ, ์•„๋ฌด๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋งค๋ฒˆ ํ˜‘์ƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด์ž ๋” ๋ช…ํ™•ํ•˜์ง€๋งŒ ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค. 50๊ฐœ ์ฝ”์–ด๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์™€ 4๊ฐœ ์ฝ”์–ด๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์˜ 20%๋Š” ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  3. ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฒŒ, Linux๊ฐ€ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ƒ๋Œ€์ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฐ€์žฅ ์ ์ ˆํ•œ ์˜ต์…˜์€ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดˆ. ์ €๊ฒƒ๋“ค. ์‹ค์ œ ์‹œ๊ฐ„(์ดˆ)์— ๋Œ€ํ•œ ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„(์ดˆ): ์‹ค์ œ 1์ดˆ๋‹น 1์ดˆ์˜ ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜๋‚˜์˜ ์ „์ฒด CPU ์ฝ”์–ด์ž…๋‹ˆ๋‹ค.

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

3๊ฐœ์˜ CPU ์ฝ”์–ด๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ 500๊ฐœ์˜ ํฌ๋“œ์—๋Š” ํ• ๋‹น๋œ ์ฝ”์–ด์˜ ํ•ด๋‹น ๋ถ€๋ถ„(1000, 1500 ๋ฐ 0,5)์œผ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ€์ค‘์น˜(1, 1,5 ๋ฐ XNUMX)๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

๋‘ ๋ฐฐ์˜ ์ฝ”์–ด(6๊ฐœ)๊ฐ€ ์žˆ๋Š” ๋‘ ๋ฒˆ์งธ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ ธ์™€ ๋™์ผํ•œ ํฌ๋“œ๋ฅผ ๊ฑฐ๊ธฐ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ„๋‹จํžˆ 2(๊ฐ๊ฐ 1, 2, 3)๋ฅผ ๊ณฑํ•˜์—ฌ ์ฝ”์–ด ๋ถ„ํฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŽธ์˜์ƒ ๋ฌด๊ฒŒ๊ฐ€ 3000์ด ๋˜๋Š” ๋„ค ๋ฒˆ์งธ ํฌ๋“œ๊ฐ€ ์ด ์„œ๋ฒ„์— ๋‚˜ํƒ€๋‚  ๋•Œ ์ค‘์š”ํ•œ ์ˆœ๊ฐ„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” CPU ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€(์ฝ”์–ด์˜ ์ ˆ๋ฐ˜)๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ณ  ๋‚˜๋จธ์ง€ ํฌ๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์‹œ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค(์ ˆ๋ฐ˜).

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

Kubernetes ๋ฐ CPU ๋ฆฌ์†Œ์Šค

Kubernetes์—์„œ CPU ๋ฆฌ์†Œ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธก์ •๋ฉ๋‹ˆ๋‹ค. ๋ฐ€๋ฆฌ์•„๋“œ๋ฝ์Šค, ์ฆ‰. 0,001 ์ฝ”์–ด๊ฐ€ ๊ธฐ๋ณธ ์ค‘๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. (Linux/cgroups ์šฉ์–ด์—์„œ๋Š” ๋™์ผํ•œ ๊ฒƒ์„ CPU ๊ณต์œ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” 1000๋ฐ€๋ฆฌ์ฝ”์–ด = 1024 CPU ๊ณต์œ ์ž…๋‹ˆ๋‹ค.) K8s๋Š” ๋ชจ๋“  ํฌ๋“œ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ๊ณ„์— ๋Œ€ํ•œ CPU ๋ฆฌ์†Œ์Šค๋ณด๋‹ค ๋” ๋งŽ์€ ํฌ๋“œ๋ฅผ ์„œ๋ฒ„์— ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋‚˜์š”? Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CPU ์ฝ”์–ด ์ˆ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ ํฌ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Kubernetes ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ด ํฌ๋“œ์— ํ•„์š”ํ•œ ์ฝ”์–ด ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๋“œ๋Š” ์ฝ”์–ด๊ฐ€ ์ถฉ๋ถ„ํ•œ ์„œ๋ฒ„์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์•„๋‹ˆ ์š”์ฒญ์ด ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๊นŒ(์ฆ‰, ํฌ๋“œ์— ํ•„์š”ํ•œ ์ฝ”์–ด ์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Œ)? Kubernetes๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Pod์˜ ๊ฒฝ์šฐ ์š”์ฒญ(CFS ์Šค์ผ€์ค„๋Ÿฌ)๊ณผ ์ œํ•œ(์‹ ํ˜ธ๋“ฑ์„ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”?)์„ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ธฐ์–ต

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ƒํ™ฉ์€ ๋น„์Šทํ•˜์ง€๋งŒ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค์˜ ์„ฑ๊ฒฉ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ด๊ฒƒ์ด ํ•ญ์ƒ ์šฐ๋ฆฌ์—๊ฒŒ ์ ํ•ฉํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•˜๊ณ  ์ข…๋ฃŒ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š”์ง€ ๊ทœ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. oom_score_adj.

CPU์˜ QoS ํด๋ž˜์Šค๋กœ ๋Œ์•„๊ฐ€์„œ ํฌ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” oom_score_adj ๊ฐ’์œผ๋กœ โ€‹โ€‹๋น„์œ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • Pod์˜ ๊ฐ€์žฅ ๋‚ฎ์€ oom_score_adj ๊ฐ’(-998)์€ ํ•ด๋‹น Pod๊ฐ€ ๋งˆ์ง€๋ง‰์— ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณด์žฅ.
  • ๊ฐ€์žฅ ๋†’์€ 1000์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์„ ์˜ ๋…ธ๋ ฅ, ๊ทธ๋Ÿฌํ•œ ํฌ๋“œ๋Š” ๋จผ์ € ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
  • ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด โ€‹โ€‹(ํŒŒ์—ด ๊ฐ€๋Šฅ) ๊ณต์‹์ด ์žˆ๋Š”๋ฐ, ๊ทธ ํ•ต์‹ฌ์€ ํฌ๋“œ๊ฐ€ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ• ์ˆ˜๋ก ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

๋‘ ๋ฒˆ์งธ "๋น„ํ‹€๋ฆผ" - limit_in_bytes - ํ•œ๊ณ„๋ฅผ ์œ„ํ•ด. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค. ๋ฐœํ–‰๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ตœ๋Œ€ ์–‘์„ ํ• ๋‹นํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฉฐ ์—ฌ๊ธฐ์—์„œ๋Š” (CPU์™€ ๋‹ฌ๋ฆฌ) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ „์ฒด๋กœ

Kubernetes์˜ ๊ฐ ํฌ๋“œ์—๋Š” requests ะธ limits - CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜:

  1. ์š”์ฒญ์— ๋”ฐ๋ผ Kubernetes ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜์—ฌ ์„œ๋ฒ„ ๊ฐ„์— ํฌ๋“œ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌ๋“œ์˜ QoS ํด๋ž˜์Šค๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
  3. ์ƒ๋Œ€ ๊ฐ€์ค‘์น˜๋Š” CPU ์š”์ฒญ์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
  4. CFS ์Šค์ผ€์ค„๋Ÿฌ๋Š” CPU ์š”์ฒญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  5. OOM ํ‚ฌ๋Ÿฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  6. "์‹ ํ˜ธ๋“ฑ"์€ CPU ์ œํ•œ์— ๋”ฐ๋ผ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  7. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๋”ฐ๋ผ cgroup์— ๋Œ€ํ•œ ์ œํ•œ์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๊ทธ๋ฆผ์€ Kubernetes์—์„œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์˜ ์ฃผ์š” ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ์งˆ๋ฌธ์— ๋‹ตํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ ํ™•์žฅ

K8s ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ ํฌ๊ธฐ ์กฐ์ •๊ธฐ

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ด๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ •์ด๋ฉฐ (์šฐ๋ฆฌ ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด) ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ณณ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฌ๊ธฐ์—๋„ ์•ฝ๊ฐ„์˜ ๋‰˜์•™์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ฐฐํฌ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” 3๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. 6๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ ์„œ๋ฒ„๋งˆ๋‹ค 2๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋„๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค kubectl drain, ์–ด๋Š:

  • ์ด ์„œ๋ฒ„์— ์ƒˆ ํฌ๋“œ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์˜ ๊ธฐ์กด ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Kubernetes๋Š” Pod ์ˆ˜(6)๋ฅผ ์œ ์ง€ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฏ€๋กœ ๊ฐ„๋‹จํžˆ ์žฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค ๋‹ค๋ฅธ ๋…ธ๋“œ์—๋Š” ์žˆ์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”๋œ ๋…ธ๋“œ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ƒˆ ํฌ๋“œ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Kubernetes์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

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

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

MongoDB์˜ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค ์ฟผ๋Ÿผ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃฝ์Šต๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ์„ค์น˜๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ ์ตœ์†Œํ•œ ๋‘ ๊ฐœ๊ฐ€ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” - ๋•๋ถ„์— PodDisruptionBudget. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•„์š”ํ•œ ์ตœ์†Œ ์ž‘์—… ํฌ๋“œ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. MongoDB Pod ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  PodDisruptionBudget์ด MongoDB์— ๋Œ€ํ•ด ์„ค์ •๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. minAvailable: 2, Kubernetes์—์„œ๋Š” ํฌ๋“œ ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์š”์ : ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ํฌ๋“œ์˜ ์ด๋™(์‹ค์ œ๋กœ ์žฌ์ƒ์„ฑ)์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ ค๋ฉด PodDisruptionBudget์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜ํ‰์  ํ™•์žฅ

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

ํ˜„์žฌ Kubernetes์—์„œ๋Š” ์ด ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธก์ •๋œ ๋กœ๋“œ ํ‘œ์‹œ๊ธฐ์˜ ๊ฐ’์— ๋”ฐ๋ผ ํฌ๋“œ ์ˆ˜์˜ ์ž๋™ ์ฆ๊ฐ€/๊ฐ์†Œ๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์—ฌ๊ธฐ์„œ ์ฃผ์š” ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์ธก์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€ ะธ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์–ป์€ ๊ฐ’ (ํฌ๋“œ ์ˆ˜ ๋ณ€๊ฒฝ ๊ฒฐ์ •) ๋งŽ์€ ๊ฒƒ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Kubernetes์˜ ์ž๋™ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ(๊ฐœ์š” ๋ฐ ๋™์˜์ƒ ๋ณด๊ณ ์„œ)

์ด๋ฅผ ๊ธฐ์ˆ ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• - ์ธก์ •ํ•ญ๋ชฉ ์ˆ˜์ง‘ ๋“ฑ โ€” ๋‚˜๋Š” ๋ณด๊ณ ์„œ์—์„œ ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ Kubernetes. ์ตœ์ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์š” ์กฐ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹คํ—˜!

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

๋Œ€์‹  ๊ฒฐ๋ก 

๋ณด๊ณ ์„œ์—๋Š” ์ˆ˜์ง์  ํ™•์žฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ํ–ฅํ›„ ๋™์˜์ƒ์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์œ ํŠœ๋ธŒ - ๋†“์น˜์ง€ ์•Š์œผ๋ ค๋ฉด ๊ตฌ๋…ํ•˜์„ธ์š”!

๋น„๋””์˜ค ๋ฐ ์Šฌ๋ผ์ด๋“œ

๊ณต์—ฐ ์˜์ƒ(44๋ถ„):

๋ณด๊ณ ์„œ ๋ฐœํ‘œ:

PS

๋ธ”๋กœ๊ทธ์˜ Kubernetes์— ๋Œ€ํ•œ ๊ธฐํƒ€ ๋ณด๊ณ ์„œ:

์ถœ์ฒ˜ : habr.com

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