Удаление узла (ноды) из кластера 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!






