Pod ์ค์ฌ ์ค์ผ์ค๋ง ํ๊ณ๋ฅผ ๊ทน๋ณตํ Kueue ๊ธฐ๋ฐ Job ์ฟผํฐ ๊ด๋ฆฌ ๋ฐ ์ฐ์ ์์ ์ ์ด
๐ฆ Meet Kueue: Smart Job Queueing for Kubernetes ๐ง โ๏ธ
AI ์์ฝ
Context
๊ธฐ๋ณธ Kubernetes Scheduler์ Pod ์ค์ฌ ๋ฐฐ์น ๋ฐฉ์์ Batch ๋ฐ AI/ML ์ํฌ๋ก๋์ ์์ ์์ ์ ์ด ๋ถ๊ฐ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํจ. ์ด๋ก ์ธํ ๋ฆฌ์์ค ๊ฒฝํฉ ๋ฐ์ ๋ฐ ํน์ ํ์ ์์ ๋ ์ ์ผ๋ก ์ ์ฒด ํด๋ฌ์คํฐ์ ํจ์จ์ฑ์ด ์ ํ๋๋ ๊ตฌ์กฐ์ ํ๊ณ ์กด์ฌ.
Technical Solution
- Scheduler ์ ๋จ์ Admission Control ๊ณ์ธต์ ๋ฐฐ์นํ์ฌ Job ๋จ์์ ์คํ ์์ ๊ฒฐ์ ๊ตฌ์กฐ ์ค๊ณ
- ResourceFlavor๋ฅผ ํตํ ๋ ธ๋ ํน์ฑ๋ณ(x86, arm, GPU) ๋ฆฌ์์ค ๊ทธ๋ฃนํ ๋ฐ ์ถ์ํ ๊ตฌํ
- ClusterQueue์ LocalQueue์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํตํ ํด๋ฌ์คํฐ ์ ์ฒด ์ฟผํฐ ๊ฑฐ๋ฒ๋์ค ๋ฐ ๋ค์์คํ์ด์ค๋ณ ํ ๋น ์ฒด๊ณ ๊ตฌ์ถ
- Workload ๊ฐ์ฒด๋ฅผ ์ด์ฉํ Job ์ํ ์ถ์ ๋ฐ ๊ฐ์ฉ ์ฟผํฐ ํ์ธ ํ Pod ์์ฑ์ ํ์ฉํ๋ Admission ๋ก์ง ์ ์ฉ
- Cohort ์ค์ ์ ํตํด ์ ํด ์ฟผํฐ๋ฅผ ํ ๊ฐ ๊ณต์ ํ๋ Fair Sharing ๋ฉ์ปค๋์ฆ ๋์
- Priority ๊ธฐ๋ฐ Admission์ ํตํด ํ๋ก๋์ ํ์ต ์์ ์ ์ฐ์ ์คํ ๊ถํ ๋ณด์ฅ
์ค์ฒ ํฌ์ธํธ
1. Pod ์ ์ ์ resource requests ์ค์ ์ ํ์๋ก ์ ์ฉํ์ฌ ์ฟผํฐ ๊ณ์ฐ ๋๋ฝ ๋ฐฉ์ง
2. Job ์ ์ ์ LocalQueue์ ์ผ์นํ๋ queue-name ๋ผ๋ฒจ ๋ถ์ฌ ์ฌ๋ถ ํ์ธ
3. GPU ๋ฑ ๊ณ ๋น์ฉ ์์ ์ฌ์ฉ ์ Partial Admission์ผ๋ก ์ธํ ๋ฆฌ์์ค ๋ญ๋น ๊ฐ๋ฅ์ฑ ๊ฒํ
4. Elastic Jobs ๋์ ์ Feature Gate ํ์ฑํ ์ํ ํ์ธ
5. ClusterQueue์ flavor ๋ช ์นญ๊ณผ ResourceFlavor์ ์ผ์น ์ฌ๋ถ ๊ฒ์ฆ