Que sont les pods Kubernetes ?
Un pod est la plus petite unité d’exécution dans Kubernetes. Un pod encapsule une ou plusieurs applications. Les pods sont éphémères par nature. En cas de défaillance d’un pod (ou du nœud sur lequel il s’exécute), Kubernetes peut automatiquement créer une nouvelle réplique de ce pod pour la continuité des opérations. Les pods incluent un ou plusieurs conteneurs (tels que des conteneurs Docker).
Les pods fournissent également des dépendances environnementales, notamment des volumes de stockage persistant (stockage permanent et disponible pour tous les pods du cluster) et les données de configuration nécessaires à l’exécution des conteneurs dans le pod.

Kubernetes en 5 minutes

L’état de Kubernetes 2021
Que fait un pod ?
Les pods représentent les processus exécutés sur un cluster. En limitant les pods à un seul processus, Kubernetes peut générer des rapports sur l’intégrité de chaque processus exécuté dans le cluster. Les pods ont :
- une adresse IP unique (qui leur permet de communiquer entre eux),
- des volumes de stockage persistant (selon les besoins),
- des informations de configuration qui déterminent le mode d’exécution d’un conteneur.
Bien que la plupart des pods contiennent un seul conteneur, beaucoup en ont plusieurs qui fonctionnent en étroite collaboration pour exécuter une fonction souhaitée.
Quels sont les avantages d’un pod ?
Lorsque les pods contiennent plusieurs conteneurs, les communications et le partage des données entre eux sont simplifiés. Dans la mesure où tous les conteneurs d’un pod partagent le même espace de nommage réseau, ils peuvent se localiser mutuellement et communiquer via localhost. Les pods peuvent communiquer entre eux en utilisant l’adresse IP d’un autre pod ou en faisant référence à une ressource qui réside dans un autre pod.
Les pods peuvent inclure des conteneurs qui s’exécutent au démarrage du pod, par exemple pour effectuer l’initialisation requise avant l’exécution des conteneurs d’applications. De plus, les pods simplifient la scalabilité en permettant la création et l’arrêt automatiques de répliques de pod en fonction de l’évolution de la demande.
Comment fonctionne un pod ?
Les pods sont créés par des ressources de charge de travail appelées contrôleurs, qui gèrent le déploiement, la réplication et l’intégrité des pods dans le cluster. Par exemple, en cas de défaillance d’un nœud du cluster, un contrôleur détecte que les pods de ce nœud ne répondent pas et crée un ou plusieurs pods de remplacement sur les autres nœuds.
Les trois types de contrôleurs les plus courants sont les suivants :
- Jobs pour les travaux de type batch qui sont éphémères et qui exécuteront une tâche jusqu’à son terme
- Deployments pour les applications sans état et persistantes, telles que les serveurs Web (serveurs HTTP)
- StatefulSets pour les applications avec état et persistantes, telles que les bases de données
Si un pod contient plusieurs conteneurs, ils sont tous planifiés ensemble sur le même serveur du cluster, VM ou serveur physique. Tous les conteneurs du pod partagent leurs ressources et leurs dépendances et peuvent coordonner leur exécution et leur fin. Par exemple, les pods peuvent contenir des conteneurs « init » qui s’exécutent avant les conteneurs d’applications, ce qui permet de configurer l’environnement pour les applications qui suivent.
Les pods sont presque toujours créés par des contrôleurs qui peuvent ensuite gérer automatiquement leur cycle de vie, y compris le remplacement des pods défaillants, la réplication des pods si nécessaire et le retrait du pod des nœuds de cluster lorsqu’ils ont terminé leurs tâches ou ne sont plus nécessaires.
Les contrôleurs utilisent les informations d’un modèle de pod pour créer les pods, et les contrôleurs s’assurent que les pods en cours d’exécution correspondent au déploiement défini dans le modèle de pod, par exemple en créant des répliques correspondant au nombre défini dans le déploiement.
Comment les pods communiquent-ils entre eux ?
Lorsqu’un pod est créé, une adresse IP unique lui est affectée. Si le pod contient plusieurs conteneurs, ces derniers peuvent communiquer entre eux simplement à l’aide de localhost. Les communications en dehors du pod s’effectuent en exposant un port. Les communications entre les pods d’un cluster tirent parti du fait que Kubernetes affecte une adresse IP privée de cluster à chaque pod d’un cluster, supprimant ainsi la nécessité de créer explicitement des liens entre les pods ou de mapper les ports du conteneur aux ports des hôtes. De cette façon, chaque pod d’un cluster peut « voir » les autres sans avoir besoin de NAT.
Quelles sont les commandes kubectl de base ?
Kubectl fournit un certain nombre de commandes qui permettent à un utilisateur de créer des pods, de les exécuter à l’aide de contrôleurs deployments, de vérifier l’état des pods en cours d’exécution et d’arrêter les pods qui ne sont plus nécessaires. Les commandes JSON (JavaScript Object Notation) ou YAML (YAML Ain’t Markup Language) sont valides pour le codage des commandes.
Les commandes kubectl couramment utilisées sont répertoriées ci-dessous :
Get
La commande kubectl get affiche des informations tabulaires sur une ou plusieurs ressources. Les informations peuvent être filtrées à l’aide de sélecteurs de libellés. Les informations peuvent être affichées uniquement pour l’espace de nommage existant ou pour tous les espaces de nommage du cluster.
La commande « kubectl api-resources » génère une liste de toutes les ressources prises en charge pour lesquelles vous pouvez obtenir (get) des informations. Le format général de la commande kubectl get est le suivant :
$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [indicateurs]
Création de pods
Les pods sont créés à l’aide de la commande create au format :
$ kubectl create -f FILENAME.
Par exemple, la commande
kubectl create -f ./mypod.yaml créera un nouveau pod à partir du fichier YAML « mypod »
Supprimer des pods
La commande « kubectl delete -f ./mypod.yaml » supprimera le pod « mypod » du cluster. La suppression de pods est un processus simple. Les pods continuent de s’exécuter pendant une période de grâce (30 secondes par défaut) avant d’être arrêtés de force. La valeur de la période de grâce peut être remplacée par l’indicateur –grace-period si vous le souhaitez.
Solutions et produits connexes
Environnement d’exécution Kubernetes prêt pour l’entreprise
Rationalisez les opérations sur une infrastructure multicloud.
Kubernetes contre Docker
Quels outils choisir pour réussir avec les conteneurs ?
Conteneurs Docker sur Kubernetes
Une fois que vous avez compris ce que sont les conteneurs et Kubernetes, vous devez comprendre comment ils fonctionnent ensemble.