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-namespaces
sembra 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-system
spazio dei nomi. Nell'esempio del messaggio, posso vedere lo default
spazio dei nomi. Viene kube-system
eliminato con il comando che hai allegato?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
per sbarazzarsi di quei fastidiosi controller di replica.
ing
anche l'eliminazione degli
Hai solo bisogno sed
di 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-namespaces
per ottenere l'elenco di tutti i pod in tutti gli spazi dei nomi.--no-headers=true
opzione per nascondere le intestazioni.s
comando di sed
per recuperare le prime due parole, che rappresentano namespace
e pod's name
rispettivamente, quindi assemblare il delete
comando utilizzandole.delete
di comando è come:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificatore di s
comando per eseguire il comando assemblato sopra, che eseguirà i delete
lavori effettivi .Per evitare di eliminare i pod nello kube-system
spazio dei nomi, è sufficiente aggiungere grep -v kube-system
per escludere lo kube-system
spazio dei nomi prima del sed
comando.
--all-namespaces
se non vuoi eliminare i pod nello kube-system
spazio dei nomi
Puoi semplicemente correre
kubectl delete all --all --all-namespaces
Il primo all
indica i tipi di risorse comuni (pod, replicaset, distribuzioni, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
Il secondo --all
significa selezionare tutte le risorse dei tipi selezionati
Si noti che all
non 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