Kubernetes ์—”์ง€๋‹ˆ์–ด ๋ฐ ์„ค๊ณ„์ž๋ฅผ ์œ„ํ•œ MegaSlurm

Kubernetes ์—”์ง€๋‹ˆ์–ด ๋ฐ ์„ค๊ณ„์ž๋ฅผ ์œ„ํ•œ MegaSlurm

2์ฃผ ํ›„์— Kubernetes์— ๋Œ€ํ•œ ์ง‘์ค‘ ๊ณผ์ •์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. k4s์— ์ต์ˆ™ํ•ด์ง€๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ Slurm-8์™€ k8s ์—”์ง€๋‹ˆ์–ด ๋ฐ ์„ค๊ณ„์ž๋ฅผ ์œ„ํ•œ MegaSlurm์ž…๋‹ˆ๋‹ค.

Slurm 4 ํ™€์—๋Š” ์ขŒ์„์ด 10๊ฐœ๋งŒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. k8์„ ๊ธฐ๋ณธ ์ˆ˜์ค€์—์„œ ๋งˆ์Šคํ„ฐํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” Ops์˜ ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์ข‹์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. Dev์˜ ์š”์ฒญ์€ ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—”์ง€๋‹ˆ์–ด์™€ ๊ฑด์ถ•๊ฐ€๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • k8s์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€, ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ์ง€, ๊ทธ๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ป๊ณ  ์žƒ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์–ด๋–ค ๋ฐฐํฌ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ถ„๋ช…ํžˆ k8s์— ์ ํ•ฉํ•˜์ง€ ์•Š์€์ง€;
  • k8s๊ฐ€ ์ œ๊ธฐํ•˜๋Š” ๋ณด์•ˆ ์œ„ํ˜‘(์˜ˆ: ๊ฐœ๋ฐœ์ž๋Š” ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ)๊ณผ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • k8s๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ์ธํ”„๋ผ ์ž๋™ํ™” ์ฒด๊ณ„์™€ ์ด๋ฅผ ์ฐพ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋ฐฉ๋ฒ•.

์ด๋ฏธ ์ด ์ˆ˜์ค€์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด MegaSlurm์—์„œ ๋งŽ์€ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ๋“ค์ด ์—ฌ๋Ÿฌ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

MegaSlurm: Kubernetes ๊ณ ๊ธ‰ ๊ณผ์ •(31์›” 2์ผ~XNUMX์›” XNUMX์ผ)

Kubernetes ์—”์ง€๋‹ˆ์–ด ๋ฐ ์„ค๊ณ„์ž๋ฅผ ์œ„ํ•œ MegaSlurm

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

๋ชจ์Šคํฌ๋ฐ”์™€ ์˜จ๋ผ์ธ ์ฐธ์—ฌ.

๊ฐ€๊ฒฉ: 60 000 โ‚ฝ
(๊ธฐ์ดˆ๋ฅผ ๋‹ค์ง€๊ณ  Slurm-4๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด 15 ํ• ์ธ. 2๊ฐœ ์ง‘์ค‘ ์ฝ”์Šค ํ•ฉ๊ณ„ - 70)

ํ”„๋กœ๊ทธ๋žจ

์ฃผ์ œ #1: ๋‚ด๋ถ€์—์„œ ์žฅ์•  ์กฐ์น˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค
โ€ข Kubespray์™€ ํ˜‘๋ ฅํ•˜๊ธฐ
โ€ข ์ถ”๊ฐ€ ๊ตฌ์„ฑ์š”์†Œ ์„ค์น˜
โ€ข ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #2: ์™ธ๋ถ€ ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๊ถŒํ•œ ๋ถ€์—ฌ
โ€ข LDAP(Nginx + Python)
โ€ข OIDC(Dex + Gangway)
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #3: ๋„คํŠธ์›Œํฌ ์ •์ฑ…
โ€ข CNI ์†Œ๊ฐœ
โ€ข ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์ •์ฑ…
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #4: ํด๋Ÿฌ์Šคํ„ฐ์˜ ์•ˆ์ „ํ•˜๊ณ  ๊ฐ€์šฉ์„ฑ์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ€ข ํฌ๋“œ๋ณด์•ˆ์ •์ฑ…
โ€ข PodDisruptionBudget

์ฃผ์ œ #5: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค. ํ›„๋“œ ์•„๋ž˜๋ฅผ ์‚ดํŽด๋ณด์ž
โ€ข ์ปจํŠธ๋กค๋Ÿฌ ๊ตฌ์กฐ
โ€ข ์—ฐ์‚ฐ์ž ๋ฐ CRD
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #6: ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ ์ €์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ€ข PostgreSQL์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘
โ€ข RabbitMQ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #7: ๋น„๋ฐ€ ์œ ์ง€
โ€ข Kubernetes์—์„œ ๋น„๋ฐ€ ๊ด€๋ฆฌ
โ€ข ๊ธˆ๊ณ 

์ฃผ์ œ #8: ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ
โ€ข ์ด๋ก 
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #9: ๋ฐฑ์—… ๋ฐ ์žฌํ•ด ๋ณต๊ตฌ
โ€ข Heptio Velero(์ด์ „์˜ Ark) ๋ฐ etcd๋ฅผ ์‚ฌ์šฉํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ
โ€ข ๊ด€ํ–‰

์ฃผ์ œ #10: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ
โ€ข๋ฆฐํŠธ
โ€ข ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ ๋ฐ ๋ฐฐํฌ ๋„๊ตฌ
โ€ข ๋ฐฐํฌ ์ „๋žต

์ฃผ์ œ 11: ์‹ค์ œ ์ž‘์—…
โ€ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ CI/CD ๊ตฌ์ถ•
โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์—…๋ฐ์ดํŠธ

๋ฉ”๊ฐ€์Šฌ๋Ÿผ ์›น์‚ฌ์ดํŠธ

Slurm-4๋Š” ๋งค์šฐ ์ง‘์ค‘์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์•ฝ 150๋ช…์˜ ์ฐธ๊ฐ€์ž๊ฐ€ ์ฐธ์—ฌํ•˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์ด ์ฒ˜์Œ์œผ๋กœ Kubernetes๋ฅผ ์ ‘ํ•˜๊ณ  ๋ฐ€๋„๊ฐ€ ๋†’์€ ํ”„๋กœ๊ทธ๋žจ์ด๋ฉฐ ์‹ค์ œ๋กœ ๋งŽ์€ ์‹ค์ˆ˜๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๊ด€๋ฆฌ ์ƒํ™œ์ด ๋ณธ๊ฒฉํ™”๋ฉ๋‹ˆ๋‹ค.

MegaSlurm์€ ๋ชจ๋“ ๋ฉด์—์„œ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ํ˜„์žฌ 47๋ช…์ด ๋ฉ”๊ฐ€์— ๊ฐ€์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์กฐ์šฉํ•˜๊ณ  ๊ฑฐ์˜ ์นœ๋ฐ€ํ•œ ํ–‰์‚ฌ์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์†Œ๋ž€, ๋งŽ์€ ๋…ธ๋ ฅ์˜ ์ƒ๊ฐ.

์ฐธ๊ฐ€์ž์˜ ๋Œ€๋‹ค์ˆ˜๋Š” k8s๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ ์‚ฌํ•ญ์— ์ตœ์†Œํ•œ์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ณ  ํฅ๋ฏธ๋กญ๊ณ  ๋ณต์žกํ•œ ๋ฌธ์ œ์— ์ตœ๋Œ€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ฐ€์ž 33๋ช… ์ค‘ 47๋ช…์ด ์ด์ „ Slurm ์ค‘ ํ•˜๋‚˜, ์ฆ‰ ์šฐ๋ฆฌ์˜ ์˜ค๋žœ ์นœ๊ตฌ๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ง์› XNUMX๋ช…์ด ๋ฉ”๊ฐ€๋กœ ๊ฐ€๋Š”๋ฐ ์„ ํƒ, ์ฒซ ๋ฒˆ์งธ Slurm('18๋…„ 8์›”)์— ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ kXNUMXs์™€ ์ง€์†์ ์œผ๋กœ ์ž‘์—…ํ•ด ์™”์Šต๋‹ˆ๋‹ค.

Kubernetes ์—”์ง€๋‹ˆ์–ด ๋ฐ ์„ค๊ณ„์ž๋ฅผ ์œ„ํ•œ MegaSlurm

์ „ํ†ต์ ์ธ ๊ฐ์‚ฌ ์„ ํƒ ์—ฐ์Šต์šฉ ํด๋ผ์šฐ๋“œ: Selectel์ด ์•„๋‹ˆ์—ˆ๋‹ค๋ฉด Slurm ์ฐธ์—ฌ ๋น„์šฉ์€ 5๋‹ฌ๋Ÿฌ ๋” ๋“ค์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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