Pods med flere containere (sidecars)
Udforsk mønstre til at køre flere samplacerede containere i en enkelt Pod, f.eks. sidecar-containere.
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/logYAML 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/logHurtig 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!
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
- Pods: Den mindste enhed
- Pod-livscyklus og tilstande
- Pods med flere containere (sidecars)
- Init-containere og opstartsrækkefølge