Vidange kubectl

Vidange kubectl
Les conteneurs sont éphémères, comme tous ceux qui ont travaillé avec eux le savent. Non seulement les conteneurs et les gousses, mais aussi les nœuds peuvent être remplacés par des kubernetes. Les nœuds Kubernetes sont des machines virtuelles, des serveurs et d'autres entités puissantes sur le calcul où les gousses et les conteneurs s'exécutent. La technologie qui permet aux utilisateurs de déplacer de manière transparente tous les conteneurs d'un nœud à un autre est connu sous le nom de drainage de nœud. Il existe une variété d'applications telles que l'entretien du serveur, la mise à l'échelle automatique du cluster K8S dans laquelle les nœuds sont ajoutés et retirés dynamiquement. Les instances préemptives ou ponctuelles sont des cas qui peuvent être arrêtés à tout moment.

Kubernetes peut détecter la défaillance du nœud et reprogrammer automatiquement les nœuds. Le seul problème est le temps qu'il faut pour que le nœud baisse et le pod est reprogrammé. Voyons comment vous pouvez vider un nœud à Kubernetes. Mais d'abord, assurez-vous que Kubectl soit installé sur votre système. Pour exécuter les commandes, vous devrez également installer le cluster Minikube, puis lancer la fenêtre de terminal. Vous pouvez utiliser le minikube en suivant la commande mentionnée ci-dessous.

En plus de cela, assurez-vous que votre serveur Kubernetes doit être la version 1.5 ou plus récent. Entrez la «version Kubectl» si vous souhaitez vérifier la version. Vous devez répondre à certaines exigences pour accomplir cette tâche avec succès. Vous n'avez pas besoin que vos applications soient disponibles pendant le drain du nœud, ou vous n'en avez pas besoin pour être très disponibles du tout. Vous avez appris le concept PodDisruptionBudget et configurer des budgets PodDisruption pour les applications qui les nécessitent.

Configurer un budget de perturbation si vous le souhaitez

Pour vous assurer que vos charges de travail sont disponibles pendant la maintenance, créez un PodDisruptionBudget. Configurez d'abord un poddisruptionbudgets, puis continuez à suivre ces conseils si la disponibilité est cruciale pour toutes les applications qui peuvent fonctionner sur le ou les nœuds que vous videz.

L'utilisation du drain Kubectl pour supprimer / supprimer un nœud

Vous pouvez utiliser Kubectl Drain pour expulser toutes vos pods avant d'effectuer l'entretien sur un nœud d'expulsions sûres terminez les conteneurs de la nacelle de manière biens.

Le drain Kubectl ignore finalement certaines nœuds sur le nœud qui ne sont pas possibles à détruire par défaut. Il est donc sûr de fermer le nœud en éteignant sa machine physique ou, s'il s'exécute sur une plate-forme cloud, désinstallant sa machine virtuelle. Pour commencer, identifiez le nœud que vous souhaitez drainer par son nom. La commande ci-dessous affichera une liste de tous les nœuds mentionnés dans votre cluster.

Ensuite, informez Kubernetes que le nœud doit être drainé:

Après le retour du nœud (et sans provoquer d'erreur), vous pouvez le désactiver (ou de manière équivalente, si sur une plate-forme cloud, supprimez la machine virtuelle qui soutient le nœud). Si vous laissez un nœud dans le cluster pour la maintenance, utilisez la commande suivante pour indiquer à Kubernetes qu'il peut commencer à reprogrammer de nouvelles gousses sur le nœud.

Drainant de nombreux nœuds en même temps

Un seul nœud doit recevoir l'instruction de drain Kubectl à la fois. Vous pouvez cependant effectuer de nombreuses instructions de drain Kubectl simultanément, dans divers terminaux, ou l'arrière-plan, pour différents nœuds. Même si de nombreuses instructions de drain fonctionnent en même temps, le budget de poddisruption doit être observé.

Si vous avez un État avec 3 répliques et un budget de poddisruption de 2, le drain Kubectl ne retirera une pod que si toutes ces pods sont prêtes. Si vous exécutez plusieurs commandes de drain en même temps, Kubernetes honorera le Budget de PodDisruption et garantira qu'un seul drain est exécuté.

Expulsion à Kubernetes

Vous pouvez utiliser l'API d'expulsion pour lancer des expulsions par programme si vous n'êtes pas disposé à utiliser le drain Kubectl (par exemple, pour éviter d'exécuter une commande externe ou pour avoir un meilleur contrôle tout au long du processus d'expulsion du pod).

Vous devez d'abord être familier avec les clients de la langue Kubernetes afin d'utiliser l'API. Un sous-respect de l'expulsion d'un pod peut être considéré comme une action de suppression sur le pod qui est contrôlé par la politique. Pour essayer une expulsion, vous publiez une tentative d'opération (ou pour tenter de construire une expulsion plus précisément).

Expulsions coincées

Sauf si vous agissez, une demande peut être brisée et l'API d'expulsion reviendra toujours 429 ou 500. Des effets similaires peuvent également être observés si le dernier pod à expulser a une période de grâce à long terme.

Il y a deux options dans cette situation: abandonnez ou pause l'opération automatique. Redémarrez l'automatisation après avoir déterminé la cause de l'application bloquée. Plutôt que d'utiliser l'API d'expulsion, supprimez le pod du plan de contrôle de votre cluster lorsqu'une durée raisonnable s'est écoulée.

Conclusion

Dans cet article, nous avons parlé de l'utilisation de Kubectl Drain. Diverses commandes sont expliquées pour vous aider à comprendre la méthode de drainage à Kubernetes.