Risposte:
Non c'è alcun comando per fare esattamente quello che hai chiesto.
Ecco alcune corrispondenze ravvicinate.
Puoi eliminare tutti i pod in un singolo spazio dei nomi con questo comando:
kubectl delete --all pods --namespace=foo
Puoi anche eliminare tutte le distribuzioni nello spazio dei nomi che eliminerà tutti i pod associati alle distribuzioni corrispondenti allo spazio dei nomi
kubectl delete --all deployments --namespace=foo
Puoi eliminare tutti gli spazi dei nomi e tutti gli oggetti in ogni spazio dei nomi (ma non gli oggetti senza spazio, come nodi e alcuni eventi) con questo comando:
kubectl delete --all namespaces
Tuttavia, quest'ultimo comando non è probabilmente qualcosa che vuoi fare, poiché eliminerà le cose nello spazio dei nomi del sistema kube, il che renderà il tuo cluster non utilizzabile.
Questo comando eliminerà tutti gli spazi dei nomi tranne kube-system, che potrebbero essere utili:
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-namespacessembra funzionare a volte (non sono sicuro di ciò che lo fa funzionare in alcuni ambienti e non in altri). Funziona bene dal mio host bastione ma non dal laptop. Entrambi eseguono debian ed entrambi eseguono la stessa versione di kubectl (versione cluster 1.13)
kube-systemspazio dei nomi. Nell'esempio del messaggio, posso vedere lo defaultspazio dei nomi. Viene kube-systemeliminato con il comando che hai allegato?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
per sbarazzarsi di quei fastidiosi controller di replica.
inganche l'eliminazione degli
Hai solo bisogno seddi fare questo:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
spiega:
kubectl get pods --all-namespacesper ottenere l'elenco di tutti i pod in tutti gli spazi dei nomi.--no-headers=trueopzione per nascondere le intestazioni.scomando di sedper recuperare le prime due parole, che rappresentano namespacee pod's namerispettivamente, quindi assemblare il deletecomando utilizzandole.deletedi comando è come:
kubectl --namespace kube-system delete pod heapster-eq3yw.emodificatore di scomando per eseguire il comando assemblato sopra, che eseguirà i deletelavori effettivi .Per evitare di eliminare i pod nello kube-systemspazio dei nomi, è sufficiente aggiungere grep -v kube-systemper escludere lo kube-systemspazio dei nomi prima del sedcomando.
--all-namespacesse non vuoi eliminare i pod nello kube-systemspazio dei nomi
Puoi semplicemente correre
kubectl delete all --all --all-namespaces
Il primo allindica i tipi di risorse comuni (pod, replicaset, distribuzioni, ...)
kubectl get all == kubectl get pods,rs,deployments, ...Il secondo --allsignifica selezionare tutte le risorse dei tipi selezionati
Si noti che allnon include:
Per pulire perfettamente,
Ecco un one-liner che può essere esteso con grep per filtrare per nome.
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
Se disponi già di pod ricreati, pensa prima di eliminare tutte le distribuzioni
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Basta sostituire NAMSPACE e DEPLOYMENT con quelli corrispondenti, è possibile ottenere tutte le informazioni sulle distribuzioni con il comando seguente
kubectl get deployments --all-namespaces
Il plug-in bulk di Kubectl (bulk-action su krew) può essere utile per te, ti dà operazioni di massa su risorse selezionate. Questo è il comando per eliminare i pod
' kubectl bulk pods -n namespace delete '
Puoi controllare i dettagli in questo
Creo un codice Python per eliminare tutto nello spazio dei nomi
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")
e poi
kubectl get all -n kong -o json | python delall.py
K8s funziona completamente sul fondamentale dello spazio dei nomi. se ti piace rilasciare tutte le risorse relative allo spazio dei nomi specificato.
è possibile utilizzare quanto segue:
kubectl elimina lo spazio dei nomi k8sdemo-app