Jump to section

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.

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. 

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é.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices