Un déploiement Kubernetes, qu'est-ce que c'est ?

Copier l'URL

Un déploiement Kubernetes est un objet de type ressource dans Kubernetes, qui fournit des mises à jour déclaratives pour des applications. Un déploiement vous permet de décrire le cycle de vie d'une application, en spécifiant par exemple les images à utiliser, le nombre de pods à exécuter et la façon dont ils doivent être mis à jour. 

Un objet Kubernetes permet d'indiquer au système Kubernetes les caractéristiques de la charge de travail de votre cluster. Après la création d'un objet, le cluster doit garantir que celui-ci existe bien. L'idée est de maintenir votre cluster Kubernetes dans l'état souhaité. 

La mise à jour manuelle des applications conteneurisées est chronophage et fastidieux. En effet, pour mettre à niveau un service vers une nouvelle version, il faut démarrer la nouvelle version du pod, arrêter la version obsolète, attendre et vérifier que la nouvelle version a bien été lancée et, parfois, revenir à une ancienne version en cas de défaillance.

Ce processus, lorsqu'il est effectué manuellement, est source d'erreur humaine et la création d'un script efficace peut exiger des efforts considérables, ce qui risque de créer un goulet d'étranglement au niveau du processus de lancement. 

Un déploiement Kubernetes permet d'automatiser le processus et de le rendre reproductible. Les déploiements sont entièrement gérés par le back-end Kubernetes et tout le processus de mise à jour est effectué côté serveur, sans intervention de la part du client.

Un déploiement permet d'assurer que le nombre souhaité de pods sont bien exécutés et disponibles à tout moment. Le processus de mise à jour est également entièrement enregistré et des versions différentes sont créées pour permettre de le mettre en pause, de le poursuivre ou de revenir aux versions précédentes.

Un objet Kubernetes de type déploiement vous permet de :

  • déployer un ensemble de réplicas ou un pod ;
  • mettre à jour des pods ou des ensembles de réplicas ;
  • revenir aux versions précédentes des déploiements ;
  • mettre à l'échelle un déploiement ;
  • mettre en pause ou poursuivre un déploiement.

La gestion de vos applications avec un déploiement Kubernetes comprend la mise à jour des applications. Un déploiement permet de démarrer et d'arrêter un ensemble de pods de manière prévisible, ce qui représente un avantage majeur.

Stratégie de mises à jour continues

Une stratégie de mises à jour continues permet de contrôler le remplacement progressif des pods de l'application. Elle garantit également qu'un nombre minimum de pods sont disponibles à tout moment.

Par défaut, le déploiement garantit que le nombre de pods indisponibles ne dépasse pas les 25 % et évite le surapprovisionnement de plus de 25 % du nombre de pods spécifié par l'état souhaité. 

Le déploiement ne supprime pas les pods obsolètes avant qu'il y ait suffisamment de pods disponibles, afin de respecter le seuil minimal de disponibilité. De même, aucun nouveau pod n'est créé avant la suppression d'un nombre suffisant de pods obsolètes.

L'objet de type déploiement vous permet de définir la plage des pods disponibles et excédentaires, à l'aide des champs « maxSurge » et « maxUnavailable ».

Une stratégie de mises à jour continues permet d'éliminer les périodes d'indisponibilité pendant le processus de mise à jour. Cependant, l'application doit avoir été conçue pour tolérer les tâches de destruction et de création de pods.

De plus, le processus de mise à jour nécessite d'exécuter deux versions du conteneur en même temps, ce qui peut entraîner des problèmes pour les consommateurs du service.

Stratégie de recréation

Une stratégie de recréation permet de supprimer tous les pods existants avant d'en créer de nouveaux. Kubernetes arrête tous les conteneurs de la version actuelle, puis démarre simultanément tous les nouveaux conteneurs, une fois les anciens supprimés. 

Une stratégie de déploiement par recréation entraîne des périodes d'indisponibilité pendant l'arrêt des conteneurs obsolètes, avant que les nouveaux conteneurs puissent traiter les requêtes entrantes. 

Cependant, les deux versions du conteneur ne seront pas exécutées en même temps, ce qui allège le service pour les consommateurs.

Ressources Red Hat

Les déploiements sont créés grâce à la rédaction d'un manifeste. Le manifeste est ensuite appliqué au cluster Kubernetes à l'aide de la commande « kubectl apply », mais vous pouvez également utiliser un modèle de déploiement déclaratif. Les fichiers de configuration de Kubernetes sont rédigés au format YAML ou JSON.

Lors de la création d'un déploiement, vous devrez décrire l'état souhaité afin que Kubernetes puisse le mettre en œuvre à l'aide d'une stratégie de déploiement continu ou par recréation. 

Le modèle de déploiement déclaratif vous permet d'utiliser un déploiement Kubernetes pour automatiser l'exécution des processus de mise à niveau ou de restauration d'un groupe de pods. Les modèles Kubernetes sont des modèles de conception réutilisables pour les applications et les services conteneurisés.  

Vous pouvez mettre à jour un déploiement en modifiant la spécification du modèle de pod. Lorsque le champ de la spécification est modifié, une mise à jour se déploie automatiquement.

Le cycle de vie d'un déploiement est une suite d'états : en cours d'exécution, effectué ou échec. Un déploiement est en cours d'exécution lorsqu'il effectue des tâches de mises à jour, par exemple la mise à jour ou la mise à l'échelle des pods. 

Un déploiement est effectué une fois que toutes les tâches ont été réalisées et que le système se trouve dans l'état souhaité. Il est à l'état échec si certaines tâches n'ont pas pu aboutir à cause d'erreurs. 

Vous pouvez vérifier ou surveiller l'état d'un déploiement à l'aide de la commande « kubectl rollout status ». 

Vous avez besoin d'aide pour prendre en main Kubernetes ? Apprenez à créer et à gérer des conteneurs en vue d'un déploiement dans un cluster Kubernetes et Red Hat® OpenShift®. Ce cours permet d'acquérir des connaissances de base en gestion de conteneurs grâce à des travaux pratiques qui reposent sur l'utilisation des conteneurs et de Kubernetes. 

En savoir plus sur ce cours

Red Hat OpenShift est une plateforme Kubernetes conçue pour les entreprises. Elle offre aux développeurs des environnements en libre-service pour la création des applications, ainsi que des fonctions pour automatiser l'exploitation de l'ensemble de la pile sur tout type d'infrastructure.

Red Hat OpenShift inclut de nombreuses technologies supplémentaires qui font de Kubernetes un outil puissant et viable pour les entreprises, notamment : les registres, la mise en réseau, la télémétrie, la sécurité, l'automatisation et les services.

 

Avec Red Hat OpenShift, les développeurs peuvent créer des applications conteneurisées, les héberger et les déployer dans le cloud tout en bénéficiant d'une évolutivité, d'un contrôle et d'une orchestration d'une efficacité telle que vos idées pourront vite devenir réalité.

En savoir plus sur Red Hat OpenShift
Hub

Le blog officiel de Red Hat

Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.

Tous les essais de produits Red Hat

Profitez de nos essais gratuits de produits Red Hat pour renforcer votre expérience pratique, préparer une certification ou évaluer l'adéquation d'un produit avec les besoins de votre entreprise.

En savoir plus

Qu'est-ce qu'un cluster Kubernetes ?

Un cluster Kubernetes est un ensemble de machines qui permettent d'exécuter des applications conteneurisées.

Les conteneurs en sandbox, qu'est-ce que c'est ?

Les conteneurs en sandbox isolent un programme du reste du système grâce à des machines virtuelles légères qui lancent les conteneurs dans des pods.

Un plan de contrôle hébergé, qu'est-ce que c'est ?

Les plans de contrôle hébergés permettent d'exécuter des plans de contrôle sur des nœuds plus petits, ce qui réduit le coût des clusters et facilite l'adoption d'une véritable stratégie de cloud hybride.

Conteneurs : ressources recommandées

Articles associés