Gérer et orchestrer efficacement les Pods dans un cluster Kubernetes peut devenir complexe, surtout avec des besoins variés comme l’exécution continue ou les tâches planifiées.
Sans une compréhension approfondie des contrôleurs Kubernetes, les développeurs risquent des configurations inefficaces, compromettant la stabilité et la performance de leurs applications.
Découvrez comment utiliser DaemonSets, Jobs, CronJobs et StatefulSets pour répondre aux besoins spécifiques de vos charges de travail Kubernetes, optimiser l’orchestration de vos Pods et garantir une gestion robuste de votre infrastructure.
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
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 :
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.
Initiez-vous aux bases de Kubernetes et devenez un professionnel recherché!
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
Pour afficher les détails du DaemonSet que nous avons créé, nous utilisons la commande :
kubectl describe daemonset .
Pour récupérer une liste de tous les DaemonSets dans notre cluster Kubernetes nous utilisons la commande suivante :
kubectl get daemonsets
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
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.
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.
Exploration Complète de Kubernetes pour les DevOps et Administrateurs Systèmes
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 .
En appliquant le fichier YAML correspondant, on peut créer un DaemonSet.
Pour lister les jobs existants sur notre cluster, nous utilisons la commande
`kubectl get jobs.
Pour supprimer le jobs nous utilisons la commande suivante :
kubectl delete jobs
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é
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.
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.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !
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.