Посмотрев документы, есть API-вызов для удаления модуля «а», но есть ли способ убить все модули во всех пространствах имен?
источник
Посмотрев документы, есть API-вызов для удаления модуля «а», но есть ли способ убить все модули во всех пространствах имен?
Там нет команды, чтобы сделать именно то, что вы просили.
Вот несколько близких матчей.
Вы можете удалить все модули в одном пространстве имен с помощью этой команды:
kubectl delete --all pods --namespace=foo
Вы также можете удалить все развертывания в пространстве имен, что приведет к удалению всех модулей, связанных с развертываниями, соответствующими пространству имен.
kubectl delete --all deployments --namespace=foo
Вы можете удалить все пространства имен и каждый объект в каждом пространстве имен (но не объекты без пространства имен, такие как узлы и некоторые события) с помощью этой команды:
kubectl delete --all namespaces
Однако, последняя команда, вероятно, не то, что вы хотите сделать, поскольку она удалит вещи в пространстве имен системы kube, что сделает ваш кластер непригодным для использования.
Эта команда удалит все пространства имен, кроме kube-system, что может быть полезно:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete pods --all --all-namespaces
Кажется, иногда работает (не уверен, что заставляет его работать в некоторых средах, а не в других). Это хорошо работает с моего хоста бастион, но не с ноутбука. Оба работают под управлением Debian и работают с одной и той же версией kubectl (кластерная версия 1.13)kube-system
пространстве имен. В примере сообщения я вижуdefault
пространство имен. Является лиkube-system
удалить команду вы прикрепленная?избавиться от них надоедливые контроллеры репликации тоже.
источник
ing
также не можете удалитьВам просто нужно
sed
сделать это:Объясняет:
kubectl get pods --all-namespaces
чтобы получить список всех модулей во всех пространствах имен.--no-headers=true
опцию, чтобы скрыть заголовки.s
командуsed
для получения первых двух слов, которые представляютnamespace
и,pod's name
соответственно, затем собратьdelete
команду, используя их.delete
команда так же , как:kubectl --namespace kube-system delete pod heapster-eq3yw
.e
модификаторs
команды, чтобы выполнить команду, собранную выше, которая выполнит фактическиеdelete
работы.Чтобы избежать удаления модулей в
kube-system
пространстве имен, просто необходимо добавитьgrep -v kube-system
исключающееkube-system
пространство имен передsed
командой.источник
--all-namespaces
если вы не хотите удалятьkube-system
Вы можете просто запустить
Первый
all
означает общие виды ресурсов (модули, наборы реплик, развертывания, ...)kubectl get all == kubectl get pods,rs,deployments, ...
Второе
--all
означает выбрать все ресурсы выбранных видов.Обратите внимание, что
all
не включает в себя:Для того, чтобы очистить идеально,
источник
Вот однострочник, который можно расширить с помощью grep для фильтрации по имени.
источник
источник
Если у вас уже есть воссозданные модули, сначала подумайте об удалении всех развертываний.
Просто замените NAMSPACE и DEPLOYMENT на соответствующие, вы можете получить информацию обо всех развертываниях с помощью следующей команды
источник
Плагин Kubectl Bulk (массовое действие на Krew) может быть полезен для вас, он дает вам массовые операции на выбранных ресурсах. Это команда для удаления стручков
Вы можете проверить детали в этом
источник
Я создаю код Python, чтобы удалить все в пространстве имен
delall.py
а потом
источник
K8s полностью работает на фундаментальном пространстве имен. если вы хотите освободить все ресурсы, связанные с указанным пространством имен.
Вы можете использовать нижеуказанные:
kubectl удалить пространство имен k8sdemo-app
источник