Ответ 1
Если вы тестируете вещи, самый простой способ будет
kubectl delete deployment --all
Несмотря на то, что вы используете мини-куб, проще всего было бы удалить машину и начать заново с нового узла
minikube delete
minikube start
Если мы говорим о производственном кластере, у Kubernetes есть встроенная функция для очистки узла кластера и безопасного удаления всех объектов с этого узла.
Вы можете использовать
kubectl drain
для безопасногоkubectl drain
всех ваших модулей из узла перед выполнением обслуживания узла. Безопасное выселение позволяет контейнерам pods корректно завершаться и будет учитывать указанные вами PodDisruptionBudgets.Примечание. По умолчанию
kubectl drain
игнорирует некоторые системные модули на узле, которые невозможно уничтожить; см. дополнительную информацию в документации по kubectl.Когда
kubectl drain
возвращается успешно, это указывает на то, что всеkubectl drain
(кроме исключенных, как описано в предыдущем параграфе) были безопасно выселены (с учетом желаемого грациозного периода завершения и без нарушения каких-либо SLO нарушения на уровне приложения). Тогда можно безопасно отключить узел, отключив его физическую машину или, если он работает на облачной платформе, удалив его виртуальную машину.
Сначала определите название узла, который вы хотите использовать. Вы можете перечислить все узлы в вашем кластере с помощью
kubectl get nodes
Затем скажите Kubernetes, чтобы истощить узел:
kubectl drain <node name>
Как только он вернется (без сообщения об ошибке), вы можете выключить узел (или, что эквивалентно, если на облачной платформе удалите виртуальную машину, поддерживающую узел). drain
ждет изящного прекращения. Вы не должны работать на машине, пока команда не завершится.
Если вы оставите узел в кластере во время операции обслуживания, вам нужно запустить
kubectl uncordon <node name>
впоследствии сообщить Kubernetes, что он может возобновить планирование новых модулей на узле.
Пожалуйста, обратите внимание, что если есть какие -то стручки, которые не управляются ReplicationController, ReplicaSet, DaemonSet, StatefulSet или задания, а затем drain
не будут удалены все стручки, если вы не используете --force, как указано в документации.
kubectl drain <node name> --force