Slurm - Kubernetes ์ฃผ์ œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•

Slurm - Kubernetes ์ฃผ์ œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•

XNUMX์›”์— Kubernetes ๊ฐ•์ขŒ์ธ Slurm์˜ ์ฃผ์ตœ์ž๊ฐ€ ์ œ ์ง‘ ๋ฌธ์„ ๋‘๋“œ๋ฆฌ๋ฉฐ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์†Œ๊ฐ์„ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

Dmitry, Slurm์€ ๋ฐ€๋„ ๋†’์€ ๊ต์œก ์ด๋ฒคํŠธ์ธ Kubernetes์— ๋Œ€ํ•œ XNUMX์ผ ์ง‘์ค‘ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ฒซ ๊ฐ•์˜์—์„œ ๋‘ ์‹œ๊ฐ„๋งŒ ์•‰์•„ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ธ€์„ ์“ธ ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ฐธ์—ฌํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”?

Slurm ์ด์ „์—๋Š” ansible, docker, ceph์— ๋Œ€ํ•œ ์˜จ๋ผ์ธ ์ค€๋น„ ๊ณผ์ •์„ ์ˆ˜๊ฐ•ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆœ๋ฌด์—์„œ ๊ฐ•์˜ ๋ฐœํ‘œ์ž์™€ ํ•จ๊ป˜ ๊ฐ ๋ช…๋ น ์ค„์„ ํ•œ ์ค„์”ฉ ์ง„ํ–‰ํ•˜๊ฒŒ ๋  ์ฝ”๋“œ์™€ ์ •ํ™•ํ•œ ์ง€์นจ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

โ€” ๋‚˜๋Š” ๋‘ ๊ณผ์ • ๋ชจ๋‘์— ์™„์ „ํžˆ ์ฐธ์—ฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„์—๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐ€๋“ํ•œ ๊ต์‹ค์—์„œ 6์ผ(๊ธฐ๋ณธ Slurm ๋ฐ MegaSlurm) ๋™์•ˆ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์ˆ˜

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

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ํ‘ธ์‹œ ์•Œ๋ฆผ์ด ์ด์ „์— ์ „์†ก๋œ ์ ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ํ•ด์™ธ ๋˜๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ… ํ‘ธ์‹œ ์•Œ๋ฆผ ํ”Œ๋žซํผ์„ ์‚ฌ์ „์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋” ์ด์ƒ 15๋ถ„์ด๋‚˜ ํ•œ ์‹œ๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ์ฃผ์ผ ์•ˆ์— ์—ฐ๊ฒฐํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งˆ๋ฒ•๊ณผ ๋งˆ๋ฒ•์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋ถˆ๋ถ„๋ช…ํ•˜๊ณ , ์ด์ƒํ•˜๊ณ , ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

๋น„์ฆˆ๋‹ˆ์Šค ์ž‘์—… ๊ณ„์ธต์ด ๋งŽ์€ ์ž‘์€ ์ž‘์—…, ๊ฐ€์„ค ํ…Œ์ŠคํŠธ ๋ฐ ์‹œ๊ฐ์  ํŠธ๋ฆญ์„ ๋ฟœ์–ด๋‚ด๋Š” ๋ถ„์ˆ˜๋ผ๋ฉด ์ธํ”„๋ผ๋Š” ํŒŒ์ดํ”„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ์ตœ์†Œ XNUMX๊ฐœ์›” ์ „์— ๋ฏธ๋ฆฌ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์ˆ˜์šฉ ํŒŒ์ดํ”„

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

Slurm์€ ํ˜„์žฌ ๋Ÿฌ์‹œ์•„์—์„œ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€๋ฅด์น˜๋Š” ์œ ์ผํ•œ ์ฝ”์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ ์–ด๋–ป๊ฒŒ๋“  ๊ณ„ํš ์˜ค๋ฅ˜๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Kubernetes์— ๋Œ€ํ•œ ๊ฐ•์ขŒ๋ฅผ ์ˆ˜๊ฐ•ํ–ˆ๊ณ , XNUMX์›”์— DevOps์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ•์ขŒ๋ฅผ ์ˆ˜๊ฐ•ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Slurm์€ ์ˆ˜์‹ญ ๊ฐœ์˜ ๋‹ค์–‘ํ•œ ๋ชจ์–‘์˜ ๋ถ„์ˆ˜๋ฅผ ๊ฑด์„คํ•œ ๊ด€๋ฆฌ ์•„์›ƒ์†Œ์‹ฑ์—…์ฒด์ธ Southbridge์— ์˜ํ•ด ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Southbridge๋Š” KTP ๋ฐ KCSP ์ธ์ฆ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค(CNCF, Linux Foundation ํšŒ์›).

Kubernetes ๊ณผ์ •์—์„œ๋Š” ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ๊ฐ€๋ฅด์น˜๋‚˜์š”?

๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋„๋ก ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • Kubespray์™€ ํ•จ๊ป˜ ์ผํ•˜๊ธฐ
  • ์ถ”๊ฐ€ ๊ตฌ์„ฑ ์š”์†Œ ์„ค์น˜
  • ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ

ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž)์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • LDAP(Nginx + Python)
  • OIDC(Dex + ํ†ต๋กœ)

๋„คํŠธ์›Œํฌ ์ˆ˜์ค€์—์„œ ํ•ด์ปค๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • CNI ์†Œ๊ฐœ
  • ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์ •์ฑ…

๊ทธ๋ฆฌ๊ณ  ์ „๋ฐ˜์ ์ธ ์•ˆ์ „!

  • ํฌ๋“œ ๋ณด์•ˆ ์ •์ฑ…
  • PodDisruptionBudget

์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ˆจ๊ธฐ์ง€ ์•Š๊ณ , ๋‚ด๋ถ€ ๋‚ด์šฉ์„ ์ž์„ธํžˆ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ ๊ตฌ์กฐ
  • ์—ฐ์‚ฐ์ž ๋ฐ CRD

ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ ์ €์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • PostgreSQL์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘
  • RabbitMQ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘

์ˆ˜๋งŽ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ตฌ์„ฑ์„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

  • Kubernetes์—์„œ ๋น„๋ฐ€ ๊ด€๋ฆฌ
  • ๋‘ฅ๊ทผ ์ฒœ์žฅ

์†๊ฐ€๋ฝ ์Šค๋ƒ…์œผ๋กœ ์ˆ˜ํ‰ ํ™•์žฅ

  • ะขะตะพั€ะธั
  • ์—ฐ์Šต

๋ฐฑ์—…

  • Heptio Velero(์ด์ „์˜ Ark) ๋ฐ etcd๋ฅผ ์‚ฌ์šฉํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ

ํ…Œ์ŠคํŠธ, ์Šคํ…Œ์ด์ง€, ํ”„๋กœ๋•์…˜์„ ์œ„ํ•œ ์†์‰ฌ์šด ๋ฐฐํฌ

  • ๋ฆฐํŠธ ์ฒœ
  • ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ ๋ฐ ๋ฐฐํฌ ๋„๊ตฌ
  • ๋ฐฐํฌ ์ „๋žต

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

Slurm ์ดํ›„ ์ฐธ๊ฐ€์ž๋“ค์—๊ฒŒ๋Š” ํ•˜๋ฃจ ์ข…์ผ ๋น„๋””์˜ค ๋…นํ™”, ์ •ํ™•ํ•œ ๋ ˆ์‹œํ”ผ์™€ ํ•จ๊ป˜ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ง€์นจ, ๋ฐฑ์—…์šฉ ์†”๋ฃจ์…˜์ด๋‚˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ.

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

๊ฒฐ๊ณผ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

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

๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ „์ฒด ์ฒญ์ค‘์ด ์นดํŠธ ์ฑ„ํŒ…์œผ๋กœ ์ด๋™ํ–ˆ์œผ๋ฉฐ ๋ช‡ ์ฃผ๊ฐ€ ์ง€๋‚œ ํ›„์—๋„ ์ƒ๋ช…์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ญ์ง€?

์ฃผ์ตœ์ธก์—์„œ๋Š” ๊ฐ€์„์— Slurm Devops๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ €๋Š” ์ด๋ฏธ ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ณง ๋‚ด ๊ธ€์— ์“ธ ๊ฒƒ์ด๋‹ค. ์นดํŠธ @ctorecords์˜ techdir ์ฑ„๋„.

์ถœ์ฒ˜ : habr.com

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