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
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.27Hvorfor 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: /workKontrollé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-initRegler 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.
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
- Pods: Den mindste enhed
- Pod-livscyklus og tilstande
- Pods med flere containere (sidecars)
- Init-containere og opstartsrækkefølge