DevOps-bootcamp · Les

Init-containers en opstartvolgorde

Leer hoe init-containers insteltaken uitvoeren voordat uw hoofdcontainers starten en hoe ze de volgorde binnen een Pod afdwingen.

Les 4 van 413 stappen

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.27

Waarom 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: /work

De 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-init

Regels 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.

Gratis beginnen

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

  1. Pods: de kleinste eenheid
  2. Levenscyclus en statussen van Pods
  3. Pods met meerdere containers (sidecars)
  4. Init-containers en opstartvolgorde
← Terug naar DevOps-bootcamp