Как предотвратить планировщик / автоматическое масштабирование, чтобы исключить независимые задания (которые выполняются до завершения)?
У меня есть кластер K8s, который выполняет независимые задания (каждое задание имеет один модуль), и я ожидаю, что они будут выполняться до конца. Планировщик, однако, иногда перепланирует их на другом узле. Мои задания должны быть однопроходными, и перезапуск их на другом узле для меня неприемлемо.
Я смотрел на бюджеты разрушения Pod (PDB), но насколько я понимаю, их селекторы относятся к ярлыку Pod. Поскольку каждая моя работа отличается от другой и имеет отдельную метку, как мне использовать PDB, чтобы сообщить K8, что все мои модули имеют значение maxUnavailable, равное 0?
Я также использовал эту аннотацию
"cluster-autoscaler.kubernetes.io/safe-to-evict": false
но это не влияет на выселение контейнеров из-за нехватки ресурсов.
В идеале я должен быть в состоянии сказать K8s, что ни один из моих Стручков не должен быть выселен, если они не завершены.
1 ответ
Вы должны указать ресурсы, чтобы ваша работа стала гарантированным качеством обслуживания:
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"
Запросы должны быть равны лимитам - тогда ваш модуль станет гарантированным и больше не будет выселен.
Читать подробнее: https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod