Как предотвратить планировщик / автоматическое масштабирование, чтобы исключить независимые задания (которые выполняются до завершения)? - PullRequest
3 голосов
/ 24 апреля 2019

У меня есть кластер K8s, который выполняет независимые задания (каждое задание имеет один модуль), и я ожидаю, что они будут выполняться до конца.Планировщик, однако, иногда перепланирует их на другом узле.Мои задания должны быть однопроходными, и перезапуск их на другом узле для меня неприемлемо.

Я смотрел на бюджеты разрушения Pod (PDB), но, насколько я понимаю, их селекторы применяются к ярлыку Pod.Поскольку каждая моя работа отличается и имеет отдельную метку, как я могу использовать PDB, чтобы сообщить K8s, что все моих модулей имеют значение maxUnavailable 0?

Я также использовал эту аннотацию

"cluster-autoscaler.kubernetes.io/safe-to-evict": false

, но это не влияет на выселение модулей из-за нехватки ресурсов.

В идеале я должен быть в состоянии сказать K8s, что ни один из моих модулей не должен быть выселенесли они не завершены.

1 Ответ

3 голосов
/ 24 апреля 2019

Вы должны указать ресурсы для того, чтобы ваша работа стала гарантированным качеством обслуживания:

resources:
  limits:
    memory: "200Mi"
    cpu: "700m"
  requests:
    memory: "200Mi"
    cpu: "700m"

Запросы должны быть равны лимитам - тогда ваш модуль станет Гарантированным и больше не будет выселен.

Подробнее: https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...