Init-containrar och startordning
Lär dig hur init-containrar utför förberedande uppgifter innan appens huvudcontainrar startar och hur de styr ordningen i en Pod.
Init-containrar och startordning är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad är init-containrar?
En init-container är en särskild container som körs tills den är klar innan programmets huvudcontainrar i en Pod startar. En Pod kan ha en eller flera sådana containrar.
De passar perfekt för engångsuppgifter vid konfigurering, till exempel att vänta på ett beroende, klona konfiguration eller köra en databas-migrering.
Så skiljer de sig från programcontainrar
Init-containrar körs alltid tills de är klara och måste lyckas innan nästa init-container startar. Programcontainrar körs däremot kontinuerligt.
- Init-containrar körs sekventiellt, en i taget
- Programcontainrar körs parallellt
- Om en init-container misslyckas startar Podden om den enligt
restartPolicy
En grundläggande specifikation för en init-container
Init-containrar anges under spec.initContainers, som ligger på samma nivå som 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.27Varför ordningen är viktig
Kubernetes garanterar ordningen: varje init-container måste slutföras utan fel innan huvudcontainrarna ens börjar starta.
Det gör att du kan uttrycka beroenden deklarativt i stället för att bygga in försöksloopar i din programavbildning.
Vänta på en Service
Ett vanligt mönster är att blockera starten tills en beroende Service svarar.
initContainers:
- name: wait-for-api
image: busybox:1.36
command:
- sh
- -c
- 'until nslookup api-service; do echo waiting; sleep 2; done'Flera init-containrar
Du kan kedja flera init-containrar. De körs i den angivna ordningen, och var och en måste slutföras helt innan nästa börjar.
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']Dela data med emptyDir
Init-containrar förbereder ofta filer åt programcontainern med hjälp av en delad volym av typen emptyDir.
volumes:
- name: shared
emptyDir: {}
initContainers:
- name: setup
image: busybox:1.36
command: ['sh', '-c', 'echo hello > /work/index.html']
volumeMounts:
- name: shared
mountPath: /workKontrollera init-status
Medan init-containrar körs visar Podden en status som Init:0/2. Använd kubectl för att följa förloppet.
kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-initRegler för resursanvändning
Eftersom init-containrar körs sekventiellt använder Kubernetes den högsta resursbegäran eller resursgränsen bland dem (inte summan) vid schemaläggning och jämför sedan med programcontainrarnas behov.
Vanliga användningsområden
- Vänta på att en databas eller ett externt API ska bli tillgängligt
- Köra schemamigreringar innan programmet startar
- Generera eller hämta konfigurationsfiler
- Ange filbehörigheter på en monterad volym
- Registrera Podden i ett tjänsteregister
Beteende vid fel
Om en init-container misslyckas och Poddens restartPolicy är Always eller OnFailure fortsätter Kubernetes att försöka starta den tills den lyckas. Huvudcontainrarna startar inte förrän dess.
Snabbtest
Testa dina kunskaper om ordningen mellan init-containrar.
Sammanfattning
Du har lärt dig att init-containrar körs sekventiellt tills de är klara, innan programcontainrarna startar. De styr startordningen, förbereder delade data via volymer och hanterar engångsuppgifter som migreringar eller kontroll av beroenden.
Härnäst kan du kombinera init-containrar med sidecars för mer avancerade mönster vid start av Poddar.
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Init-containrar och startordning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Init-containrar och startordning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Init-containrar och startordning”?
Lär dig hur init-containrar utför förberedande uppgifter innan appens huvudcontainrar startar och hur de styr ordningen i en Pod. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Init-containrar och startordning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Pods: den minsta enheten
- Pod-livscykel och tillstånd
- Pods med flera containers (sidecars)
- Init-containrar och startordning