Удаление узла (ноды) из кластера Kubernetes — это процесс, который включает несколько шагов. Это необходимо для безопасного удаления узла, чтобы не нарушить работу кластера. Вот пошаговая инструкция:
Шаг 1: Отключите узел
Прежде чем удалять узел, его нужно отключить, чтобы Kubernetes перестал планировать на нем новые поды.
- Получите список узлов:
kubectl get nodes
- Отключите узел:
Используйте командуkubectl cordon
, чтобы пометить узел как “непланируемый”:kubectl cordon <имя_узла>
Пример:
kubectl cordon node-1
После этого узел будет помечен как
SchedulingDisabled
.
Шаг 2: Удалите поды с узла
Перед удалением узла убедитесь, что все поды на нем перемещены на другие узлы.
- Посмотрите поды на узле:
kubectl get pods -o wide --all-namespaces | grep <имя_узла>
- Удалите поды с узла:
Используйте командуkubectl drain
, чтобы безопасно удалить все поды с узла:kubectl drain <имя_узла> --ignore-daemonsets --delete-emptydir-data --force
--ignore-daemonsets
: Игнорирует поды, созданные DaemonSet (например,kube-proxy
).--delete-emptydir-data
: Удаляет поды, использующиеemptyDir
(временные данные).--force
: Принудительно удаляет поды, если они не управляются ReplicaSet или Deployment.
Пример:
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data --force
Этот процесс может занять некоторое время, так как Kubernetes перемещает поды на другие узлы.
Шаг 3: Удалите узел из кластера
После того как все поды удалены, можно удалить узел из кластера.
- Удалите узел:
kubectl delete node <имя_узла>
Пример:
kubectl delete node node-1
Шаг 4: Удалите физический узел (если требуется)
Если вы удаляете физический сервер или виртуальную машину, выполните следующие шаги:
- Остановите kubelet:
На узле, который вы хотите удалить, остановите службуkubelet
:sudo systemctl stop kubelet
- Удалите узел из инвентаря:
Если вы используете инструменты управления кластером (например,kubespray
илиkops
), удалите узел из конфигурации. - Удалите физический сервер или виртуальную машину:
- Если это физический сервер, отключите его от сети.
- Если это виртуальная машина, удалите ее из гипервизора.
Шаг 5: Проверьте состояние кластера
После удаления узла убедитесь, что кластер работает корректно:
- Посмотрите список узлов:
kubectl get nodes
- Проверьте состояние подов:
kubectl get pods -o wide --all-namespaces
Примечания
- Если вы удаляете узел, на котором работают критические поды (например, системные поды), убедитесь, что они перемещены на другие узлы.
- Если вы используете облачный провайдер (например, AWS, GCP, Azure), удалите узел через API провайдера.
Теперь узел успешно удален из кластера Kubernetes!