Я начал стручки с командой
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1
Что-то пошло не так, и теперь я не могу это удалить Pod
.
Я пытался использовать методы, описанные ниже, но Pod
продолжает создаваться заново.
$ kubectl delete pods busybox-na3tm
pod "busybox-na3tm" deleted
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-vlzh3 0/1 ContainerCreating 0 14s
$ kubectl delete pod busybox-vlzh3 --grace-period=0
$ kubectl delete pods --all
pod "busybox-131cq" deleted
pod "busybox-136x9" deleted
pod "busybox-13f8a" deleted
pod "busybox-13svg" deleted
pod "busybox-1465m" deleted
pod "busybox-14uz1" deleted
pod "busybox-15raj" deleted
pod "busybox-160to" deleted
pod "busybox-16191" deleted
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox-c9rnx 0/1 RunContainerError 0 23s
kubernetes
kubectl
yman
источник
источник
kubectl get all -o name
?kubectl get events
что создает эти объекты?kubctl get rc
посмотреть, был ли создан ReplicationController. Если так, удалите это, затем удалите стручки.kubectl get deployment
kubectl delete deployment <deployment_name>
, Чтобы получить название развертывания, сделайтеkubectl get deployments
Ответы:
Вам нужно удалить развертывание, которое, в свою очередь, должно удалить пакеты и наборы реплик https://github.com/kubernetes/kubernetes/issues/24137
Чтобы перечислить все развертывания:
Затем, чтобы удалить развертывание:
Где NAMESPACE - это пространство имен, в котором оно находится, а DEPLOYMENT -
name
это развертывание.В некоторых случаях он также может быть запущен из-за задания или демона. Проверьте следующее и выполните соответствующую команду удаления.
источник
kubectl create
команды.kubectl get jobs
kubectl delete replicasets,subscriptions,deployments,jobs,services,pods --all -n <namespace>
Вместо того, чтобы пытаться выяснить, является ли это развертывание, deamonset, statefulset ... или что (в моем случае это был контроллер репликации, который продолжал охватывать новые модули :) Для того, чтобы определить, что именно продолжало расширять образ, который я получил все ресурсы с помощью этой команды:
kubectl get all
Конечно, вы также можете получить все ресурсы из всех пространств имен:
kubectl get all --all-namespaces
или определите пространство имен, которое вы хотели бы проверить:
kubectl get all -n NAMESPACE_NAME
Как только я увидел, что контроллер репликации отвечает за мою проблему, я удалил его:
kubectl delete replicationcontroller/CONTROLLER_NAME
источник
если ваш модуль имеет имя, например
name-xxx-yyy
, он может управляться с именем replicasets.appsname-xxx
, вы должны сначала удалить этот набор перед удалением модуляkubectl delete replicasets.apps name-xxx
источник
kubectl delete --all jobs -n <namespace>
kubectl get replicasets.apps -n <namespace>
(или --all-namespaces)Также обратите внимание на наборы состояний
удалить все наборы с сохранением состояния в пространстве имен
удалить их по одному
источник
В некоторых случаях модули не исчезают даже при удалении развертывания. В этом случае, чтобы принудительно удалить их, вы можете запустить следующую команду.
kubectl delete pods podname --grace-period=0 --force
источник
Recreate
.Это предоставит информацию обо всех модулях, развертываниях, службах и заданиях в пространстве имен.
стручки могут быть созданы развертыванием или заданиями
Если вы удалите развертывание или задание, то перезапуск модулей может быть остановлен.
источник
Многие ответы здесь говорят об удалении определенного объекта k8s, но вы можете удалить сразу несколько объектов вместо одного за другим:
kubectl delete deployments,jobs,services,pods --all -n <namespace>
В моем случае я использую кластер OpenShift с OLM - Operator Lifecycle Manager . OLM - это тот, кто контролирует развертывание, поэтому, когда я удалил развертывание, было недостаточно остановить перезапуск модулей.
Только когда я удалил OLM и его подписку , развертывание, службы и модули исчезли.
Сначала перечислите все объекты k8s в вашем пространстве имен:
OLM не указан в списке
get all
, поэтому я ищу его специально:Теперь удалите все объекты, включая OLM, подписки, развертывания, наборы реплик и т. Д.
Перечислите объекты снова - все пропало:
источник
Когда модуль воссоздается автоматически, даже после удаления модуля вручную, эти модули были созданы с помощью развертывания. При создании развертывания автоматически создаются ReplicaSet и Pod. В зависимости от того, сколько реплик вашего модуля вы упомянули в сценарии развертывания, он изначально создаст это количество модулей. Когда вы попытаетесь удалить любой модуль вручную, он автоматически создаст этот модуль снова.
Да, иногда вам нужно удалять стручки с силой. Но в этом случае силовая команда не работает.
источник
Вместо удаления NS вы можете попробовать удалить replicaSet
Затем удалите реплику
источник
После прохождения интерактивного урока я получил множество пакетов, сервисов, развертываний:
Чтобы все почистить,
delete --all
работало нормальноЭто оставило меня с (что я думаю, это) пустой кластер Kubernetes:
источник
Если у вас есть работа, которая продолжает работать, вам нужно найти работу и удалить ее:
kubectl get job --all-namespaces | grep <name>
и
kubectl delete job <job-name>
источник
Ты можешь сделать
kubectl get replicasets
проверить старое развертывание в зависимости от возраста или времени.Удалить старое развертывание на основе времени, если вы хотите удалить тот же текущий запущенный модуль приложения
источник
Я также столкнулся с проблемой, я использовал приведенную ниже команду для удаления развертывания.
но все еще стручки воссоздали, поэтому я пересек проверку набора реплик с помощью команды ниже
затем отредактируйте репликацию от 1 до 0
источник
Основной причиной заданного вопроса был атрибут спецификации deploy / job / replicasets,
strategy->type
который определяет, что должно произойти, когда модуль будет уничтожен (неявно или явно). В моем случае это былоRecreate
.Согласно ответу @ nomad , удаление deploy / job / replicasets - это простое исправление, позволяющее избежать экспериментов со смертельными комбинациями перед тем, как испортить кластер как начинающий пользователь.
Попробуйте следующие команды, чтобы понять скрытые действия перед тем, как перейти к отладке:
источник
В моем случае я развернул через файл типа YAML,
kubectl apply -f deployment.yaml
и решение, кажется, заключается в том, чтобы удалить черезkubectl delete -f deployment.yaml
источник
У меня возникла похожая проблема: после удаления deploy (
kubectl delete deploy <name>
), модули продолжали работать и были автоматически созданы после удаления (kubectl delete po <name>
).Оказалось, что связанный набор реплик по какой-то причине не удалялся автоматически, и после удаления этого (
kubectl delete rs <name>
) можно было удалять модули.источник
Для развертываний с наборами состояний (или службами, заданиями и т. Д.) Вы можете использовать эту команду:
Эта команда завершает все, что выполняется в указанном
<NAMESPACE>
И силовой
источник