0Pricing
DevOps Bootcamp · Lezione

Pod multi-container (sidecar)

Esplori i pattern per eseguire più container co-localizzati all'interno di un singolo Pod, come i container sidecar.

Pod multi-container (sidecar) è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Oltre un singolo container

Finora abbiamo considerato i Pod come elementi che eseguono un singolo container. Ma cosa succede se l'applicazione necessita di un processo di supporto?

Kubernetes consente a un Pod di eseguire più container. Questi container sono sempre collocati insieme e condividono le risorse.

Perché usare Pod multi-container?

L'esecuzione di più container in un unico Pod è ideale per le applicazioni strettamente accoppiate che devono condividere:

  • Il namespace di rete (lo stesso indirizzo IP, con la possibilità di comunicare tramite localhost)
  • Volumi di storage
  • Il ciclo di vita (si avviano, si arrestano e si riavviano insieme)

In questo modo è possibile gestire i processi correlati come un'unica unità.

Spiegazione del pattern sidecar

Un design comune è il pattern Sidecar. In questo caso, un container "sidecar" viene eseguito insieme al container dell'applicazione principale.

Estende o migliora le funzionalità dell'applicazione principale senza modificarla direttamente. È come avere un assistente sempre al proprio fianco.

Casi d'uso dei sidecar

I sidecar sono estremamente versatili. Tra gli usi più comuni vi sono:

  • Raccolta dei log: un sidecar raccoglie i log dell'applicazione principale e li invia a un servizio di logging centralizzato.
  • Proxy: un sidecar fornisce funzionalità di proxy di rete, ad esempio per la sicurezza (mTLS) o la gestione del traffico.
  • Sincronizzazione dei file: un sidecar mantiene aggiornato un volume condiviso con la configurazione o i dati.

Pod con due container (YAML)

Vediamo come definire più container nel manifest YAML di un Pod. Ogni container è un elemento dell'array containers.

Noti i container nginx-proxy e main-app definiti in 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"]

Storage condiviso: emptyDir

I container all'interno dello stesso Pod possono condividere dati usando i Volumi di Kubernetes. Un modo semplice per farlo consiste nell'usare un volume emptyDir.

Un volume emptyDir viene creato quando un Pod viene assegnato a un nodo e rimane disponibile finché il Pod è in esecuzione su quel nodo. Si tratta di storage temporaneo.

Esempio: sidecar per la raccolta dei log

Immagini un'applicazione principale che genera log in un file. Un sidecar può quindi leggere questo file di log e inviarlo a un servizio di logging.

In questo modo la logica di logging viene separata dall'applicazione principale, che rimane pulita e focalizzata.

YAML del raccoglitore di log (parte 1)

Ecco il codice YAML del nostro esempio di raccoglitore di log. Definiamo un volume emptyDir denominato log-volume. Entrambi i container monteranno questo volume.

Il container main-app scrive un messaggio di log in /var/log/app.log all'interno del volume condiviso.

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 del raccoglitore di log (parte 2)

Ora il container log-sidecar monta lo stesso log-volume. Usa quindi tail -f per leggere continuamente il file di log scritto dall'applicazione principale.

In uno scenario reale, questo sidecar elaborerebbe i log e li invierebbe a un sistema di logging come Elasticsearch o 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

Verifica rapida: vantaggi dei sidecar

I Pod multi-container, soprattutto quando usano il pattern sidecar, offrono diversi vantaggi nella gestione di applicazioni complesse.

Quali tra i seguenti sono vantaggi fondamentali dell'utilizzo di un container sidecar?

Riepilogo: Pod multi-container

Ottimo lavoro! Ha imparato a conoscere i Pod multi-container e il potente pattern sidecar.

  • I Pod possono ospitare più container che condividono rete e storage.
  • Il pattern sidecar aiuta a estendere o migliorare le funzionalità dell'applicazione principale.
  • Gli usi comuni includono la raccolta dei log, i proxy e la sincronizzazione dei dati.
  • I volumi emptyDir forniscono storage temporaneo condiviso all'interno di un Pod.

Questo pattern è fondamentale per creare applicazioni Kubernetes robuste e modulari.

Domande Frequenti

La lezione «Pod multi-container (sidecar)» è gratuita?

Sì — il testo completo di «Pod multi-container (sidecar)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Pod multi-container (sidecar)»?

Esplori i pattern per eseguire più container co-localizzati all'interno di un singolo Pod, come i container sidecar. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Pod multi-container (sidecar)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Pod: l'unità più piccola
  2. Ciclo di vita e stati dei Pod
  3. Pod multi-container (sidecar)
  4. Init container e ordine di avvio
← Torna a DevOps Bootcamp