Удалить все содержимое с узла кубернетов

Как удалить все содержимое узла kubernetes?
Содержимое включает в себя развертывания, наборы реплик и т.д. Я попытался удалить деплименты отдельно. Но kubernetes воссоздает все стручки снова.
Есть ли способы удалить все наборы реплик, присутствующие в узле?

Ответ 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

Ответ 2

Kubenertes предоставляет объект пространств имен для изоляции и разделения озабоченности. Поэтому в пользовательском пространстве имен рекомендуется применять все объекты ресурсов k8s (Deployment, ReplicaSet, Pods, Services и другие).

Теперь Если вы хотите удалить все соответствующие и связанные ресурсы k8s, вам просто нужно удалить пространство имен, которое удалит все эти ресурсы.

kubectl create namespace custom-namespace
kubectl create -f deployment.yaml --namespace=custom-namespace
kubectl delete namespaces custom-namespace

Я приложил ссылку для дальнейших исследований.

Пространства имен

Ответ 3

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

Что в итоге сработало для меня:

kubectl delete replicaset --all

Удаление их по одному не сработало; только с флагом --all все --all были удалены без повторного создания.

Ответ 4

minikube delete
rm -rf ~/.minikube
minikube start