Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ๋ฉ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. DevOpsConf์˜ ๋ณด๊ณ  ๋ฐ ๊ธฐ๋ก

Southbridge ์†”๋ฃจ์…˜ ์„ค๊ณ„์ž์ด์ž Slurm ๊ต์‚ฌ์ธ Pavel Selivanov๊ฐ€ DevOpsConf 2019์—์„œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์—ฐ์€ Kubernetes "Slurm Mega"์— ๋Œ€ํ•œ ์‹ฌ์ธต ๊ณผ์ • ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Slurm ๊ธฐ๋ณธ: Kubernetes ์†Œ๊ฐœ 18์›” 20~XNUMX์ผ ๋ชจ์Šคํฌ๋ฐ”์—์„œ ๊ฐœ์ตœ๋ฉ๋‹ˆ๋‹ค.
Slurm Mega: Kubernetes์˜ ๋‚ด๋ถ€ ์‚ดํŽด๋ณด๊ธฐ โ€” ๋ชจ์Šคํฌ๋ฐ”, 22์›” 24~XNUMX์ผ.
Slurm Online: ๋‘ Kubernetes ๊ณผ์ • ๋ชจ๋‘ ํ•ญ์ƒ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ปท ์•„๋ž˜์—๋Š” ๋ณด๊ณ ์„œ์˜ ์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ๋™๋ฃŒ๋“ค๊ณผ ๊ทธ๋“ค์—๊ฒŒ ๊ณต๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์•ˆ์ „์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ณต๋„์— ๊ฒฝ๋น„์›์ด ๋งŽ์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ ๋ณด์•ˆ ๋ถ„์•ผ์˜ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ท€ํ•˜์˜ ๊ด€๋ก€์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฏธ๋ฆฌ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

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

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

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

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

์ œ๊ฐ€ ์ด ์ผ์„ ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋จผ์ € ์ œ ์†Œ๊ฐœ๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ ์ด๋ฆ„์€ ํŒŒ๋ฒจ ์…€๋ฆฌ๋ฐ”๋…ธํ”„์ž…๋‹ˆ๋‹ค. ์ €๋Š” Southbridge์˜ ๊ฑด์ถ•๊ฐ€์ž…๋‹ˆ๋‹ค. ์ €๋Š” Kubernetes, DevOps ๋ฐ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฉ‹์ง„ ๊ฒƒ๋“ค์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฐ์Šค๋ธŒ๋ฆฌ์ง€ ์—”์ง€๋‹ˆ์–ด๋“ค๊ณผ ์ €๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์ปจ์„คํŒ…๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

์˜ค๋Š˜ ์ œ๊ฐ€ ์ด์•ผ๊ธฐํ•  ๋‚ด์šฉ์€ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์„ธ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ๊ถŒํ•œ๊ณผ ํฌ๋“œ ๊ถŒํ•œ. ์‚ฌ์šฉ์ž ๊ถŒํ•œ๊ณผ ํฌ๋“œ ๊ถŒํ•œ์€ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋Ÿฌ์Šคํ„ฐ์— ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์—†์–ด๋„ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  3. ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ DoS ๊ณต๊ฒฉ. ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์ œ์–ด ์š”์†Œ์— ๋Œ€ํ•œ DoS ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์–ธ๊ธ‰ํ•  ๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์‚ฌํ•ญ์€ ์ œ๊ฐ€ ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•œ๋‹ค๊ณ  ํ™•์‹คํžˆ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” Kubernetes v1.14.5๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ณ ๋ คํ•  ์ „์ฒด ํ๋ธŒ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ณ , ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๋ณ„๋„์˜ ํŒ€์— ์†ํ•˜๋ฉฐ, ์ด ํŒ€์˜ ๊ตฌ์„ฑ์›์€ ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ๋Š” ์ด๋™ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ž์‹ ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํŠน์ • ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ๋ฉ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. DevOpsConf์˜ ๋ณด๊ณ  ๋ฐ ๊ธฐ๋ก

๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ์–ป๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ค‘๋‹จํ•  ํŠน๋ณ„ํžˆ ์ค€๋น„๋œ ํฌ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์ด๋ฅผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

kubectl apply -f pod.yaml

์ด ํฌ๋“œ๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋งˆ์Šคํ„ฐ ์ค‘ ํ•˜๋‚˜์— ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„์— ํด๋Ÿฌ์Šคํ„ฐ๋Š” admin.conf๋ผ๋Š” ํŒŒ์ผ์„ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Cube์—์„œ ์ด ํŒŒ์ผ์€ ๋ชจ๋“  ๊ด€๋ฆฌ์ž ์ธ์ฆ์„œ๋ฅผ ์ €์žฅํ•จ๊ณผ ๋™์‹œ์— ํด๋Ÿฌ์Šคํ„ฐ API๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ 98%์— ๋Œ€ํ•œ ๊ด€๋ฆฌ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด์ง€์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํฌ๋“œ๋Š” ์ž์‹ ์˜ ์ œ์•ˆ์„ ํ•˜๋‚˜์˜ ์ž‘์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ ๋ชจ๋‘ RBAC์— ์˜ํ•ด ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์—๊ฒŒ๋Š” ๊ถŒ๋ฆฌ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ธ์ฆ์„œ๊ฐ€ ๋ฐ˜ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด์ œ ํŠน๋ณ„ํžˆ ์ค€๋น„๋œ ํฌ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€์—์„œ ์ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. debian:jessie๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

tolerations:
-   effect: NoSchedule 
    operator: Exists 
nodeSelector: 
    node-role.kubernetes.io/master: "" 

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

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

์ด ๋‘ ์„น์…˜์„ ํ†ตํ•ด ๊ทธ๋Š” ํ™•์‹คํžˆ ๋งˆ์Šคํ„ฐ์—๊ฒŒ ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๊ทธ๊ณณ์—์„œ ์‚ด๋„๋ก ํ—ˆ๋ฝ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ง€ ์ฃผ์ธ์—๊ฒŒ ์˜ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์•„๋ฌด๊ฒƒ๋„ ์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์—๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

hostNetwork: true 
hostPID: true 

์šฐ๋ฆฌ๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ํฌ๋“œ๊ฐ€ ์ปค๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ PID ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์œ„์น˜ํ•˜๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ๋งˆ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋ฉด ์ด ๋…ธ๋“œ์˜ ๋ชจ๋“  ์‹ค์ œ ๋ผ์ด๋ธŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๋“ฃ๊ณ , ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ž‘์€ ์ผ์˜ ๋ฌธ์ œ์ด๋‹ค. etcd๋ฅผ ๊ฐ€์ง€๊ณ  ์›ํ•˜๋Š” ๊ฒƒ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.

๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” Kubernetes ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

volumeMounts:
- mountPath: /host 
  name: host 
volumes:
- hostPath: 
    path: / 
    type: Directory 
  name: host 

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

๋‹ค์‹œ ๋ฐ˜๋ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํฌ๋“œ์—๊ฒŒ ๋งˆ์Šคํ„ฐ๋กœ ์™€์„œ ๊ฑฐ๊ธฐ์—์„œ ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ์™€ ํ˜ธ์ŠคํŠธPID๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ด ํฌ๋“œ ์•ˆ์— ๋งˆ์Šคํ„ฐ์˜ ์ „์ฒด ๋ฃจํŠธ๋ฅผ ๋งˆ์šดํŠธํ•˜๋ผ๊ณ  ์ง€์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋น„์•ˆ์—์„œ๋Š” bash๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๊ณ  ์ด bash๋Š” ๋ฃจํŠธ์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๊ถŒํ•œ ์—†์ด ๋งˆ์Šคํ„ฐ์—์„œ ๋ฃจํŠธ๋ฅผ ๋ฐฉ๊ธˆ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ „์ฒด ์ž‘์—…์€ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ /host /etc/kubernetes/pki๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ฐฉ๊ฐํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๊ณณ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋งˆ์Šคํ„ฐ ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ทธ์— ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ดํŽด๋ณด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์— ๊ด€๊ณ„์—†์ด ํฌ๋“œ์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ๊ถŒํ•œ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ๋ฉ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. DevOpsConf์˜ ๋ณด๊ณ  ๋ฐ ๊ธฐ๋ก

ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ํฌ๋“œ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ์žˆ๋Š” ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฉฐ ์‹ค์ œ๋กœ ๋…ธ๋“œ์˜ ๋ฃจํŠธ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ ๋ฃจํŠธ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Kubernetes์—๋Š” Run As Non-Root ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ด์ปค๋กœ๋ถ€ํ„ฐ์˜ ์ผ์ข…์˜ ๋ณดํ˜ธ์ž…๋‹ˆ๋‹ค. '๋ชฐ๋‹ค๋น„์•„ ๋ฐ”์ด๋Ÿฌ์Šค'๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•„์‹œ๋‚˜์š”? ๊ฐ‘์ž๊ธฐ ํ•ด์ปค๊ฐ€ ๋˜์–ด ๋‚ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์˜ค๋ฉด ๋ถˆ์Œํ•œ ๊ด€๋ฆฌ์ž์ธ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. โ€œ๋‚ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ•ดํ‚นํ•  ํฌ๋“œ๋ฅผ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•˜๋„๋ก ์ง€์ •ํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฃจํŠธ๋กœ Pod์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด ํ•ดํ‚นํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•ด์ฃผ์„ธ์š”."

์ œ ์ƒ๊ฐ์—๋Š” ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ ๋ณผ๋ฅจ์ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

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

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

ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ…์—์„œ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ ์€ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ชจ๋“  PSP ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์„ค๋ช…๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ˆœํžˆ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ…์€ ์Šน์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋Š” XNUMX๋ถ„ ์•ˆ์— ํ•ดํ‚น๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์„ค์น˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด Prometheus๋ผ๊ณ  ๋ถˆ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธกํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

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

์•„๋งˆ๋„ ๋ชจ๋‘๊ฐ€ Habrรฉ์—์„œ ๋™์ผํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฝ๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง์€ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์œ„์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Helm ์ฐจํŠธ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฑฐ์˜ ๋™์ผํ•˜๊ฒŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” helm install stable/prometheus๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋Œ€๋žต ๋™์ผํ•œ ์ด๋ฆ„์„ ์–ป๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ํด๋Ÿฌ์Šคํ„ฐ์˜ DNS ์ด๋ฆ„์„ ์ถ”์ธกํ•  ํ•„์š”์กฐ์ฐจ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ๋ฉ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. DevOpsConf์˜ ๋ณด๊ณ  ๋ฐ ๊ธฐ๋ก

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

$ curl http://prometheus-kube-state-metrics.monitoring 

prometheus-kube-state-metrics๋Š” Kubernetes API ์ž์ฒด์—์„œ ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” Prometheus ๋‚ด๋ณด๋‚ด๊ธฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ํด๋Ÿฌ์Šคํ„ฐ์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋“ฑ ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kube_pod_container_info{namespace=โ€œkube-systemโ€,pod=โ€kube-apiserver-k8s- 1โ€ณ,container=โ€kube-apiserverโ€,image=

"gcr.io/google-containers/kube-apiserver:v1.14.5"

,image_id=ยปdocker-pullable://gcr.io/google-containers/kube- apiserver@sha256:e29561119a52adad9edc72bfe0e7fcab308501313b09bf99df4a96 38ee634989โ€ณ,container_id=ยปdocker://7cbe7b1fea33f811fdd8f7e0e079191110268f2 853397d7daf08e72c22d3cf8bยป} 1

๊ถŒํ•œ์ด ์—†๋Š” Pod์—์„œ ๊ฐ„๋‹จํ•œ ์ปฌ ์š”์ฒญ์„ ํ•˜๋ฉด ๋‹ค์Œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์ธ Kubernetes ๋ฒ„์ „์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ์‰ฝ๊ฒŒ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ ์€ kube-state-metrics์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ Prometheus ์ž์ฒด์— ์ง์ ‘ ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์ธก์ •ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ๋„ Prometheus์˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๊บผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง์ด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์™„์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

PSP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Kubernetes, Prometheus์™€ ๊ฐ™์€ ๋ฉ‹์ง„ ๊ธฐ์ˆ ์ด ๋ชจ๋‘ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ํ—ˆ์ ์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„ค๋งˆ.

๊ทธ๋Ÿฐ๊ฒŒ ์žˆ์–ด์š” - ๋„คํŠธ์›Œํฌ ์ •์ฑ….

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

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

์ œ๊ฐ€ ์ œ์‹œํ•œ ์˜ˆ์—์„œ์™€ ๊ฐ™์ด ๊ถŒํ•œ ์—†์ด๋„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ kube ์ƒํƒœ ๋ฉ”ํŠธ๋ฆญ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ •์ฑ…์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์•ก์„ธ์Šค๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ฐจํŠธ์—๋Š” ํ‘œ์ค€ Prometheus์™€ Operator์— ์žˆ๋Š” Prometheus ๋ชจ๋‘ ๋‹จ์ˆœํžˆ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•œ helm ๊ฐ’์˜ ์˜ต์…˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์›์„ ์ผœ๊ธฐ๋งŒ ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฌด์—‡์„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

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

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

์ƒˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ‚ค์šธ ๋•Œ ๋™์‹œ์— ํ”Œ๋ž€๋„ฌ ๋Œ€์‹  ์˜ฅ์–‘๋ชฉ์„ ์‚ฝ์ž…ํ•˜์‹ญ์‹œ์˜ค.

์ธ์ฆ์„œ๊ฐ€ XNUMX๋…„ ๋™์•ˆ ๋ฐœ๊ธ‰๋˜์—ˆ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์žฌ๋ฐฐํฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? Kube-RBAC-Proxy์™€ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ๋ฉ‹์ง„ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ํฌ๋“œ์— ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ Kubernetes ์ž์ฒด์˜ RBAC๋ฅผ ํ†ตํ•ด ์ด Pod์— ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ด Kube-RBAC-Proxy ์†”๋ฃจ์…˜์ด ์šด์˜์ž์˜ Prometheus์— ๋‚ด์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Š” ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ตœ์‹  ๋ฒ„์ „์€ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์ด ์žˆ๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ข…๋ฃŒํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ์ฐจํŠธ๋ฅผ ์กฐ๊ธˆ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ฐ€๋ณด๋ฉด ์ด ์ €์žฅ์†Œ, ์ด๊ฒƒ์„ ์‚ฌ์ด๋“œ์นด๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ฐจํŠธ๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์€ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. Prometheus๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์ธก์ •ํ•ญ๋ชฉ์„ ์ „๋‹ฌํ•˜๋Š” ์œ ์ผํ•œ ์—…์ฒด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ž์ฒด ์ธก์ •ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ฏธ ๋งํ–ˆ๋“ฏ์ด ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ตœ์†Œํ•œ ์–ด๋Š ์ •๋„ ํ•ด๋ฅผ ๋ผ์น  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋น ๋ฅด๊ฒŒ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๋งํ•˜๋ฉด ๋‹น์‹ ์€ ์›ƒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‘ ๊ฐ€์ง€ ์‹ค์ œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• XNUMX. ์ž์› ๊ณ ๊ฐˆ.

๋˜ ๋‹ค๋ฅธ ํŠน๋ณ„ํ•œ ํฌ๋“œ๋ฅผ ์ถœ์‹œํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„์ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

resources: 
    requests: 
        cpu: 4 
        memory: 4Gi 

์•„์‹œ๋‹ค์‹œํ”ผ ์š”์ฒญ์€ ์š”์ฒญ์ด ์žˆ๋Š” ํŠน์ • Pod์— ๋Œ€ํ•ด ํ˜ธ์ŠคํŠธ์— ์˜ˆ์•ฝ๋œ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘์ž…๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— XNUMX์ฝ”์–ด ํ˜ธ์ŠคํŠธ๊ฐ€ ์žˆ๊ณ  XNUMX๊ฐœ์˜ CPU Pod๊ฐ€ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ๋„์ฐฉํ•˜๋Š” ๊ฒฝ์šฐ ์š”์ฒญ์ด ์žˆ๋Š” Pod๊ฐ€ ๋” ์ด์ƒ ์ด ํ˜ธ์ŠคํŠธ์— ์˜ฌ ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ kubectl scale special-pod --replicas=...

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

Kubernetes ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ๋ณด๋ฉด Limit Range๋ผ๋Š” ํ•ญ๋ชฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. yaml์— Limit Range ๊ฐ์ฒด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” ํฌ๋“œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ, ์ตœ๋Œ€ ๋ฐ ์ตœ์†Œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ๋‚˜์˜ค๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 11๊ฐœ์˜ ํฌ๋“œ๋ฅผ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ 111์–ต์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ˆซ์ž๋ฅผ ์ƒ๊ฐํ•ด ๋‚ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง์ ‘ ๋ดค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹คํ™”. ์ €๋… ๋Šฆ๊ฒŒ ๋‚˜๋Š” ์‚ฌ๋ฌด์‹ค์„ ๋– ๋‚˜๋ ค๊ณ  ํ–ˆ๋‹ค. ์ €๋Š” ํ•œ ๋ฌด๋ฆฌ์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ตฌ์„์— ์•‰์•„ ๋ฏธ์นœ ๋“ฏ์ด ๋…ธํŠธ๋ถ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚จ์ž๋“ค์—๊ฒŒ ๋‹ค๊ฐ€๊ฐ€ "๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋‚˜์š”? "๋ผ๊ณ  ๋ฌป์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋” ์ด๋ฅธ ์ €๋… XNUMX์‹œ์ฏค, ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด ์ง‘์— ๊ฐˆ ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” โ€œ์ด์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜๋กœ ์ถ•์†Œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.โ€๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ๋ˆŒ๋ €๋Š”๋ฐ ์ธํ„ฐ๋„ท์ด ์กฐ๊ธˆ ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ํ•˜๋‚˜๋ฅผ ๋‹ค์‹œ ๋ˆ„๋ฅด๊ณ , ํ•˜๋‚˜๋ฅผ ๋ˆ„๋ฅด๊ณ  Enter๋ฅผ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฐ”๋ €๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ธํ„ฐ๋„ท์ด ํ™œ์„ฑํ™”๋˜์—ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ด ์ˆซ์ž๋กœ ์ถ•์†Œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‹น์—ฐํžˆ Kubernetes์—์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. Kubernetes๋Š” 1์–ต ๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋งˆ์šฐ์Šค ๊ฐ€๋“œ๋ฅผ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค." ํ•˜์ง€๋งŒ 000๊ฐœ์˜ ํฌ๋“œ๋Š” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

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

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

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋” ๋‚˜์•„๊ฐ€๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์‹œ๋‹ค์‹œํ”ผ Kubernetes์—๋Š” ์„œ๋น„์Šค๋ผ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์„œ๋น„์Šค๊ฐ€ IP ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด XNUMX์–ต ๊ฐœ์˜ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetis๊ฐ€ ์ƒˆ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ:

for i in {1..1111111}; do
    kubectl expose deployment test --port 80  
        --overrides="{"apiVersion": "v1", 
           "metadata": {"name": "nginx$i"}}"; 
done 

ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ ์  ๋” ๋งŽ์€ ์ƒˆ๋กœ์šด iptables ๊ทœ์น™์ด ๊ฑฐ์˜ ๋™์‹œ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•ด XNUMX์–ต ๊ฐœ์˜ iptables ๊ทœ์น™์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ชจ๋“  ๊ฒƒ์„ ์ˆ˜์ฒœ์—์„œ ์ตœ๋Œ€ XNUMX๊นŒ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์ด ์ž„๊ณ„๊ฐ’์—์„œ ๋…ธ๋“œ์— SSH๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์ฒด์ธ์„ ํ†ต๊ณผํ•˜๋Š” ํŒจํ‚ท์€ ๊ธฐ๋ถ„์ด ์ข‹์ง€ ์•Š๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

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

์ด์™€ ๊ด€๋ จํ•˜์—ฌ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Kubernetes์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ๋Š”์ง€ ๋Š๋ผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋งŽ์€ ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰ + ์ œํ•œ ๋ฒ”์œ„ + RBAC
โ€ข ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ
โ€ข ๋‚ด๋ถ€์— ์ œํ•œ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
โ€ข ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰ ์ƒ์„ฑ
โ€ข CI์šฉ ์„œ๋น„์Šค ๊ณ„์ • ์ƒ์„ฑ
โ€ข CI ๋ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์—ญํ•  ๋ฐ”์ธ๋”ฉ ์ƒ์„ฑ
โ€ข ์„ ํƒ์ ์œผ๋กœ ํ•„์š”ํ•œ ์„œ๋น„์Šค ํฌ๋“œ ์‹คํ–‰

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

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

์กฐ๊ธˆ ์ด ๋ชจ๋“  ๋ณต์žกํ•œ ๊ณผ์ •์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

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

๋„คํŠธ์›Œํฌ ์ •์ฑ…์€ ๋˜ ๋‹ค๋ฅธ ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํด๋Ÿฌ์Šคํ„ฐ์— ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

LimitRange/ResourceQuota - ์ด์ œ ์‚ฌ์šฉํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์˜ค๋ž˜ ์ „๋ถ€ํ„ฐ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์˜ค๋žซ๋™์•ˆ ๋ชจ๋‘๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋“œ๋ฌธ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ ์™ธ์—๋„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ถœ์‹œ๋จ Kubernetes ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๋ถ„์„.

์–ด๋–ค ๊ฒƒ๋“ค์€ ๋„ˆ๋ฌด ์Šฌํ”„๊ณ  ์ƒ์ฒ˜๋ฅผ ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์กฐ๊ฑด์—์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ๋ธ”๋ ›์€ warlocks ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๊ถŒํ•œ ์—†๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ๋งํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ResourceQuota ๋ฐ Pod ๋ณด์•ˆ ์ •์ฑ…์˜ ํ”„๋กœ๋•์…˜ ์˜ˆ์‹œ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งŒ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋งˆ์›Œ์š”.

์ถœ์ฒ˜ : habr.com

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