Как удалить все содержимое узла 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