Odpowiedzi:
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?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
pozbyć się ich też nieznośnych kontrolerów replikacji.
ing
również usuwania danych
Po prostu musisz sed
to zrobić:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
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ą odpowiednio namespace
i pod's name
, a następnie ułóż delete
polecenie za ich pomocą.delete
komenda jest podobna:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modyfikatora s
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 przed sed
poleceniem.
--all-namespaces
jeśli nie chcesz usuwać kube-system
Możesz po prostu biec
kubectl delete all --all --all-namespaces
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ów
Pamiętaj, że all
nie obejmuje:
Aby idealnie posprzątać,
Oto jeden wiersz, który można rozszerzyć za pomocą grep, aby filtrować według nazwy.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
Jeśli masz już utworzone ponownie pody, pomyśl najpierw o usunięciu wszystkich wdrożeń
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Po prostu zamień NAMSPACE i DEPLOYMENT na odpowiednie, możesz uzyskać wszystkie informacje o wdrożeniach za pomocą następującego polecenia
kubectl get deployments --all-namespaces
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
' kubectl bulk pods -n namespace delete '
Możesz sprawdzić szczegóły w tym
Tworzę kod Pythona, aby usunąć wszystko w przestrzeni nazw
delall.py
import json,sys,os;
obj=json.load(sys.stdin);
for item in obj["items"]:
os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")
i wtedy
kubectl get all -n kong -o json | python delall.py
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