Comment supprimer tout le contenu d'un nœud kubernetes?
Le contenu comprend les déploiements, les jeux de réplicas, etc. Mais kubrenetes recrée tous les pods.
Existe-t-il un moyen de supprimer tous les jeux de réplicas présents dans un nœud?
Si vous testez des choses, le plus simple serait
kubectl delete deployment --all
Bien que si vous utilisez minikube, le plus simple serait probablement de supprimer la machine et de recommencer avec un nouveau nœud
minikube delete
minikube start
Si nous parlons d'un cluster de production, Kubernetes a une fonctionnalité intégrée permettant de drainer un nœud du cluster , en supprimant tous les objets de ce nœud en toute sécurité.
Vous pouvez utiliser
kubectl drain
pour expulser en toute sécurité tous vos pods d'un nœud avant de procéder à la maintenance du nœud. Les expulsions en toute sécurité permettent aux conteneurs du pod de se terminer normalement et respectent les PodDisruptionBudgets que vous avez spécifiés.Note: Par défaut,
kubectl drain
ignorera certains pods système sur le nœud qui ne peuvent pas être tués. consultez la documentation de kubectl drain pour plus de détails.Lorsque
kubectl drain
est renvoyé avec succès, cela signifie que tous les pods (à l'exception de ceux exclus comme décrit dans le paragraphe précédent) ont été expulsés en toute sécurité (en respectant la période de fin de vie souhaitée et sans violer les SLO de perturbation au niveau de l'application). Vous pouvez alors supprimer le nœud en mettant hors tension sa machine physique ou, en cas d'exécution sur une plate-forme en nuage, en supprimant sa machine virtuelle.
Commencez par identifier le nom du noeud que vous souhaitez drainer. Vous pouvez répertorier tous les nœuds de votre cluster avec
kubectl get nodes
Ensuite, dites à Kubernetes de vider le noeud:
kubectl drain <node name>
Une fois qu'il est renvoyé (sans donner d'erreur), vous pouvez éteindre le nœud (ou de manière équivalente, sur une plate-forme en nuage, supprimez la machine virtuelle sauvegardant le nœud). drain
attend la résiliation gracieuse. Vous ne devez pas opérer sur la machine tant que la commande n'est pas terminée.
Si vous laissez le nœud du cluster pendant l’opération de maintenance, vous devez exécuter
kubectl uncordon <node name>
ensuite, indiquer à Kubernetes qu'il peut reprendre la planification de nouveaux modules sur le noeud.
Veuillez noter que si certains pods ne sont pas gérés par ReplicationController, ReplicaSet, DaemonSet, StatefulSet ou Job, alors drain
ne supprimera aucun pod si vous n'utilisez pas --force, comme indiqué dans la documentation .
kubectl drain <node name> --force
Kubenertes fournit un objet d'espaces de nommage pour l'isolement et la séparation des préoccupations. Par conséquent, il est recommandé d'appliquer tous les objets de ressources k8s (déploiement, réplicaSet, pods, services et autres) dans un espace de noms personnalisé.
Maintenant, si vous souhaitez supprimer toutes les ressources k8s pertinentes et associées, il vous suffit de supprimer l’espace de nom qui supprimera toutes ces ressources.
kubectl create namespace custom-namespace
kubectl create -f deployment.yaml --namespace=custom-namespace
kubectl delete namespaces custom-namespace
J'ai joint un lien pour des recherches ultérieures.