9.2.2 · блок 9
Kueue и очереди
Kueue и очереди
Зачем это нужно
Когда несколько команд одновременно хотят GPU, обычный scheduler Kubernetes оставляет pods в Pending. Это симптом нехватки или конкуренции, но не политика справедливого доступа. Kueue и Volcano добавляют admission и очереди для batch-workload.
Основные идеи
Scheduling выбирает node для уже допущенного pod. Admission решает раньше: может ли workload начать работу сейчас с учётом quota и очереди.
Pending pod — факт: pod пока не запланирован. Причина может быть в GPU, node selector, taint, image pull или quota. Не объявляйте любой Pending «очередью».
Kueue управляет локальными очередями, cluster quota и admission workload. Workload ждёт допуска, а pods создаются или становятся runnable после получения ресурсов — так cluster не забивается бесполезными ожидающими pods.
Volcano — другой scheduler/набор механизмов для batch и gang scheduling. Gang scheduling полезен, когда distributed training нужен сразу на N GPU: один worker без остальных не приносит пользы.
Как это выглядит на практике
У команд research и production разные LocalQueue, но общий ClusterQueue с GPU quota. Приоритет production-serving выше; training job на 8 GPU ожидает admission целиком, а не занимает 2 GPU и висит часами.
Runbook для ожидающего job: проверить состояние Kueue → quota и borrowing policy → нужный ресурс и node labels → только затем смотреть события Kubernetes scheduler.
Что сделать после занятия
- [ ] Объясните разницу между admission и scheduling.
- [ ] Составьте runbook из четырёх проверок для workload, который не стартует.
- [ ] Определите workload, которому нужен gang scheduling.