Pods multi-conteneurs (sidecars)
Découvrez les modèles permettant d’exécuter plusieurs conteneurs colocalisés dans un même Pod, notamment les conteneurs sidecar.
Pods multi-conteneurs (sidecars) est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Au-delà d’un conteneur unique
Jusqu’à présent, nous avons considéré les Pods comme exécutant un seul conteneur. Mais que faire si votre application a besoin d’un processus auxiliaire ?
Kubernetes permet à un Pod d’exécuter plusieurs conteneurs. Ces conteneurs sont toujours regroupés au même endroit et partagent les ressources.
Pourquoi utiliser plusieurs conteneurs dans un Pod ?
Exécuter plusieurs conteneurs dans un même Pod convient particulièrement aux applications étroitement couplées qui doivent partager :
- Un espace de noms réseau (la même adresse IP, avec la possibilité de communiquer via
localhost) - Des volumes de stockage
- Le cycle de vie (ils démarrent, s’arrêtent et redémarrent ensemble)
Cela permet de gérer les processus associés comme une seule unité.
Explication du modèle de conteneur auxiliaire
Le modèle de conteneur auxiliaire est une conception courante. Dans ce modèle, un conteneur « auxiliaire » s’exécute à côté du conteneur de votre application principale.
Il étend ou améliore les fonctionnalités de l’application principale sans modifier l’application elle-même. Imaginez-le comme un compagnon serviable !
Cas d’utilisation des conteneurs auxiliaires
Les conteneurs auxiliaires sont extrêmement polyvalents. Voici quelques utilisations courantes :
- Collecte des journaux : un conteneur auxiliaire collecte les journaux de l’application principale et les envoie à un service centralisé de collecte des journaux.
- Proxy : un conteneur auxiliaire fournit un service de proxy réseau, par exemple pour la sécurité (mTLS) ou la gestion du trafic.
- Synchronisation de fichiers : un conteneur auxiliaire maintient à jour un volume partagé contenant des fichiers de configuration ou des données.
Pod avec deux conteneurs (YAML)
Examinons comment définir plusieurs conteneurs dans le manifeste YAML d’un Pod. Chaque conteneur est un élément du tableau containers.
Remarquez les conteneurs nginx-proxy et main-app définis sous spec.containers.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: nginx-proxy
image: nginx:latest
ports:
- containerPort: 80
- name: main-app
image: busybox:latest
command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]Stockage partagé : emptyDir
Les conteneurs d’un même Pod peuvent partager des données à l’aide des volumes Kubernetes. Une méthode simple consiste à utiliser un volume emptyDir.
Un volume emptyDir est créé lorsqu’un Pod est affecté à un nœud et existe tant que ce Pod s’exécute sur ce nœud. Il s’agit d’un stockage temporaire.
Exemple : conteneur auxiliaire collecteur de journaux
Imaginez une application principale qui génère des journaux dans un fichier. Un conteneur auxiliaire peut ensuite lire ce fichier journal et l’envoyer à un service de collecte des journaux.
Cela découple la logique de collecte des journaux de votre application principale, qui reste ainsi claire et centrée sur sa fonction.
YAML du collecteur de journaux (partie 1)
Voici le YAML de notre exemple de collecteur de journaux. Nous définissons un volume emptyDir nommé log-volume. Les deux conteneurs monteront ce volume.
Le conteneur main-app écrit un message de journal dans /var/log/app.log, à l’intérieur du volume partagé.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/logYAML du collecteur de journaux (partie 2)
À présent, le conteneur log-sidecar monte le même log-volume. Il utilise ensuite tail -f pour lire en continu le fichier journal écrit par l’application principale.
Dans un cas réel, ce conteneur auxiliaire traiterait ces journaux et les enverrait à un système de journalisation tel qu’Elasticsearch ou Splunk.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod # Same Pod as before
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/log
- name: log-sidecar
image: busybox:latest
command: ["sh", "-c", "tail -f /var/log/app.log"]
volumeMounts:
- name: log-volume
mountPath: /var/logVérification rapide : avantages des conteneurs auxiliaires
Les Pods à plusieurs conteneurs, en particulier avec le modèle de conteneur auxiliaire, offrent plusieurs avantages pour gérer des applications complexes.
Parmi les propositions suivantes, lesquelles constituent des avantages essentiels de l’utilisation d’un conteneur auxiliaire ?
Récapitulatif : Pods à plusieurs conteneurs
Excellent travail ! Vous avez découvert les Pods à plusieurs conteneurs et le puissant modèle de conteneur auxiliaire.
- Les Pods peuvent héberger plusieurs conteneurs qui partagent le réseau et le stockage.
- Le modèle de conteneur auxiliaire aide à étendre ou à améliorer les fonctionnalités de l’application principale.
- Les utilisations courantes comprennent la collecte des journaux, les proxies et la synchronisation des données.
- Les volumes
emptyDirfournissent un stockage partagé temporaire au sein d’un Pod.
Ce modèle est essentiel pour créer des applications robustes et modulaires dans Kubernetes !
Questions Fréquemment Posées
La leçon « Pods multi-conteneurs (sidecars) » est-elle gratuite ?
Oui — le texte complet de « Pods multi-conteneurs (sidecars) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pods multi-conteneurs (sidecars) » ?
Découvrez les modèles permettant d’exécuter plusieurs conteneurs colocalisés dans un même Pod, notamment les conteneurs sidecar. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Pods multi-conteneurs (sidecars) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pods : la plus petite unité
- Cycle de vie et états des Pods
- Pods multi-conteneurs (sidecars)
- Conteneurs d’initialisation et ordre de démarrage