Comprendre la Gestion des Pods Kubernetes

L'Équipe Alphorm
L'Équipe Alphorm 8e lecture en min

Suite à notre article précédent sur la gestion des clusters Kubernetes, nous nous penchons maintenant sur les contrôleurs cruciaux pour la gestion des pods Kubernetes. Cet article explore les DaemonSets, Jobs, CronJobs et StatefulSets, chacun optimisant la gestion et l’orchestration des pods Kubernetes.

Présentation d'un DaemonSet

Qu'est-ce qu'un DaemonSet Kubernetes pour les Pods ?

Un DaemonSet garantit l’exécution d’une copie d’un Pod sur chaque nœud d’un cluster Kubernetes. Cela signifie qu’un Pod identique sera lancé sur chaque nœud, assurant une présence continue du service ou de la tâche associée.

Les DaemonSets sont particulièrement utiles pour les tâches nécessitant une exécution permanente sur chaque nœud, telles que :

  • La collecte de logs
  • La surveillance du réseau
  • Le provisionnement de stockage
  • L’exécution d’agents de messagerie

 

Schéma illustrant la logique de fonctionnement des DaemonSets dans Kubernetes

Définition d'un fichier YAML pour DaemonSet et Pods Kubernetes

Un DaemonSet est défini à l’aide d’un fichier YAML de la forme suivante. Dans notre exemple, il crée un DaemonSet qui exécute un conteneur Nginx sur chaque nœud :

Exemple de configuration YAML pour créer un DaemonSet dans Kubernetes

Par défaut, un DaemonSet planifie un Pod sur chaque nœud worker. Lorsque de nouveaux nœuds rejoignent le cluster, ils reçoivent automatiquement un Pod. Vous pouvez affiner le placement des Pods à l’aide de sélecteurs de nœuds ou labels.

Pour découvrir l’intégralité de notre formation complète sur Kubernetes, veuillez suivre ce lien : Formation Kubernetes 2023. Rejoignez-nous et laissez-nous vous accompagner dans l’essor de vos compétences et de votre carrière.

Commandes kubectl utiles pour DaemonSets et Pods Kubernetes

Pour créer un nouveau DaemonSet, nous pouvons utiliser la commande kubectl create daemonset ou appliquer le fichier YAML correspondant en utilisant kubectl apply

Commandes pour créer un DaemonSet dans Kubernetes

Pour afficher les détails du DaemonSet que nous avons créé, nous utilisons la commande :

				
					kubectl describe daemonset <nom-du-daemonset>.
				
			
Vue détaillée des propriétés et du statut d'un DaemonSet

Pour récupérer une liste de tous les DaemonSets dans notre cluster Kubernetes nous utilisons la commande suivante :

				
					kubectl get daemonsets
				
			
Liste des DaemonSets déployés dans un cluster Kubernetes

Mise à jour des DaemonSets : Les DaemonSets prennent en charge deux stratégies de mise à jour:

  • Rolling Update: Remplace progressivement les anciens Pods par de nouveaux Pods, en préservant la disponibilité du service.
  • OnDelete: Supprime les anciens Pods après que les nouveaux Pods soient prêts.

Et pour modifier la configuration d’un DaemonSet La commande suivante est utilisée:

				
					kubectl edit daemonset <nom-daemonset>
				
			

Cette commande lance un éditeur de texte spécifié par les variables d’environnement sur votre système pour afficher les paramètres du Daemonet. Puis appliquer les modifications au Daemonset, apportez les modifications requises et enregistrez le fichier.

Pour supprimer un DaemonSet. Utilisez simplement la commande kubectl delete daemonset <nom-daemonset> . Cela effacerait le DaemonSet ainsi que tous ses pods sous-jacents.

Commande pour supprimer un DaemonSet et ses Pods

Le contrôleur Jobs dans Kubernetes

Introduction aux Jobs Kubernetes pour les Pods

Un Job est conçu pour exécuter un ensemble de Pods à une seule reprise. Une fois que tous les Pods du Job ont terminé leur exécution avec succès ou ont échoué, le Job est marqué comme terminé et les Pods sont nettoyés. Les Jobs sont parfaits pour des tâches ponctuelles ou des batchs de traitement, tels que :

  • L’exécution de tests d’intégration
  • La conversion de formats de fichiers
  • Le nettoyage de données temporaires

Assurer l'exécution complète des tâches avec Jobs et Pods Kubernetes

Les Jobs garantissent que les tâches s’exécutent complètement, même en cas d’échecs ou d’interruptions. Ils offrent plusieurs fonctionnalités pour y parvenir:

  • Délai d’exécution actif (activeDeadlineSeconds): Un délai maximal peut être défini pour la durée d’exécution du Job.
  • Politique de redémarrage: Vous pouvez spécifier si les Pods doivent être redémarrés après un échec ou non.
  • BackoffLimit (Limite de réessai) : Nombre de tentatives de relance du Job avant qu’il soit marqué comme échoué.
  • Parallélisme (parallelism) : Nombre maximal de Pods en cours d’exécution dans un Job à un moment donné.
  • Réalisations (completions) : Nombre de Pods qui doivent être terminés avec succès.

Comment créer des Jobs Kubernetes pour gérer les Pods ?

Les Jobs sont créées à partir de fichiers manifestes YAML de la même manière que les autres objets Kubernetes. L’exemple suivant définit un Job qui exécute une commande simple dans un conteneur exécutant l’image ubuntu:latest .

Exemple de configuration YAML pour créer un Job

En appliquant le fichier YAML correspondant, on peut créer un DaemonSet.

Commandes pour créer un Job Hello World dans Kubernetes

Pour lister les jobs existants sur notre cluster, nous utilisons la commande

				
					 `kubectl get jobs.
				
			
Liste des Jobs déployés dans un cluster Kubernetes

Pour supprimer le jobs nous utilisons la commande suivante :

				
					kubectl delete jobs <nom_jobs>
				
			
Commande pour supprimer un Job et ses Pods dans Kubernetes

Exécuter des tâches selon un calendrier avec CronJobs et Pods Kubernetes

Un CronJob est un Job spécial qui s’exécute à horaires réguliers selon une planification définie. Il permet d’automatiser des tâches récurrentes, telles que :

  • La sauvegarde de données
  • L’envoi de rapports quotidiens
  • La rotation des clés de sécurité
Schéma illustrant la logique de fonctionnement des CronJobs

Exemple de fichier YAML pour CronJob et Pods Kubernetes

Dans cet exemple, nous créons un CronJob qui exécute une tâche toutes les minutes. Cette tâche consiste à exécuter un conteneur Ubuntu qui imprime un message contenant le nom de l’hôte et la date actuelle.

Exemple de configuration YAML pour créer un CronJob dans Kubernetes

Le contrôleur StatefulSets

Un StatefulSet gère un ensemble de Pods maintenus en état. Chaque Pod possède un nom d’hôte unique et un volume persistant pour stocker ses données. Cela garantit que les données sont préservées même en cas de redémarrage ou de défaillance d’un Pod. Les StatefulSets sont idéaux pour les applications distribuées qui nécessitent une cohérence des données, telles que :

  • Bases de données
  • Systèmes de messagerie
  • Applications de stockage en cluster

Pour la configuration du StatefulSet, nous le verrons dans les chapitres suivants, car cela nécessite des prérequis que nous introduirons par la suite.

Dans ce chapitre, nous avons exploré les DaemonSets, les Jobs, les CronJobs et les StatefulSets, qui sont des outils puissants pour gérer et orchestrer des Pods dans un cluster Kubernetes. En étudiant ces contrôleurs, vous acquérez une meilleure compréhension de la façon dont Kubernetes gère diverses charges de travail et offre une flexibilité pour répondre aux besoins spécifiques de vos applications.

Conclusion

Les DaemonSets, Jobs, CronJobs et StatefulSets sont essentiels pour gérer efficacement les pods Kubernetes. Maîtriser ces contrôleurs améliore la performance et la fiabilité de vos déploiements Kubernetes.

 
 
ÉTIQUETÉ : kubernetes
Partager cet article
Par L'Équipe Alphorm Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.