En regardant la documentation, il y a un appel API pour supprimer un pod, mais existe-t-il un moyen de tuer tous les pods dans tous les espaces de noms?
la source
En regardant la documentation, il y a un appel API pour supprimer un pod, mais existe-t-il un moyen de tuer tous les pods dans tous les espaces de noms?
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-ilkube-system
supprimé avec la commande que vous avez jointe?pour se débarrasser de ces contrôleurs de réplication encombrants aussi.
la source
ing
manquez pour supprimer également les entréesIl vous suffit
sed
de faire ceci: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 desed
pour récupérer les deux premiers mots, qui représententnamespace
etpod's name
respectivement, puis assemblez ladelete
commande en les utilisant.delete
commande est comme:kubectl --namespace kube-system delete pod heapster-eq3yw
.e
modificateur des
commande pour exécuter la commande assemblée ci-dessus, qui fera lesdelete
travaux réels .Pour éviter de supprimer des pods dans l'
kube-system
espace de noms, il suffit d'ajoutergrep -v kube-system
pour exclure l'kube-system
espace de noms avant lased
commande.la source
--all-namespaces
si vous ne souhaitez pas supprimer les pods dans l'kube-system
espace de nomsVous pouvez simplement courir
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ésNotez que cela
all
n'inclut pas:Afin de nettoyer parfaitement,
la source
Voici un one-liner qui peut être étendu avec grep pour filtrer par nom.
la source
la source
Si vous avez déjà des pods qui sont recréés, pensez d'abord à supprimer tous les déploiements
Remplacez simplement le NAMSPACE et le DÉPLOIEMENT par ceux correspondants, vous pouvez obtenir toutes les informations de déploiement par la commande suivante
la source
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
Vous pouvez vérifier les détails dans ce
la source
Je crée un code python pour tout supprimer dans l'espace de noms
delall.py
puis
la source
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
la source