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-namespaces
semble 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-system
espace de noms. Dans l'exemple de message, je peux voir l' default
espace de noms. Est-il kube-system
supprimé 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.
ing
manquez pour supprimer également les entrées
Il vous suffit sed
de 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-namespaces
pour obtenir la liste de tous les pods dans tous les espaces de noms.--no-headers=true
option pour masquer les en-têtes.s
commande de sed
pour récupérer les deux premiers mots, qui représentent namespace
et pod's name
respectivement, puis assemblez la delete
commande en les utilisant.delete
commande est comme:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificateur de s
commande pour exécuter la commande assemblée ci-dessus, qui fera les delete
travaux réels .Pour éviter de supprimer des pods dans l' kube-system
espace de noms, il suffit d'ajouter grep -v kube-system
pour exclure l' kube-system
espace de noms avant la sed
commande.
--all-namespaces
si vous ne souhaitez pas supprimer les pods dans l' kube-system
espace de noms
Vous pouvez simplement courir
kubectl delete all --all --all-namespaces
Le premier all
désigne les types de ressources courants (pods, réplicasets, déploiements, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
Le deuxième --all
moyen de sélectionner toutes les ressources des types sélectionnés
Notez que cela all
n'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