Kubernetes Basics · Lektion

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.

Lektion 4 von 413 Schritte

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 restartPolicy neu

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

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

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

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

Kostenlos starten

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

  1. Pods: Die kleinste Einheit
  2. Pod-Lebenszyklus und -Zustände
  3. Multi-Container-Pods (Sidecars)
  4. Init-Container und Startreihenfolge
← Zurück zu Kubernetes Basics