Как удалить все ресурсы из Kubernetes один раз?

Включают:

  • Наборы демонов
  • развертывания
  • работы
  • Бобы
  • Наборы реплик
  • Контроллеры репликации
  • Наборы состояний
  • Сервисы
  • ...

Если есть репликационный контроллер, при удалении некоторых развертываний они будут регенерировать. Есть ли способ вернуть kubenetes для инициализации статуса?

Ответ 1

Пространство имен Kubernetes было бы идеальным вариантом для вас. Вы можете легко создать ресурс пространства имен. kubectl create -f custom-namespace.yaml

$ apiVersion: v1 kind: Namespace metadata: name:custom-namespace

Теперь вы можете развернуть все остальные ресурсы (Deployment, ReplicaSet, Services и т.д.) В этих пользовательских пространствах имен.

Если вы хотите удалить все эти ресурсы, вам просто нужно удалить собственное пространство имен. удалив пользовательское пространство имен, все остальные ресурсы будут удалены. Без него ReplicaSet может создавать новые модули, когда существующие контейнеры удаляются.

Чтобы работать с Namespace, вам нужно добавить флаг --namespace в команды k8s.

например

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

вы можете перечислить все контейнеры в пользовательском пространстве имен.

kubectl get pods --namespace=custom-namespace

Ответ 2

Метод 1: удалить все из текущего пространства имен (которое обычно является пространством имен по умолчанию), используя kubectl delete:

kubectl delete all --all

all относится ко всем типам ресурсов, таким как модули, развертывания, службы и т.д. --all используется для удаления каждого объекта этого типа ресурса вместо указания его с использованием его имени или метки.

Чтобы удалить все из определенного пространства имен, вы используете флаг -n:

kubectl delete all --all -n {namespace}

Метод 2: Вы также можете удалить пространство имен и воссоздать его. Это удалит все, что ему принадлежит:

kubectl delete namespace {namespace}
kubectl create namespace {namespace}

Примечание (спасибо @Marcus): all в kubernetes не относится к каждому объекту kubernetes, такому как ресурсы уровня администратора (ограничения, квота, политика, правила авторизации). Если вы действительно хотите удалить все, лучше удалить пространство имен и заново создать его. Еще один способ сделать это - использовать kubectl api-resources для получения всех типов ресурсов, как показано здесь:

kubectl delete "$(kubectl api-resources --namespaced=true --verbs=delete -o name | tr "\n" "," | sed -e 's/,$//')" --all