Réponses:
Il n'y a pas de commande pour faire exactement ce que vous avez demandé.
Voici quelques matchs serrés.
Vous pouvez supprimer tous les pods dans un seul espace de noms avec cette commande:
kubectl delete --all pods --namespace=foo
Vous pouvez également supprimer tous les déploiements dans l'espace de noms, ce qui supprimera tous les pods attachés aux déploiements correspondant à l'espace de noms
kubectl delete --all deployments --namespace=foo
Vous pouvez supprimer tous les espaces de noms et tous les objets dans chaque espace de noms (mais pas les objets sans espace de noms, comme les nœuds et certains événements) avec cette commande:
kubectl delete --all namespaces
Cependant, cette dernière commande n'est probablement pas quelque chose que vous voulez faire, car elle supprimera des éléments dans l'espace de noms kube-system, ce qui rendra votre cluster inutilisable.
Cette commande supprimera tous les espaces de noms sauf kube-system, ce qui pourrait être utile:
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-namespacessemble fonctionner parfois (pas sûr de ce qui le fait fonctionner dans certains environnements et pas dans d'autres). Cela fonctionne bien depuis mon hôte bastion mais pas depuis un ordinateur portable. Les deux exécutant Debian et les deux exécutant la même version de kubectl (cluster version 1.13)
kube-systemespace de noms. Dans l'exemple de message, je peux voir l' defaultespace de noms. Est-il kube-systemsupprimé avec la commande que vous avez jointe?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
pour se débarrasser de ces contrôleurs de réplication encombrants aussi.
ingmanquez pour supprimer également les entrées
Il vous suffit sedde faire ceci:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
Explique:
kubectl get pods --all-namespacespour obtenir la liste de tous les pods dans tous les espaces de noms.--no-headers=trueoption pour masquer les en-têtes.scommande de sedpour récupérer les deux premiers mots, qui représentent namespaceet pod's namerespectivement, puis assemblez la deletecommande en les utilisant.deletecommande est comme:
kubectl --namespace kube-system delete pod heapster-eq3yw.emodificateur de scommande pour exécuter la commande assemblée ci-dessus, qui fera les deletetravaux réels .Pour éviter de supprimer des pods dans l' kube-systemespace de noms, il suffit d'ajouter grep -v kube-systempour exclure l' kube-systemespace de noms avant la sedcommande.
--all-namespacessi vous ne souhaitez pas supprimer les pods dans l' kube-systemespace de noms
Vous pouvez simplement courir
kubectl delete all --all --all-namespaces
Le premier alldésigne les types de ressources courants (pods, réplicasets, déploiements, ...)
kubectl get all == kubectl get pods,rs,deployments, ...Le deuxième --allmoyen de sélectionner toutes les ressources des types sélectionnés
Notez que cela alln'inclut pas:
Afin de nettoyer parfaitement,
Voici un one-liner qui peut être étendu avec grep pour filtrer par nom.
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
Si vous avez déjà des pods qui sont recréés, pensez d'abord à supprimer tous les déploiements
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Remplacez simplement le NAMSPACE et le DÉPLOIEMENT par ceux correspondants, vous pouvez obtenir toutes les informations de déploiement par la commande suivante
kubectl get deployments --all-namespaces
Le plugin Kubectl bulk (bulk-action on krew) peut vous être utile, il vous donne des opérations en masse sur les ressources sélectionnées. Ceci est la commande pour supprimer les pods
' kubectl bulk pods -n namespace delete '
Vous pouvez vérifier les détails dans ce
Je crée un code python pour tout supprimer dans l'espace de noms
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")
puis
kubectl get all -n kong -o json | python delall.py
K8s fonctionne complètement sur les fondamentaux de l'espace de noms. si vous souhaitez libérer toutes les ressources liées à l'espace de noms spécifié.
vous pouvez utiliser les éléments mentionnés ci-dessous:
kubectl supprimer l'espace de noms k8sdemo-app