C’est l’objet de base dans Kubernetes. La ou d’autres orchestrateurs pilotent l’exécution de conteneurs directement, Kubernetes interagi avec des pods. Son nom court est po
Un pod regroupe un ou plusieurs conteneurs. Dès lors que des conteneurs sont déclarés dans un pod ils héritent des caractéristiques suivantes:
Ces trois points sont à considérer lorsque vous vous demandez si vous devez associer plusieurs conteneurs au sein d’un pod.
Cliquez sur l'image pour l'agrandir.
Généralement, lorsqu’on débute sous K8S le concept de pod peut être assez déroutant, mais il ne faut pas oublier que rien ne vous oblige à mettre plusieurs conteneurs dans un pod. Dans un premier temps et si vous n’avez pas de besoins particuliers vous pouvez très bien adopter une logique un pod égale = un conteneur
Néanmoins, il se pourrait que vous trouviez rapidement un intérêt au pod, notamment quand vous vous apercevez que certains de vos conteneurs sont si étroitement liés, que de les exécuter dans des contextes différents n’a pas d’intérêt. Par exemple un conteneur applicatif et son conteneur de supervision. Si vous savez qu’à chaque conteneur A, son conteneur B lui est indispensable avec une relation de 1 pour 1, alors autant les déclarer dans un même pod.
Ce besoin apparait dans certains patterns applicatifs.
Cliquez sur l'image pour l'agrandir.
Voici un exemple d'un fichier décrivant un pod:
---
apiVersion: v1
kind: Pod
metadata:
name: exemple-pod
spec:
containers:
- name: conteneur-app-a
image: app-a
- name: conteneur-app-b
image: app-b
Le pod peut prendre bien d’autres options.
Chaque containeur peut avoir des paramètres complémentaires, qui sont d’ailleurs le plus souvent les mêmes que pour une exécution directe (port, volume, argument, commande…) (Attention, si certains mots clefs semblent identiques à des usages plus basique comme docker-composer, d'autres peuvent être spécifiques à kubernetes ou avoir un impact différent).
Vous pouvez consulter toutes les caractéristiques d’un POD via sa définition dans l’API K8S.