Задание все еще выполняется даже при удалении узлов

#kubernetes #jobs

#кубернетес #Вакансии

Вопрос:

Я создал два кластера узлов и создал новое задание, используя образ busybox, который спит в течение 300 секунд. Я проверил, на каком узле выполняется это задание, используя

kubectl get pods -o wide

Я удалил узел, но, к удивлению, задание все еще заканчивалось для запуска на том же узле. Есть идеи, нормальное ли это поведение? Если нет, то как я могу это исправить?

Ответ №1:

Задания не запланированы и не выполняются на узлах. Роль задания состоит в том, чтобы просто определить политику, убедившись, что модуль с определенными спецификациями существует, и убедиться, что он работает до завершения задачи, независимо от того, успешно она выполнена или нет.

Когда вы создаете задание, вы объявляете политику, которую увидит встроенный job-controller модуль и для которой он создаст модуль. Затем встроенный kube-scheduler модуль увидит этот модуль без узла и прикрепит к нему модуль с идентификатором узла. Он kubelet увидит модуль с узлом, соответствующим его собственной идентичности, и, следовательно, будет запущен контейнер. Поскольку контейнер все еще будет работать, control-plane он будет знать, что узел и модуль все еще существуют.

Существует два способа взлома узла: один со сливом, а второй без слива. Процесс взлома узла без слива идентичен отключению сети или сбою сервера. Api-сервер сохранит ресурс узла на некоторое время, но он перестанет быть готовым. Затем капсулы будут медленно завершены. Однако, когда вы сливаете узел, это выглядит так, как будто вы не позволяете новым блокам планировать работу на узле и удаляете их с помощью kubectl delete pod .

В обоих случаях модули будут удалены, и у вас будет задание, которое не было выполнено до завершения и у которого нет модуля, поэтому job-controller для задания будет создан новый модуль, и количество заданий failed-attempts будет увеличено на 1, и цикл начнется снова.

Комментарии:

1. Спасибо, что поделились этим очень подробным потоком, действительно полезным