Comment Kubernetes s’occupe de vos charges de travail

Les charges de travail sont exécutées dans Kubernetes par des Pods. Ces Pods sont constitués d’un ou plusieurs conteneurs, partageant le même réseau et le même stockaege.

Ces Pods étant faillibles, ayant accès à des ressources limitées et devant être mis à jour, Kubernetes fournit des outils pour :

Mise à l’échelle des charges de travail

Un Pod est déployé sur un noeud particulier d’un cluster Kubernetes et ce Pod peut accéder à une certaine quantité de ressources (mémoire, CPU) de ce noeud. Si la tâche à exécuter nécessite plus de ressources, Kubernetes fournit un outil pour déployer plusieurs Pods, sur plusieurs noeuds, afin de démultiplier les ressources utilisables pour cette même tâche. Ce processus est appelé Mise à l’échelle.

Le concept de ReplicaSet fourni par Kubernetes permet de gérer cette mise à l’echelle. Pour déployer plusieurs Pods identiques, vous créez une ressource ReplicaSet en spécifiant les caractéristiques du Pod à déployer et le nombre voulu de réplicas de ce Pod.

Un contrôleur (un programme faisant partie du control plane et s’occupant d’un unique type de ressource, ici les ReplicaSets) s’assure en permanence que, pour chaque ReplicaSet créé, le nombre de Pods demandés sont déployés. Dans le cas contraire, il créera les Pods manquants ou arrêtera les Pods supplémentaires.

Il vous est possible à tout moment de changer le nombre de replicas du ReplicaSet : le contrôleur de ReplicaSets prendra en charge le changement dès que possible.

Mises à jour des charges de travail

Pour déployer un Pod dans Kubernetes, il est nécessaire de définir un certain nombre d’informations : les conteneurs qui seront exécutés dans ce Pod, les volumes de stockage montés dans ces conteneurs, etc.

Une fois le Pod créé, si vous modifiez les attributs de ce Pod (par exemple la version de l’image utilisée pour créer un conteneur), aucun changement ne sera fait sur le Pod réellement déployé.

Le concept de Deployment fourni par Kubernetes permet de mettre à jour les Pods déployés. Pour déployer une version donnée d’un Pod, vous créez une ressource Deployment en spécifiant les caractéristiques du Pod à déployer, le nombre de replicas, et la stratégie à appliquer lors de la mise à jour.

Le contrôleur de Deployment prendra en charge la création d’un ReplicaSet avec la spécification du Pod et le nombre de replicas indiqués dans le Deployment.

Plus tard, lorsque vous désirez changer les spécifications d’un Pod (par exemple la version de l’image utilisée pour créer un conteneur), vous pouvez modifier les caractéristiques du Pod à déployer dans le Deployment. Le contrôleur de Deployment prendra en charge la création d’un nouveau ReplicaSet avec ces nouvelles spécifications du Pod. Selon la stratégie de mise à jour spécifiée dans le Deployment, le nombre de replicas de l’ancien et du nouveau ReplicaSets seront modifiés pour qu’au final l’ancien ReplicaSet ait un nombre de replicas à zéro et le nouveau ReplicaSet ait le nombre demandé de replicas.

Auto-réparation des charges de travail

Plusieurs mécanismes permettent aux charges de travail de s’auto-réparer.

Liens intéressants

Références