Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ

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

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ œ์ž๋ฆฌ์— ๋ฉˆ์ถฐ ์žˆ๊ณ , ์ƒํƒœ ํ™•์ธ์— ์‘๋‹ตํ•˜์ง€ ์•Š๊ณ , ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ•œ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์„ค๋ช…์€ CPU ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰ ์ œํ•œ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ๊ธ€์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

TL; DR :
CFS ํ• ๋‹น๋Ÿ‰ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Linux ์ปค๋„ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Kubernetes์—์„œ CPU ์ œํ•œ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ Kubelet์—์„œ CFS ํ• ๋‹น๋Ÿ‰์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์—๋Š” ์žˆ๋‹ค ์‹ฌ๊ฐํ•˜๊ณ  ์ž˜ ์•Œ๋ ค์ง„ ๊ณผ๋„ํ•œ ์ œํ•œ ๋ฐ ์ง€์—ฐ์„ ์ดˆ๋ž˜ํ•˜๋Š” ๋ฒ„๊ทธ
.

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

๊ธฐ์‚ฌ ์š”์•ฝ :

  • ์ปจํ…Œ์ด๋„ˆ์™€ Kubernetes์— ๋Œ€ํ•œ ๋ช‡ ๋งˆ๋””
  • CPU ์š”์ฒญ ๋ฐ ์ œํ•œ์ด ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ CPU ์ œํ•œ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹
  • CPU ์กฐ์ ˆ์„ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๋‰˜์•™์Šค.

์ปจํ…Œ์ด๋„ˆ์™€ Kubernetes์— ๋Œ€ํ•œ ๋ช‡ ๋งˆ๋””

Kubernetes๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ธํ”„๋ผ ์„ธ๊ณ„์˜ ํ˜„๋Œ€ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ์ž‘์—…์€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ

๊ณผ๊ฑฐ์—๋Š” ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Java JAR/WAR, Python Egg ๋˜๋Š” ์‹คํ–‰ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(Java/Python) ์„ค์น˜, ํ•„์š”ํ•œ ํŒŒ์ผ์„ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋ฐฐ์น˜, ํŠน์ • ์šด์˜ ์ฒด์ œ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ณด์žฅ ๋“ฑ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ตฌ์„ฑ ๊ด€๋ฆฌ์— ์„ธ์‹ฌํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค(์ข…์ข… ๊ฐœ๋ฐœ์ž์™€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ์‚ฌ์ด์˜ ๋…ผ์Ÿ์˜ ์›์ธ์ด ๋˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค).

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

๋˜ํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž์ฒด ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ž์ฒด ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ, ์•ก์„ธ์Šค๊ฐ€ ์ œํ•œ๋œ ์ž์ฒด ํŒŒ์ผ ์‹œ์Šคํ…œ, ์ž์ฒด ํ”„๋กœ์„ธ์Šค ๊ณ„์ธต ๊ตฌ์กฐ, CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ž์ฒด ์ œํ•œ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ Linux ์ปค๋„์˜ ํŠน์ˆ˜ ํ•˜์œ„ ์‹œ์Šคํ…œ์ธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋•๋ถ„์— ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

Kubernetes

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

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
์ผ๋ฐ˜์ธ์˜ ๊ด€์ ์—์„œ ๋ณธ Kubernetes

Kubernetes์˜ ์š”์ฒญ ๋ฐ ์ œํ•œ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ข‹์•„์š”, ์ง€๊ธˆ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ์™€ Kubernetes๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

Kubernetes์—์„œ ์š”์ฒญ ๋ฐ ์ œํ•œ์ด ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•

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

CPU ์š”์ฒญ

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
CPU ์š”์ฒญ์ด ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•

๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด 4์ฝ”์–ด CPU๋ฅผ ๊ฐ–์ถ˜ ๋จธ์‹ ์„ ์˜ˆ๋กœ ๋“ค์–ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

K8s๋Š” ์ œ์–ด ๊ทธ๋ฃน ๋ฉ”์ปค๋‹ˆ์ฆ˜(cgroups)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค(๋ฉ”๋ชจ๋ฆฌ ๋ฐ ํ”„๋กœ์„ธ์„œ) ํ• ๋‹น์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์ธต์  ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์œ„ ๊ทธ๋ฃน์€ ์ƒ์œ„ ๊ทธ๋ฃน์˜ ํ•œ๊ณ„๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ์„ธ๋ถ€ ์ •๋ณด๋Š” ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ(/sys/fs/cgroup). ํ”„๋กœ์„ธ์„œ์˜ ๊ฒฝ์šฐ ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. /sys/fs/cgroup/cpu,cpuacct/*.

K8s๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค cpu.share ํ”„๋กœ์„ธ์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ฃจํŠธ cgroup์€ 4096๊ฐœ์˜ CPU ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์˜ 100%์ž…๋‹ˆ๋‹ค(1 ์ฝ”์–ด = 1024; ์ด๋Š” ๊ณ ์ • ๊ฐ’์ž…๋‹ˆ๋‹ค). ๋ฃจํŠธ ๊ทธ๋ฃน์€ ๋“ฑ๋ก๋œ ์ž์†์˜ ์ง€๋ถ„์— ๋”ฐ๋ผ ์ž์›์„ ๋น„๋ก€์ ์œผ๋กœ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค. cpu.share, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์ฐจ๋ก€๋กœ ๊ทธ๋“ค์˜ ํ›„์† ๋“ฑ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ Kubernetes ๋…ธ๋“œ์—์„œ ๋ฃจํŠธ cgroup์—๋Š” ์„ธ ๊ฐœ์˜ ํ•˜์œ„ ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. system.slice, user.slice ะธ kubepods. ์ฒ˜์Œ ๋‘ ํ•˜์œ„ ๊ทธ๋ฃน์€ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ ๋กœ๋“œ์™€ K8 ์™ธ๋ถ€์˜ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ - kubepods โ€” ํฌ๋“œ ๊ฐ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด Kubernetes์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ํ•˜์œ„ ๊ทธ๋ฃน์ด ๊ฐ๊ฐ ์ˆ˜์‹ ํ•œ ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 1024 kuberpod ํ•˜์œ„ ๊ทธ๋ฃน์ด ํ• ๋‹น๋œ ๊ณต์œ  4096 ์ฃผ์‹ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ฒฐ๊ตญ ๋ฃจํŠธ ๊ทธ๋ฃน์€ ๋‹ค์Œ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 4096 ๊ทธ๋…€์˜ ํ›„์†์˜ ์ง€๋ถ„ ํ•ฉ๊ณ„๊ฐ€ ์ด ์ˆซ์ž๋ฅผ ํฌ๊ฒŒ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.6144)? ์š”์ ์€ ์ด ๊ฐ’์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ํƒ€๋‹นํ•˜๋ฏ€๋กœ Linux ์Šค์ผ€์ค„๋Ÿฌ(CFS)๊ฐ€ ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋น„๋ก€์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ฒ˜์Œ ๋‘ ๊ทธ๋ฃน์€ 680 ์‹ค์ œ ์ง€๋ถ„(16,6๊ฐœ ์ค‘ 4096%), kubepod๋Š” ๋‚˜๋จธ์ง€ ์ง€๋ถ„์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. 2736 ์ฃผ์‹ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฒ˜์Œ ๋‘ ๊ทธ๋ฃน์€ ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์˜ ๊ณต์ •ํ•œ ๋ถ„๋ฐฐ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์–ด๋Š ํ”„๋กœ์„ธ์Šค๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฆฌ์†Œ์Šค๋ฅผ "ํ›”์น˜๋Š”" ์ผ์ด ์—†๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

CPU ์ œํ•œ

K8์˜ ์ œํ•œ ๋ฐ ์š”์ฒญ ๊ตฌ์„ฑ์ด ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๊ตฌํ˜„์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„.

K8์ด ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค CFS ํ• ๋‹น๋Ÿ‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•œ๊ณ„๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์„ค์ •์€ ํŒŒ์ผ์— ์ง€์ •๋ฉ๋‹ˆ๋‹ค. cfs_period_us ะธ cfs_quota_us cgroup ๋””๋ ‰ํ† ๋ฆฌ(ํŒŒ์ผ๋„ ์—ฌ๊ธฐ์— ์žˆ์Œ) cpu.share).

๊ฐ™์ง€ ์•Š์€ cpu.share, ํ• ๋‹น๋Ÿ‰์€ ๋‹ค์Œ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์„œ ์ „๋ ฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. cfs_period_us ๊ธฐ๊ฐ„(์—ํฌํฌ)์˜ ์ง€์† ์‹œ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ 100000ฮผs(100ms)์ž…๋‹ˆ๋‹ค. K8s์—๋Š” ์ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์ง€๋งŒ ํ˜„์žฌ๋Š” ์•ŒํŒŒ ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํ•ด๋‹น ์—ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ๋œ ํ• ๋‹น๋Ÿ‰์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํŒŒ์ผ cfs_quota_us, ๊ฐ ์—ํฌํฌ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„(ํ• ๋‹น๋Ÿ‰)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„๋กœ๋„ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์€ ์—ํฌํฌ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, 100ms๋ณด๋‹ค ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

16์ฝ”์–ด ์ปดํ“จํ„ฐ(Omio์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ์œ ํ˜•)์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
์‹œ๋‚˜๋ฆฌ์˜ค 1: ์Šค๋ ˆ๋“œ 2๊ฐœ ๋ฐ 200ms ์ œํ•œ. ์ œํ•œ ์—†์Œ

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
์‹œ๋‚˜๋ฆฌ์˜ค 2: ์Šค๋ ˆ๋“œ 10๊ฐœ ๋ฐ 200ms ์ œํ•œ. 20ms ํ›„์— ์กฐ์ ˆ์ด ์‹œ์ž‘๋˜๊ณ , 80ms ํ›„์— ํ”„๋กœ์„ธ์„œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

CPU ์ œํ•œ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 2 ์ปค๋„; Kubernetes๋Š” ์ด ๊ฐ’์„ 200ms๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œํ•œ ์—†์ด ์ตœ๋Œ€ 200ms์˜ CPU ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์žฌ๋ฏธ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ• ๋‹น๋Ÿ‰์€ 200ms์ž…๋‹ˆ๋‹ค. ๋ณ‘ํ–‰ํ•ด์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ 10 12์ฝ”์–ด ๋จธ์‹ ์˜ ์Šค๋ ˆ๋“œ(์‹œ๋‚˜๋ฆฌ์˜ค 2์˜ ๊ทธ๋ฆผ ์ฐธ์กฐ), ๋‹ค๋ฅธ ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ์œ ํœด ์ƒํƒœ์ธ ๋™์•ˆ ํ• ๋‹น๋Ÿ‰์€ ๋‹จ 20ms(10 * 20ms = 200ms์ด๋ฏ€๋กœ) ๋‚ด์— ์†Œ์ง„๋˜๊ณ  ์ด ํฌ๋“œ์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ยป (์กฐ์ ˆํŒ) ๋‹ค์Œ 80ms ๋™์•ˆ. ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ์Šค์ผ€์ค„๋Ÿฌ ๋ฒ„๊ทธ, ์ด๋กœ ์ธํ•ด ๊ณผ๋„ํ•œ ์ œํ•œ์ด ๋ฐœ์ƒํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ์กด ํ• ๋‹น๋Ÿ‰์„ ์ถฉ์กฑํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ์˜ ์ œํ•œ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํฌ๋“œ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. cat /sys/fs/cgroup/cpu/cpu.stat.

  • nr_periods - ์Šค์ผ€์ค„๋Ÿฌ ๊ธฐ๊ฐ„์˜ ์ด ์ˆ˜
  • nr_throttled โ€” ์ปดํฌ์ง€์…˜์˜ ์กฐ์ ˆ ๊ธฐ๊ฐ„ ์ˆ˜ nr_periods;
  • throttled_time โ€” ๋ˆ„์  ์กฐ์ ˆ ์‹œ๊ฐ„(๋‚˜๋…ธ์ดˆ)์ž…๋‹ˆ๋‹ค.

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ

์ •๋ง ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”?

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋†’์€ ์ œํ•œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋” ๊ทธ ์‚ฌ๋žŒ์ด ๋“ค์–ด์™€์„œ XNUMX ํšŒ ๊ณ„์‚ฐ๋ณด๋‹ค ๊ฐ•ํ•˜๋‹ค!

์ด๋กœ ์ธํ•ด ์ค€๋น„ ํ™•์ธ ์‹คํŒจ, ์ปจํ…Œ์ด๋„ˆ ์ •์ง€, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋Š๊น€, ์„œ๋น„์Šค ํ˜ธ์ถœ ๋‚ด ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ถ๊ทน์ ์œผ๋กœ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์˜ค๋ฅ˜์œจ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๊ฒฐ์ •๊ณผ ๊ฒฐ๊ณผ

์—ฌ๊ธฐ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” CPU ์ œํ•œ์„ ํฌ๊ธฐํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ OS ์ปค๋„์„ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ์˜ค๋ฅ˜(HTTP 5xx) ์ˆ˜๊ฐ€ ์ฆ‰์‹œ ํฌ๊ฒŒ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

HTTP 5xx ์˜ค๋ฅ˜

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
ํ•˜๋‚˜์˜ ์ค‘์š”ํ•œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ HTTP 5xx ์˜ค๋ฅ˜

์‘๋‹ต์‹œ๊ฐ„ p95

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
์ค‘์š”ํ•œ ์„œ๋น„์Šค ์š”์ฒญ ๋Œ€๊ธฐ ์‹œ๊ฐ„, 95๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜

์šด์˜ ๋น„์šฉ

Kubernetes์˜ CPU ์ œํ•œ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ์กฐ์ ˆ
์‚ฌ์šฉํ•œ ์ธ์Šคํ„ด์Šค ์‹œ๊ฐ„ ์ˆ˜

์บ์น˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ธฐ์‚ฌ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์–ธ๊ธ‰๋œ ๋ฐ”์™€ ๊ฐ™์ด:

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

์—ฌ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์ฃผ์˜ํ•œ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜๊ฐ€ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋งˆํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: JVM, Go, Node VM์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ) ์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์—์„œ ์˜ค๋žซ๋™์•ˆ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ œ๋Œ€๋กœ ์ตœ์ ํ™”๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ „ํ˜€ ์ตœ์ ํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ(FROM java:latest), ์ƒํ™ฉ์ด ํ†ต์ œ ๋ถˆ๋Šฅ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Omio์—๋Š” ์ฃผ์š” ์–ธ์–ด ์Šคํƒ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๊ธฐ๋ณธ ์„ค์ •์„ ๊ฐ–์ถ˜ ์ž๋™ํ™”๋œ ๊ธฐ๋ณธ Dockerfile์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธก์ •ํ•ญ๋ชฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ (์‚ฌ์šฉ๋Ÿ‰, ํฌํ™”๋„ ๋ฐ ์˜ค๋ฅ˜), API ์ง€์—ฐ ๋ฐ ์˜ค๋ฅ˜์œจ. ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ๋Œ€์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ฐธ์กฐ

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

Kubernetes ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ:

์‹ค๋ฌด์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช์€ ์ ์ด ์žˆ๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์กฐ์ ˆ๊ณผ ๊ด€๋ จ๋œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ด์•ผ๊ธฐ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”!

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

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

์ถœ์ฒ˜ : habr.com

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