Intensiv DevOps-uddannelse · Lektion

Pods med flere containere (sidecars)

Udforsk mønstre til at køre flere samplacerede containere i en enkelt Pod, f.eks. sidecar-containere.

Lektion 3 af 411 trin

Pods med flere containere (sidecars) er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 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 Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Ud over en enkelt container

Indtil nu har vi betragtet Pods som noget, der kører en enkelt container. Men hvad nu, hvis din applikation har brug for en hjælpeproces?

Kubernetes gør det muligt for en Pod at køre flere containere. Disse containere er altid placeret sammen og deler ressourcer.

Hvorfor bruge Pods med flere containere?

Det er ideelt at køre flere containere i én Pod til applikationer, der er tæt koblede og har brug for at dele:

  • Netværksnavnerum (samme IP-adresse, så de kan kommunikere via localhost)
  • Storage-volumener
  • Livscyklus (de starter, stopper og genstarter sammen)

Det giver én samlet administrationsenhed for relaterede processer.

Sidecar-mønsteret forklaret

Et almindeligt design er Sidecar Pattern. Her kører en "sidecar"-container sammen med din primære applikationscontainer.

Den udvider eller forbedrer den primære applikations funktionalitet uden at ændre selve hovedapplikationen. Tænk på den som en hjælpsom ledsager!

Anvendelser af sidecars

Sidecars kan bruges til utrolig meget. Almindelige anvendelser omfatter:

  • Logindsamling: En sidecar indsamler logge fra hovedapplikationen og sender dem til en central logtjeneste.
  • Proxy: En sidecar leverer netværksproxyfunktionalitet, f.eks. til sikkerhed (mTLS) eller trafikstyring.
  • Filsynkronisering: En sidecar holder en delt volumen opdateret med konfiguration eller data.

Pod med to containere (YAML)

Lad os se på, hvordan du definerer flere containere i en Pods YAML-manifest. Hver container er et element i arrayet containers.

Bemærk containerne nginx-proxy og main-app, som er defineret 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 storage: emptyDir

Containere i den samme Pod kan dele data ved hjælp af Kubernetes-Volumes. En enkel måde at gøre det på er med en emptyDir-volumen.

En emptyDir-volumen oprettes, når en Pod tildeles til en node, og eksisterer, så længe Pod'en kører på den node. Det er midlertidig storage.

Eksempel: Sidecar til logindsamling

Forestil dig en hovedapplikation, der skriver logge til en fil. En sidecar kan derefter læse denne logfil og sende den til en logtjeneste.

Det adskiller logikken til logning fra din hovedapplikation, så den forbliver enkel og fokuseret.

YAML til logindsamling (del 1)

Her er YAML-koden til vores eksempel på logindsamling. Vi definerer en emptyDir-volumen med navnet log-volume. Begge containere monterer denne volumen.

Containeren main-app skriver en logmeddelelse til /var/log/app.log i den delte volumen.

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 til logindsamling (del 2)

Nu monterer containeren log-sidecar den samme log-volume. Derefter bruger den tail -f til løbende at læse den logfil, som hovedapplikationen har skrevet.

I et virkeligt scenarie ville denne sidecar behandle og sende loggene til et logsystem 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

Hurtig kontrol: Fordele ved sidecars

Pods med flere containere, især når sidecar-mønsteret bruges, giver flere fordele ved håndtering af komplekse applikationer.

Hvilke af følgende er vigtige fordele ved at bruge en sidecar-container?

Opsummering: Pods med flere containere

Godt gået! Du har lært om Pods med flere containere og det effektive sidecar-mønster.

  • Pods kan indeholde flere containere, der deler netværk og storage.
  • Sidecar-mønsteret hjælper med at udvide eller forbedre hovedapplikationens funktionalitet.
  • Almindelige anvendelser omfatter logindsamling, proxyer og datasynkronisering.
  • emptyDir-volumener giver midlertidig delt storage i en Pod.

Dette mønster er afgørende for at bygge robuste, modulære applikationer i Kubernetes!

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse 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
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Pods med flere containere (sidecars)” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Pods med flere containere (sidecars)”, 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. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Pods med flere containere (sidecars)”?

Udforsk mønstre til at køre flere samplacerede containere i en enkelt Pod, f.eks. sidecar-containere. Du øver dig i Intensiv DevOps-uddannelse 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å Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse 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 3 af 4.

Hvor lang tid tager lektionen “Pods med flere containere (sidecars)”?

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 Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-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 Intensiv DevOps-uddannelse