DevOps-bootcamp · Lektion

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.

Lektion 4 av 413 steg

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

Varfö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: /work

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

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

Gratis att börja

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

  1. Pods: den minsta enheten
  2. Pod-livscykel och tillstånd
  3. Pods med flera containers (sidecars)
  4. Init-containrar och startordning
← Tillbaka till DevOps-bootcamp