Conteneurs d’initialisation et ordre de démarrage
Découvrez comment les conteneurs d’initialisation exécutent les tâches de préparation avant le démarrage des conteneurs principaux de votre application, et comment ils imposent l’ordre d’exécution dans un Pod.
Conteneurs d’initialisation et ordre de démarrage est une leçon Kubernetes Basics gratuite sur CoddyKit. Ceci est la leçon 4 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 Kubernetes Basics, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kubernetes Basics comprend 4 leçons au total.
Que sont les conteneurs d’initialisation ?
Un conteneur d’initialisation est un conteneur spécial qui s’exécute jusqu’à son achèvement avant le démarrage des conteneurs de l’application principale d’un pod. Les pods peuvent en comporter un ou plusieurs.
Ils sont parfaits pour les tâches de configuration ponctuelles : attendre une dépendance, copier la configuration ou exécuter une migration de base de données.
En quoi ils diffèrent des conteneurs d’application
Les conteneurs d’initialisation s’exécutent toujours jusqu’à leur achèvement et doivent réussir avant le démarrage du suivant. À l’inverse, les conteneurs d’application s’exécutent en continu.
- Les conteneurs d’initialisation s’exécutent séquentiellement, un à la fois
- Les conteneurs d’application s’exécutent en parallèle
- Si un conteneur d’initialisation échoue, le pod le redémarre (selon restartPolicy)
Spécification de base d’un conteneur d’initialisation
Les conteneurs d’initialisation se trouvent sous spec.initContainers, au même niveau que spec.containers.
apiVersion: v1
kind: Pod
metadata:
name: app-with-init
spec:
initContainers:
- name: wait-for-db
image: busybox:1.36
command: ['sh', '-c', 'echo waiting; sleep 5']
containers:
- name: app
image: nginx:1.27Pourquoi l’ordre est important
Kubernetes garantit l’ordre suivant : chaque conteneur d’initialisation termine avec succès avant même le démarrage des conteneurs principaux.
Vous pouvez ainsi déclarer les dépendances au lieu d’intégrer des boucles de nouvelle tentative dans l’image de votre application.
Attendre un service
Un schéma courant consiste à bloquer le démarrage jusqu’à ce qu’un service dépendant réponde.
initContainers:
- name: wait-for-api
image: busybox:1.36
command:
- sh
- -c
- 'until nslookup api-service; do echo waiting; sleep 2; done'Plusieurs conteneurs d’initialisation
Vous pouvez enchaîner plusieurs conteneurs d’initialisation. Ils s’exécutent dans l’ordre indiqué, chacun allant entièrement à son terme avant le démarrage du suivant.
initContainers:
- name: step-1-fetch-config
image: busybox:1.36
command: ['sh', '-c', 'echo fetching config']
- name: step-2-migrate
image: busybox:1.36
command: ['sh', '-c', 'echo running migration']Partager des données avec emptyDir
Les conteneurs d’initialisation préparent souvent des fichiers pour le conteneur d’application à l’aide d’un volume emptyDir partagé.
volumes:
- name: shared
emptyDir: {}
initContainers:
- name: setup
image: busybox:1.36
command: ['sh', '-c', 'echo hello > /work/index.html']
volumeMounts:
- name: shared
mountPath: /workExaminer l’état de l’initialisation
Pendant l’exécution des conteneurs d’initialisation, le pod affiche un état tel que Init:0/2. Utilisez kubectl pour suivre la progression.
kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-initRègles d’utilisation des ressources
Comme les conteneurs d’initialisation s’exécutent séquentiellement, Kubernetes utilise la demande ou la limite de ressources la plus élevée parmi eux (et non leur somme) lors de la planification, puis la compare aux besoins des conteneurs d’application.
Cas d’utilisation courants
- Attendre qu’une base de données ou une interface externe soit accessible
- Exécuter les migrations de schéma avant le démarrage de l’application
- Générer ou télécharger des fichiers de configuration
- Définir les autorisations des fichiers sur un volume monté
- Enregistrer le pod auprès d’un registre de services
Comportement en cas d’échec
Si un conteneur d’initialisation échoue et que la restartPolicy du pod est Always ou OnFailure, Kubernetes continue de le relancer jusqu’à sa réussite. Les conteneurs principaux ne démarrent pas avant cela.
Vérification rapide
Évaluez votre compréhension de l’ordre d’exécution des conteneurs d’initialisation.
Récapitulatif
Vous avez appris que les conteneurs d’initialisation s’exécutent séquentiellement jusqu’à leur achèvement avant le démarrage des conteneurs d’application. Ils imposent l’ordre de démarrage, préparent les données partagées via des volumes et gèrent les configurations ponctuelles comme les migrations ou les vérifications de dépendances.
Vous pouvez ensuite combiner les conteneurs d’initialisation avec des conteneurs auxiliaires pour créer des séquences de démarrage de pod plus riches.
Questions Fréquemment Posées
La leçon « Conteneurs d’initialisation et ordre de démarrage » est-elle gratuite ?
Oui — le texte complet de « Conteneurs d’initialisation et ordre de démarrage » 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 Kubernetes Basics, passe à CoddyKit PRO. Le cours Kubernetes Basics comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Conteneurs d’initialisation et ordre de démarrage » ?
Découvrez comment les conteneurs d’initialisation exécutent les tâches de préparation avant le démarrage des conteneurs principaux de votre application, et comment ils imposent l’ordre d’exécution da… Tu pratiques Kubernetes Basics 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 Kubernetes Basics ?
Aucune expérience préalable n'est requise. Kubernetes Basics 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 4 sur 4.
Combien de temps prend la leçon « Conteneurs d’initialisation et ordre de démarrage » ?
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 Kubernetes Basics ?
Oui. Chaque leçon Kubernetes Basics 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