Перевод узла в режим обслуживания
В процессе эксплуатации платформы Nova Container Platform может возникнуть необходимость перевода узла в режим обслуживания. В режиме обслуживания узел исключается из очереди Kubernetes Scheduler, и на нем не могут размещаться вновь запланированные рабочие нагрузки. Существующие рабочие нагрузки будут эвакуированы и запущены на других подходящих узлах кластера Kubernetes (процесс drain, или освобождение от нагрузки). Исключение составляют нагрузки, запущенные контроллером DaemonSet, перезапуск которых на других узлах невозможен.
Перевод узла кластера Kubernetes в режим обслуживания выполняется с помощью утилиты kubectl согласно процедуре, описанной далее.
|
Объекты Pod, которые не управляются контроллерами ReplicaSet, DaemonSet, StatefulSet и Job, не могут быть эвакуированы с узла и будут удалены при переводе узла в режим обслуживания. Убедитесь, что в кластере Kubernetes есть достаточное количество узлов, отвечающих тем же критериям, что и переводимый в режим обслуживания узел. В противном случае эвакуированные объекты Pod будут находиться в состоянии |
1. Перевод узла кластера в режим обслуживания
Перевести узел кластера в режим обслуживания можно двумя способами, описанными ниже.
1.1. С помощью веб-интерфейса
Для перевода узла в режим обслуживания с помощью веб-интерфейса следуйте процедуре ниже.
-
В консоли Nova перейдите к разделу Узлы кластера → Nodes.

-
Напротив необходимого узла нажмите на
(три точки) и выберите пункт Освободить нагрузки.
Или зайдите в нужный узел, нажмите действия сверху справа и выберите пункт Освободить от нагрузки.

-
В открывшемся окне измените параметры (при необходимости) и нажмите Освободить от нагрузки.

При запуске процесса освобождения узла от нагрузки (drain) узел помечается как недоступный для распределения новых объектов Pod (устанавливается признак Планирование отключено). Объекты Pod на узле принудительно завершаются и перераспределяются на другие узлы кластера. После успешного завершения узел остается в статусе Ready, но с меткой Освобожден от нагрузки. Для восстановления работы узла и распределения объектов Pod на этот узел необходимо снять блокировку планирования.
1.2. С помощью CLI
Для перевода узла в режим обслуживания с помощью командной строки следуйте процедуре ниже.
1.2.1. Необходимые условия
-
На локальном компьютере установлена утилита nova-ctl
-
Имеется доступ к Kubernetes API с привилегиями администратора кластера (
cluster-admin) -
Имеется закрытый ключ SSH на локальном компьютере, который необходимо предоставить утилите
nova-ctl
1.2.2. Процедура
-
Получите список всех узлов кластера и определите имя узла, который необходимо вывести в режим обслуживания:
kubectl get nodesПримерkubectl get nodes NAME STATUS ROLES AGE VERSION master.mycompany.local Ready control-plane 5d17h v1.26.8 worker.mycompany.local Ready ingress,worker 5d17h v1.26.8 infra.mycompany.local Ready infra 5d17h v1.26.8 -
Переведите выбранный узел в состояние
SchedulingDisabled, выполнив команду:kubectl cordon <имя узла>Пример$ kubectl cordon worker.mycompany.local node/worker.mycompany.local cordoned -
Выполните эвакуацию всех рабочих нагрузок с выбранного узла:
kubectl drain <имя узла> --ignore-daemonsetsПример$ kubectl drain worker.mycompany.local --ignore-daemonsets node/worker.mycompany.local already cordoned Warning: ignoring DaemonSet-managed Pods: kube-system/cilium-gvkgx, kube-system/kube-proxy-rdmzh, nova-csi-drivers/nova-oauth-csi-provider-6hnbs, nova-csi-drivers/nova-secrets-store-csi-driver-qcmnh, nova-ingress-public/nova-ingress-public-controller-g8g7h, nova-monitoring/nova-cadvisor-f9pfm, nova-monitoring/nova-prometheus-node-exporter-ppfn6, nova-neuvector/neuvector-enforcer-pod-nxwch, nova-secrets-webhook/nova-oauth-secrets-webhook-slssp evicting pod kube-system/coredns-5b7664d478-w269k evicting pod kube-system/coredns-5b7664d478-7vbbb pod/coredns-5b7664d478-w269k evicted pod/coredns-5b7664d478-7vbbb evicted node/worker.mycompany.local drainedДля удаления с узла объектов Pod, запущенных без использования контроллеров ReplicaSet, DaemonSet, StatefulSet и Job, используйте
kubectl drainс опцией--force. -
После успешного выполнения команды
kubectl drainвы можете выключить узел для проведения запланированных работ.
2. Возврат узла кластера в режим эксплуатации
Вернуть узел кластера в режим эксплуатации можно двумя способами, описанными ниже.
2.1. С помощью веб-интерфейса
Для возврата узла в режим эксплуатации с помощью веб-интерфейса в том же выпадающем списке или при нажатии на статус выберите пункт Разрешить размещение ресурсов.

2.2. С помощью CLI
Для возврата узла в режим эксплуатации с помощью командной строки следуйте процедуре ниже.
2.2.1. Предварительные условия
-
На локальном компьютере установлена утилита nova-ctl
-
Имеется доступ к Kubernetes API с привилегиями администратора кластера (
cluster-admin) -
Имеется закрытый ключ SSH на локальном компьютере, который необходимо предоставить утилите
nova-ctl
2.2.2. Процедура
-
После завершения работ включите ранее выключенный узел и дождитесь его загрузки.
-
Проверьте, что узел стал доступен для размещения рабочих нагрузок (статус узла
Ready), выполнив команду:kubectl get nodesПримерkubectl get nodes NAME STATUS ROLES AGE VERSION master.mycompany.local Ready control-plane 5d18h v1.26.8 worker.mycompany.local Ready,SchedulingDisabled ingress,worker 5d18h v1.26.8 infra.mycompany.local Ready infra 5d18h v1.26.8 -
Разрешите запуск рабочих нагрузок на выбранном узле, выполнив команду:
kubectl uncordon <имя узла>Пример$ kubectl uncordon worker.mycompany.local node/worker.mycompany.local uncordoned -
Узел готов к эксплуатации в кластере Kubernetes.