Po przejrzeniu dokumentów pojawia się wywołanie API w celu usunięcia poda „a”, ale czy istnieje sposób na zabicie wszystkich podów we wszystkich przestrzeniach nazw?
źródło
Po przejrzeniu dokumentów pojawia się wywołanie API w celu usunięcia poda „a”, ale czy istnieje sposób na zabicie wszystkich podów we wszystkich przestrzeniach nazw?
Nie ma polecenia, aby zrobić dokładnie to, o co prosiłeś.
Oto kilka bliskich dopasowań.
Możesz usunąć wszystkie pody w pojedynczej przestrzeni nazw za pomocą tego polecenia:
kubectl delete --all pods --namespace=foo
Możesz również usunąć wszystkie wdrożenia w przestrzeni nazw, co spowoduje usunięcie wszystkich podów dołączonych do wdrożeń odpowiadających przestrzeni nazw
kubectl delete --all deployments --namespace=foo
Możesz usunąć wszystkie przestrzenie nazw i każdy obiekt w każdej przestrzeni nazw (ale nie obiekty bez przestrzeni nazw, takie jak węzły i niektóre zdarzenia) za pomocą tego polecenia:
kubectl delete --all namespaces
Jednak to drugie polecenie prawdopodobnie nie jest czymś, co chcesz zrobić, ponieważ usunie elementy w przestrzeni nazw kube-system, co spowoduje, że twój klaster nie będzie nadawał się do użytku.
To polecenie usunie wszystkie przestrzenie nazw z wyjątkiem kube-system, co może być przydatne:
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
wydaje się czasami działać (nie wiem, co powoduje, że działa w niektórych środowiskach, a nie w innych). Działa dobrze z mojego hosta bastionu, ale nie z laptopa. Oba z systemem Debian i oba z tą samą wersją kubectl (wersja klastra 1.13)kube-system
przestrzeni nazw. W przykładzie wiadomości widzędefault
przestrzeń nazw. Zostałkube-system
usunięty wraz z dołączonym poleceniem?pozbyć się ich też nieznośnych kontrolerów replikacji.
źródło
ing
również usuwania danychPo prostu musisz
sed
to zrobić:Wyjaśnia:
kubectl get pods --all-namespaces
aby uzyskać listę wszystkich podów we wszystkich przestrzeniach nazw.--no-headers=true
opcji, aby ukryć nagłówki.s
polecenia of,sed
aby pobrać pierwsze dwa słowa, które reprezentują odpowiednionamespace
ipod's name
, a następnie ułóżdelete
polecenie za ich pomocą.delete
komenda jest podobna:kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modyfikatoras
polecenia, aby wykonać powyższe polecenie, które wykona rzeczywistą pracędelete
.Aby uniknąć usuwania podów w
kube-system
przestrzeni nazw, wystarczy dodać,grep -v kube-system
aby wykluczyćkube-system
przestrzeń nazw przedsed
poleceniem.źródło
--all-namespaces
jeśli nie chcesz usuwaćkube-system
Możesz po prostu biec
Pierwsza
all
oznacza typowe rodzaje zasobów (pody, repliki, wdrożenia, ...)kubectl get all == kubectl get pods,rs,deployments, ...
Drugi
--all
oznacza wybranie wszystkich zasobów wybranych rodzajówPamiętaj, że
all
nie obejmuje:Aby idealnie posprzątać,
źródło
Oto jeden wiersz, który można rozszerzyć za pomocą grep, aby filtrować według nazwy.
źródło
źródło
Jeśli masz już utworzone ponownie pody, pomyśl najpierw o usunięciu wszystkich wdrożeń
Po prostu zamień NAMSPACE i DEPLOYMENT na odpowiednie, możesz uzyskać wszystkie informacje o wdrożeniach za pomocą następującego polecenia
źródło
Wtyczka Kubectl bulk (zbiorcza akcja na krew) może ci się przydać, daje ci masowe operacje na wybranych zasobach. To jest polecenie do usuwania podów
Możesz sprawdzić szczegóły w tym
źródło
Tworzę kod Pythona, aby usunąć wszystko w przestrzeni nazw
delall.py
i wtedy
źródło
K8s całkowicie działa na fundamentach przestrzeni nazw. jeśli chcesz zwolnić cały zasób związany z określoną przestrzenią nazw.
możesz skorzystać z wymienionych poniżej:
kubectl delete przestrzeń nazw k8sdemo-app
źródło