Dans le cours : L'essentiel de Kubernetes

Découvrir les déploiements

Le déploiement est un élément central dans l'architecture logicielle de vos applications. Il permet de créer, de gérer, de mettre à l'échelle et de maintenir la disponibilité de vos pods. Le déploiement est un objet de l'API de haut niveau d'abstraction qui permet de décrire votre application, comment elle doit être exécutée et quels sont les pods à créer et à gérer au niveau de l'environnement Kubernetes. On voit ici que le déploiement se base sur un autre objet qu'on appelle le ReplicaSet qui sera le garant de l'exécution des pods et de leur maintien à jour. Le ReplicaSet gère la création et l'exécution des pods et s'assure que le nombre de replicas est conforme aux spécifications. Les replicas sont des copies du même pod s'il est de type scalable. On voit sous le ReplicaSet un ensemble de pods qui sont des replicas et qui sont répartis entre les différents nœuds du cluster, ce qui permet de faire du load balancing et d'équilibrer la charge entre les serveurs, par exemple dans le cas d'un serveur de type web.  Le déploiement définit donc la façon que l'on souhaite d'exécuter une application, donc un état souhaité du nombre de replicas désirés et il associe un ReplicaSet qui est un objet Kubernetes de type contrôleur et qui va s'assurer de l'état désiré du pod selon les spécifications. Le déploiement gère aussi les mises à jour des pods. On parle de Rolling update qui est une mise à jour à chaud sur des pods avec plusieurs replicas. Le principe est d'arrêter un replica qui exécute une image de version 1 et de redéployer un nouveau replica avec l'image de version 2 donc il n'y a pas d'arrêt de service pour les clients. Le rollback permet de faire un retour arrière avec le même principe. Dans ce fichier exemple, il y a trois objets kubernetes spécifiés, l'objet principal et de haut niveau étant le déploiement défini par le kind. À l'objet déploiement est associé le ReplicaSet qui est introduit par la clé de définition replica. Ici on voit trois pods désirés et enfin le ReplicaSet doit contrôler des pods ou des replicas créés par un template introduit par la clé de définition template. On retrouve sous la clé template les mêmes sous-clés qu'on trouve habituellement dans un objet de kind pod comme container qui définit le container du pod. Enfin la clé de définition Selector permet quant à elle de sélectionner les pods  qui seront gérés par le ReplicaSet.  En appliquant les spécifications d'un déploiement, on voit trois types d'objets créés : d'abord le déploiement qu'on visualise avec la commande kubectl get deployments, on a donc le nom du déploiement. La colonne Ready nous donne le nombre de replicas effectifs par rapport à désiré. On voit le nombre de replicas à jour et le nombre de replicas disponibles. La commande suivante visualise le deuxième objet qui est le ReplicaSet avec un nom ayant comme préfixe le nom du déploiement suivi de l'Id du ReplicaSet avec aussi le nombre de replicas désirés et disponibles. Enfin, le troisième type d'objet étant le pod, on retrouve ici trois pods avec des noms ayant comme préfixe cette fois-ci le nom du ReplicaSet. On voit ici vraiment la structure du déploiement. En haut on aura le déploiement, ici web-deployment, ensuite le ReplicaSet qui est identifié par web-deployment-67c68c959f. Et en dessous le ReplicaSet va gérer trois pods qui auront comme préfixe le même nom suivi de bgm6p, rgfdn et w9m6r qui sont les trois pods en exécution gérés par le ReplicaSet. On voit au final les trois replicas qui sont gérés par le ReplicaSet et contrôlés par le déploiement.

Table des matières