DevOps-bootcamp · leksjon

Pods med flere containere (sidecars)

Utforsk mønstre for å kjøre flere samlokaliserte containere i én Pod, for eksempel sidecar-containere.

Leksjon 3 av 411 trinn

Pods med flere containere (sidecars) er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Utover én enkelt container

Så langt har vi sett på Pods som noe som kjører én enkelt container. Men hva om applikasjonen trenger en hjelpeprosess?

Kubernetes lar en Pod kjøre flere containere. Disse containerne er alltid samlokalisert og deler ressurser.

Hvorfor Pods med flere containere?

Det er ideelt å kjøre flere containere i én Pod for applikasjoner som er tett koblet og trenger å dele:

  • Network namespace (samme IP-adresse, og de kan kommunisere via localhost)
  • Storage-volumer
  • Livssyklus (de starter, stopper og starter på nytt sammen)

Dette gjør det mulig å administrere relaterte prosesser som én samlet enhet.

Sidecar-mønsteret forklart

Et vanlig designmønster er Sidecar Pattern. Her kjører en «sidecar»-container ved siden av hovedcontaineren for applikasjonen.

Den utvider eller forbedrer funksjonaliteten til hovedapplikasjonen uten at selve hovedappen må endres. Tenk på den som en nyttig følgesvenn!

Bruksområder for sidecar

Sidecars kan brukes til svært mye. Vanlige bruksområder er:

  • Logginnsamling: En sidecar samler logger fra hovedappen og sender dem til en sentral loggtjeneste.
  • Proxy: En sidecar tilbyr nettverksproxy, for eksempel for sikkerhet (mTLS) eller trafikkstyring.
  • Filsynkronisering: En sidecar holder et delt volum oppdatert med konfigurasjon eller data.

Pod med to containere (YAML)

La oss se på hvordan De definerer flere containere i Pod-ens YAML-manifest. Hver container er et element i containers-arrayet.

Legg merke til containerne nginx-proxy og main-app som er definert under spec.containers.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: nginx-proxy
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]

Delt lagring: emptyDir

Containere i samme Pod kan dele data ved hjelp av Kubernetes Volumes. En enkel måte å gjøre dette på er å bruke et emptyDir-volum.

Et emptyDir-volum opprettes når en Pod tilordnes en node, og eksisterer så lenge Pod-en kjører på denne noden. Det er midlertidig lagringsområde.

Eksempel: Sidecar for logginnsamling

Se for Dem en hovedapplikasjon som skriver logger til en fil. En sidecar kan deretter lese denne loggfilen og sende den til en loggtjeneste.

Dette skiller logikk for logging fra hovedapplikasjonen, slik at den forblir ryddig og fokusert.

YAML for logginnsamling (del 1)

Her er YAML-filen for eksempelet vårt på logginnsamling. Vi definerer et emptyDir-volum med navnet log-volume. Begge containerne skal montere dette volumet.

main-app-containeren skriver en loggmelding til /var/log/app.log i det delte volumet.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

YAML for logginnsamling (del 2)

Nå monterer log-sidecar-containeren det samme log-volume. Den bruker deretter tail -f til kontinuerlig å lese loggfilen som hovedappen skriver.

I et virkelig scenario ville denne sidecaren behandlet loggene og sendt dem til et loggsystem som Elasticsearch eller Splunk.

apiVersion: v1
kind: Pod
metadata:
  name: log-collector-pod # Same Pod as before
spec:
  volumes:
  - name: log-volume
    emptyDir: {}
  containers:
  - name: main-app
    image: busybox:latest
    command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log
  - name: log-sidecar
    image: busybox:latest
    command: ["sh", "-c", "tail -f /var/log/app.log"]
    volumeMounts:
    - name: log-volume
      mountPath: /var/log

Hurtigsjekk: Fordeler med sidecar

Pods med flere containere, særlig når sidecar-mønsteret brukes, gir flere fordeler ved administrasjon av komplekse applikasjoner.

Hvilke av alternativene nedenfor er viktige fordeler ved å bruke en sidecar-container?

Oppsummering: Pods med flere containere

Godt jobbet! De har lært om Pods med flere containere og det kraftige sidecar-mønsteret.

  • Pods kan være vert for flere containere som deler nettverk og lagring.
  • Sidecar-mønsteret bidrar til å utvide eller forbedre funksjonaliteten til hovedappen.
  • Vanlige bruksområder er logginnsamling, proxyer og datasynkronisering.
  • emptyDir-volumer gir midlertidig delt lagring i en Pod.

Dette mønsteret er viktig for å bygge robuste og modulære applikasjoner i Kubernetes!

Gratis å komme i gang

Lær deg DevOps-bootcamp med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
142
Leksjoner
568

Ofte stilte spørsmål

Er leksjonen «Pods med flere containere (sidecars)» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Pods med flere containere (sidecars)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva lærer jeg i «Pods med flere containere (sidecars)»?

Utforsk mønstre for å kjøre flere samlokaliserte containere i én Pod, for eksempel sidecar-containere. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med DevOps-bootcamp?

Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Pods med flere containere (sidecars)»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?

Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Pods: Den minste enheten
  2. Pod-livssyklus og tilstander
  3. Pods med flere containere (sidecars)
  4. Init-containere og oppstartsrekkefølge
← Tilbake til DevOps-bootcamp