Init-containers en opstartvolgorde
Leer hoe init-containers insteltaken uitvoeren voordat uw hoofdcontainers starten en hoe ze de volgorde binnen een Pod afdwingen.
Init-containers en opstartvolgorde is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat zijn init-containers?
Een init-container is een speciale container die volledig wordt uitgevoerd voordat de hoofdcontainers van de applicatie in een Pod worden gestart. Pods kunnen er een of meer hebben.
Ze zijn ideaal voor eenmalige insteltaken: wachten op een afhankelijkheid, configuratie klonen of een databasemigratie uitvoeren.
Hoe ze verschillen van applicatiecontainers
Init-containers worden altijd volledig uitgevoerd en moeten slagen voordat de volgende wordt gestart. Applicatiecontainers blijven daarentegen continu actief.
- Init-containers worden achter elkaar uitgevoerd, één tegelijk
- Applicatiecontainers worden parallel uitgevoerd
- Als een init-container mislukt, start de Pod deze opnieuw (volgens restartPolicy)
Een eenvoudige specificatie voor een init-container
Init-containers staan onder spec.initContainers, naast 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.27Waarom de volgorde belangrijk is
Kubernetes garandeert de volgorde: elke init-container wordt succesvol voltooid voordat de hoofdcontainers zelfs maar beginnen.
Zo kun je afhankelijkheden declaratief vastleggen in plaats van herhalingslussen in je applicatie-image in te bouwen.
Wachten op een Service
Een veelgebruikt patroon is het blokkeren van de start totdat een afhankelijke Service antwoord geeft.
initContainers:
- name: wait-for-api
image: busybox:1.36
command:
- sh
- -c
- 'until nslookup api-service; do echo waiting; sleep 2; done'Meerdere init-containers
Je kunt meerdere init-containers aan elkaar koppelen. Ze worden in de vermelde volgorde uitgevoerd en elk wordt volledig voltooid voordat de volgende begint.
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']Gegevens delen met emptyDir
Init-containers bereiden vaak bestanden voor de applicatiecontainer voor met behulp van een gedeeld emptyDir-volume.
volumes:
- name: shared
emptyDir: {}
initContainers:
- name: setup
image: busybox:1.36
command: ['sh', '-c', 'echo hello > /work/index.html']
volumeMounts:
- name: shared
mountPath: /workDe status van init-containers controleren
Terwijl init-containers worden uitgevoerd, toont de Pod een status zoals Init:0/2. Gebruik kubectl om de voortgang te volgen.
kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-initRegels voor resourcegebruik
Omdat init-containers achter elkaar worden uitgevoerd, gebruikt Kubernetes bij het plannen de hoogste resourceaanvraag of -limiet onder deze containers (niet de som) en vergelijkt die daarna met de behoeften van de applicatiecontainers.
Veelvoorkomende toepassingen
- Wachten totdat een database of externe API bereikbaar is
- Schemamigraties uitvoeren voordat de applicatie start
- Configuratiebestanden genereren of downloaden
- Bestandsrechten instellen op een gekoppeld volume
- De Pod registreren bij een serviceregister
Gedrag bij fouten
Als een init-container mislukt en de restartPolicy van de Pod Always of OnFailure is, blijft Kubernetes deze opnieuw proberen totdat hij slaagt. De hoofdcontainers worden tot die tijd nooit gestart.
Korte controle
Test je begrip van de volgorde van init-containers.
Samenvatting
Je hebt geleerd dat init-containers achter elkaar volledig worden uitgevoerd voordat applicatiecontainers starten. Ze leggen de volgorde bij het opstarten vast, bereiden gedeelde gegevens voor via volumes en voeren eenmalige insteltaken uit, zoals migraties of controles van afhankelijkheden.
Vervolgens kun je init-containers combineren met sidecars voor uitgebreidere patronen bij het opstarten van Pods.
Leer DevOps-bootcamp met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 142
- Lessen
- 568
Veelgestelde vragen
Is de les “Init-containers en opstartvolgorde” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Init-containers en opstartvolgorde”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat leer ik in “Init-containers en opstartvolgorde”?
Leer hoe init-containers insteltaken uitvoeren voordat uw hoofdcontainers starten en hoe ze de volgorde binnen een Pod afdwingen. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?
Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Init-containers en opstartvolgorde”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?
Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Pods: de kleinste eenheid
- Levenscyclus en statussen van Pods
- Pods met meerdere containers (sidecars)
- Init-containers en opstartvolgorde