Grundlæggende Kubernetes · Lektion

Init-containere og opstartsrækkefølge

Lær, hvordan init-containere udfører opsætningsopgaver, før dine primære app-containere starter, og hvordan de håndhæver rækkefølgen i en Pod

Lektion 4 af 413 trin

Init-containere og opstartsrækkefølge er en gratis Grundlæggende Kubernetes-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlæggende Kubernetes, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlæggende Kubernetes-kurset indeholder 4 lektioner i alt.

Hvad er init-containere?

En init-container er en særlig container, der kører færdig, før app-containerne i en Pod starter. En Pod kan have en eller flere.

De er ideelle til engangsopsætning: at vente på en afhængighed, klone konfiguration eller køre en databasemigrering.

Sådan adskiller de sig fra app-containere

Init-containere kører altid færdigt og skal lykkes, før den næste starter. App-containere kører derimod kontinuerligt.

  • Init-containere kører sekventielt, én ad gangen
  • App-containere kører parallelt
  • Hvis en init-container fejler, genstarter Pod'en den (i henhold til restartPolicy)

En grundlæggende specifikation for en init-container

Init-containere findes under spec.initContainers, som er søskende til 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

Hvorfor rækkefølgen er vigtig

Kubernetes garanterer rækkefølgen: Hver init-container afsluttes korrekt, før hovedcontainerne overhovedet starter.

Det giver dig mulighed for at angive afhængigheder deklarativt i stedet for at indbygge genforsøgsløkker i dit app-image.

Vent på en tjeneste

Et almindeligt mønster er at blokere opstarten, indtil en afhængig tjeneste svarer.

initContainers:
- name: wait-for-api
  image: busybox:1.36
  command:
  - sh
  - -c
  - 'until nslookup api-service; do echo waiting; sleep 2; done'

Flere init-containere

Du kan kæde flere init-containere sammen. De kører i den angivne rækkefølge, og hver enkelt afsluttes helt, før den næste begynder.

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']

Del data med emptyDir

Init-containere forbereder ofte filer til app-containeren ved hjælp af en delt emptyDir-volumen.

volumes:
- name: shared
  emptyDir: {}
initContainers:
- name: setup
  image: busybox:1.36
  command: ['sh', '-c', 'echo hello > /work/index.html']
  volumeMounts:
  - name: shared
    mountPath: /work

Kontrollér init-status

Mens init-containere kører, viser Pod'en en status som Init:0/2. Brug kubectl til at følge fremskridtet.

kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-init

Regler for ressourceforbrug

Da init-containere kører sekventielt, bruger Kubernetes den højeste ressourceanmodning/-grænse blandt dem (ikke summen) ved planlægning og sammenligner derefter med app-containeres behov.

Almindelige anvendelser

  • Vent på, at en database eller ekstern API bliver tilgængelig
  • Kør skemamigreringer, før appen starter
  • Generér eller download konfigurationsfiler
  • Angiv filtilladelser på en monteret volumen
  • Registrér Pod'en i et tjenesteregister

Adfærd ved fejl

Hvis en init-container fejler, og Pod'ens restartPolicy er Always eller OnFailure, bliver Kubernetes ved med at forsøge igen, indtil den lykkes. Hovedcontainerne starter ikke før da.

Hurtig kontrol

Test din forståelse af rækkefølgen for init-containere.

Opsummering

Du har lært, at init-containere kører sekventielt til afslutning, før app-containere starter. De håndhæver rækkefølgen ved opstart, forbereder delte data via volumener og håndterer engangsopsætning som migreringer eller kontrol af afhængigheder.

Derefter kan du kombinere init-containere med sidecars for at skabe mere avancerede mønstre for opstart af Pods.

Gratis at komme i gang

Lær Grundlæggende Kubernetes med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Init-containere og opstartsrækkefølge” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende Kubernetes, inklusive “Init-containere og opstartsrækkefølge”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlæggende Kubernetes-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Init-containere og opstartsrækkefølge”?

Lær, hvordan init-containere udfører opsætningsopgaver, før dine primære app-containere starter, og hvordan de håndhæver rækkefølgen i en Pod Du øver dig i Grundlæggende Kubernetes med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlæggende Kubernetes?

Der kræves ingen tidligere erfaring. Grundlæggende Kubernetes på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Init-containere og opstartsrækkefølge”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlæggende Kubernetes-lektion?

Ja. Alle Grundlæggende Kubernetes-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Pods: Den mindste enhed
  2. Pod-livscyklus og tilstande
  3. Pods med flere containere (sidecars)
  4. Init-containere og opstartsrækkefølge
← Tilbage til Grundlæggende Kubernetes