Init-Container und Startreihenfolge
Lernen Sie, wie Init-Container Setup-Aufgaben erledigen, bevor die Container Ihrer Hauptanwendung starten, und wie sie die Reihenfolge innerhalb eines Pods festlegen.
Init-Container und Startreihenfolge ist eine kostenlose Kubernetes Basics-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kubernetes Basics-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Was sind Init-Container
Ein Init-Container ist ein spezieller Container, der vor dem Start der Hauptcontainer einer Anwendung in einem Pod vollständig ausgeführt wird. Ein Pod kann einen oder mehrere davon enthalten.
Sie eignen sich ideal für einmalige Einrichtungsschritte: auf eine Abhängigkeit warten, Konfiguration klonen oder eine Datenbankmigration ausführen.
Unterschiede zu Anwendungcontainern
Init-Container werden immer bis zum Abschluss ausgeführt und müssen erfolgreich beendet sein, bevor der nächste gestartet wird. Anwendungcontainer laufen dagegen kontinuierlich.
- Init-Container werden nacheinander und einzeln ausgeführt
- Anwendungcontainer laufen parallel
- Wenn ein Init-Container fehlschlägt, startet der Pod ihn entsprechend der
restartPolicyneu
Eine einfache Init-Container-Spezifikation
Init-Container befinden sich unter spec.initContainers, auf derselben Ebene wie 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.27Warum die Reihenfolge wichtig ist
Kubernetes garantiert die Reihenfolge: Jeder Init-Container wird erfolgreich abgeschlossen, bevor die Hauptcontainer überhaupt starten.
So können Sie Abhängigkeiten deklarativ ausdrücken, anstatt Wiederholungsschleifen in Ihr Anwendungsimage einzubauen.
Auf einen Service warten
Ein häufig verwendetes Muster besteht darin, den Start zu blockieren, bis ein abhängiger Service antwortet.
initContainers:
- name: wait-for-api
image: busybox:1.36
command:
- sh
- -c
- 'until nslookup api-service; do echo waiting; sleep 2; done'Mehrere Init-Container
Sie können mehrere Init-Container verketten. Sie werden in der angegebenen Reihenfolge ausgeführt, wobei jeder vollständig abgeschlossen sein muss, bevor der nächste beginnt.
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']Daten mit emptyDir gemeinsam nutzen
Init-Container bereiten häufig Dateien für den Anwendungcontainer vor, indem sie ein gemeinsames emptyDir-Volume verwenden.
volumes:
- name: shared
emptyDir: {}
initContainers:
- name: setup
image: busybox:1.36
command: ['sh', '-c', 'echo hello > /work/index.html']
volumeMounts:
- name: shared
mountPath: /workDen Status von Init-Containern überprüfen
Während Init-Container ausgeführt werden, zeigt der Pod einen Status wie Init:0/2 an. Verwenden Sie kubectl, um den Fortschritt zu verfolgen.
kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-initRegeln für die Ressourcennutzung
Da Init-Container nacheinander ausgeführt werden, verwendet Kubernetes beim Einplanen die höchste Ressourcenanforderung bzw. -begrenzung unter ihnen (nicht die Summe) und vergleicht sie anschließend mit dem Ressourcenbedarf der Anwendungcontainer.
Häufige Anwendungsfälle
- Warten, bis eine Datenbank oder eine externe API erreichbar ist
- Schemamigrationen ausführen, bevor die Anwendung startet
- Konfigurationsdateien erzeugen oder herunterladen
- Dateiberechtigungen auf einem eingebundenen Volume setzen
- Den Pod bei einer Serviceregistry registrieren
Verhalten bei Fehlern
Wenn ein Init-Container fehlschlägt und die restartPolicy des Pods auf Always oder OnFailure gesetzt ist, versucht Kubernetes weiterhin, ihn zu starten, bis er erfolgreich ist. Die Hauptcontainer starten erst danach.
Kurzer Test
Testen Sie Ihr Verständnis der Reihenfolge von Init-Containern.
Zusammenfassung
Sie haben gelernt, dass Init-Container nacheinander bis zum Abschluss ausgeführt werden, bevor Anwendungcontainer starten. Sie erzwingen die Startreihenfolge, bereiten gemeinsame Daten über Volumes vor und übernehmen einmalige Einrichtungsschritte wie Migrationen oder Abhängigkeitsprüfungen.
Als Nächstes können Sie Init-Container mit Sidecars für komplexere Startmuster von Pods kombinieren.
Lerne Kubernetes Basics mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 12
- Lektionen
- 48
Häufig gestellte Fragen
Ist die Lektion „Init-Container und Startreihenfolge“ kostenlos?
Ja — der vollständige Text von „Init-Container und Startreihenfolge“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kubernetes Basics-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Init-Container und Startreihenfolge“?
Lernen Sie, wie Init-Container Setup-Aufgaben erledigen, bevor die Container Ihrer Hauptanwendung starten, und wie sie die Reihenfolge innerhalb eines Pods festlegen. Du übst Kubernetes Basics mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kubernetes Basics zu starten?
Keine Vorkenntnisse erforderlich. Kubernetes Basics auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Init-Container und Startreihenfolge“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kubernetes Basics-Lektion Code schreiben und ausführen?
Ja. Jede Kubernetes Basics-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Pods: Die kleinste Einheit
- Pod-Lebenszyklus und -Zustände
- Multi-Container-Pods (Sidecars)
- Init-Container und Startreihenfolge