Невозможно удалить все модули в Kubernetes - Очистить / перезапустить Kubernetes - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь удалить / удалить все модули, работающие в моей среде. Когда я выдаю

Докер PS

Я получаю вывод ниже. Это пример скриншота. Как видите, все они К8. Я хотел бы удалить все стручки / удалить их.

enter image description here

Я перепробовал все нижеприведенные подходы, но они продолжают появляться снова и снова

sudo kubectl delete --all pods --namespace=default/kube-public #returns "no resources found" for both default and kube-public namespaces
sudo kubectl delete --all pods --namespace=kube-system # shows "pod xxx deleted"

enter image description here

sudo kubectl get deployments # returns no resources found

Помимо вышесказанного, я также пытался использовать docker stop и docker rm с идентификаторами контейнеров, но они либо возрождались. Я хочу очистить их всех. Я хотел бы начать с самого начала

Я выходил из системы и снова входил в нее несколько раз, но все же я вижу эти элементы.

Можете ли вы помочь мне удалить все модули, и я ожидаю, что вывод "docker ps" не будет иметь никаких связанных с kubernetes элементов, как показано выше?

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

sudo kubectl get deployments # returns no resources found

Deployments - не единственные контроллеры в Kubernetes, которые могут управлять вашими модулями.Их много: StatefulSet, ReplicaSet и т. Д. (См. Документацию Controllers doc )

Короче говоря, aКонтроллер отвечает за работу всех модулей, которыми он управляет, и создает их при необходимости - когда вы удалите все модули, соответствующий контроллер обнаружит, что они отсутствуют, и просто создаст их заново, чтобы убедиться, что он соответствует его спецификациям.

Если вы хотите эффективно удалить все модули, вы должны удалить все связанные контроллеры (или обновить их, чтобы установить для их реплики значение 0), например:

# do NOT run this in the kube-system namespace, it may corrupt your cluster
# You can also specify --namespace xxx to delete in a specific namespace
kubectl delete deployment --all # configures ReplicaSets, deleting Deployments should delete ReplicaSet as well as associated Pods
kubectl delete statefulset --all
kubectl delete daemonset --all 
kubectl delete job --all
kubectl delete cronjob --all 
kubectl delete replicationcontroller --all # their should not be any ReplicationController as Deployment should be used
# Then delete what you find

РЕДАКТИРОВАТЬ: как указано PEmkambaram ответ, вы также можете удалить все пространство имен с помощью kubectl delete namespace mynamespace (конечно, не удаляйте kube-system), но он также может удалить другие компоненты в пространстве имен, такие как Services


Важнопримечания:

  • Вы также должны соблюдать осторожность при удалении модулей или объектов в пространстве имен kube-system, которые связаны с внутренним подключением самого кластера.
  • Вам следуетНе удаляйте непосредственно компоненты Kubernetes, удаляя их базовые контейнеры с помощью команд docker, это может привести к неожиданным последствиям, вместо этого используйте kubectl.
1 голос
/ 03 июля 2019

вы не должны удалять модули из пространства имен kube-system.все основные модули kubernetes работают в этом пространстве имен.если вы испортите эти модули, ваш кластер может не работать.

Вместо этого удалите пространства имен, в которых вы выполняете рабочие нагрузки приложения.это очистило бы все ресурсы из соответствующего пространства имен.

...