0Pricing
Docker & DevOps Fundamentals · Lezione

Pod: le unità più piccole

Scopra i Pod, gli elementi costitutivi fondamentali di Kubernetes, e come definirli e gestirli.

Pod: le unità più piccole è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 2 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 Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Che cos'è un Pod Kubernetes?

In Kubernetes, l'unità più piccola e fondamentale che può essere distribuita è un Pod. Immagini un Pod come una singola "casa" che contiene uno o più container.

I Pod sono un'astrazione dei container. Rappresentano un processo in esecuzione nel cluster e incapsulano i container dell'applicazione, le risorse di storage, un indirizzo IP di rete univoco e le opzioni che regolano il funzionamento dei container.

Pod: le unità più piccole — illustrazione 1

Pod e container: la differenza

Forse si sta chiedendo: "Perché mi serve un Pod se ho già i container?" Ecco la differenza fondamentale:

  • Un container (come un container Docker) è un pacchetto che contiene un'applicazione e le relative dipendenze.
  • Un Pod è l'astrazione di Kubernetes che racchiude uno o più container, fornendo loro risorse condivise e un'unica identità di rete.

Mentre un container è l'eseguibile vero e proprio, un Pod è il modo in cui Kubernetes gestisce e orchestra tali eseguibili.

Perché usare i Pod?

I Pod offrono diversi vantaggi fondamentali:

  • Namespace di rete condiviso: tutti i container all'interno di un Pod condividono lo stesso indirizzo IP e le stesse porte di rete. Possono comunicare tra loro usando localhost.
  • Storage condiviso: i Pod possono condividere volumi di storage, consentendo ai container dello stesso Pod di accedere a dati comuni.
  • Co-localizzazione e co-scheduling: i container che devono lavorare a stretto contatto (ad esempio, un'applicazione e un agente di logging) possono essere eseguiti garantendo che si trovino sullo stesso nodo e vengano sempre pianificati insieme.

Anatomia della definizione di un Pod

I Pod vengono definiti usando file di configurazione YAML. Ecco i componenti principali che troverà:

  • apiVersion: specifica la versione dell'API di Kubernetes (ad esempio, v1).
  • kind: il tipo di oggetto Kubernetes, che in questo caso è Pod.
  • metadata: contiene informazioni come il name e le labels del Pod.
  • spec: lo stato desiderato del Pod, inclusi i containers da eseguire, i volumes e altre impostazioni.

Definizione di un Pod con un singolo container

La maggior parte dei Pod contiene un singolo container. È una configurazione comune per le applicazioni semplici. Ecco una definizione YAML di base per un Pod che esegue un server web Nginx:

apiVersion: v1
kind: Pod
metadata:
  name: my-nginx-pod
  labels:
    app: webserver
spec:
  containers:
  - name: nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80

Distribuzione del primo Pod

Per creare un Pod da un file YAML, si usa il comando kubectl apply. Questo comando indica a Kubernetes di creare o aggiornare le risorse in base alla definizione fornita.

Supponiamo di aver salvato la definizione del Pod Nginx precedente come nginx-pod.yaml. Per distribuirla, si esegue:

  • kubectl apply -f nginx-pod.yaml

Kubernetes pianificherà quindi l'esecuzione di questo Pod su uno dei nodi worker.

Ispezione dei Pod: get e describe

Una volta eseguito il deployment, vorrà controllare lo stato dei Pod. Ecco due comandi kubectl essenziali:

  • kubectl get pods: elenca tutti i Pod nel namespace corrente, mostrando nome, stato e nodo.
  • kubectl describe pod <pod-name>: fornisce informazioni dettagliate su un Pod specifico, inclusi eventi, stato dei container e risorse assegnate.

Questi comandi sono fondamentali per il monitoraggio e la risoluzione dei problemi.

Pod multi-container: i sidecar

Sebbene i Pod con un singolo container siano comuni, alcuni scenari traggono vantaggio dai Pod multi-container. Un esempio classico è il pattern sidecar.

Un container sidecar viene eseguito insieme al container principale dell'applicazione nello stesso Pod e svolge attività ausiliarie come:

  • Agenti di logging e monitoraggio
  • Sincronizzazione dei dati
  • Proxy del traffico di rete

I container condividono la rete e lo storage del Pod, rendendo efficiente la comunicazione.

Esempio: Pod multi-container

Ecco un esempio di Pod multi-container. Contiene un server web Nginx e un container sidecar busybox che scrive i log in un volume condiviso.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  volumes:
  - name: shared-log-volume
    emptyDir: {}
  containers:
  - name: web-server
    image: nginx:latest
    ports:
    - containerPort: 80
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/nginx
  - name: log-writer
    image: busybox:latest
    command: ["/bin/sh", "-c", "while true; do echo 'Hello from sidecar!' >> /var/log/app.log; sleep 5; done"]
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/app

Verifica le conoscenze sui Pod

Quale delle seguenti affermazioni sui Pod Kubernetes è VERA?

Riepilogo: i Pod, l'unità fondamentale

Ha appena imparato a conoscere i Pod Kubernetes, i componenti fondamentali delle applicazioni in un cluster.

  • I Pod incapsulano uno o più container, fornendo loro risorse condivise.
  • Offrono rete e storage condivisi e garantiscono la co-localizzazione dei container correlati.
  • I Pod vengono definiti usando YAML e distribuiti con kubectl apply.
  • kubectl get pods e kubectl describe pod aiutano a monitorarli.

Ora esploreremo altri comandi kubectl per interagire con il cluster!

Domande Frequenti

La lezione «Pod: le unità più piccole» è gratuita?

Sì — il testo completo di «Pod: le unità più piccole» è 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 Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Pod: le unità più piccole»?

Scopra i Pod, gli elementi costitutivi fondamentali di Kubernetes, e come definirli e gestirli. Eserciti Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

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

Quanto tempo richiede la lezione «Pod: le unità più piccole»?

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 Docker & DevOps Fundamentals?

Sì. Ogni lezione Docker & DevOps Fundamentals 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. Architettura di Kubernetes
  2. Pod: le unità più piccole
  3. Comandi essenziali di kubectl
  4. Namespace ed etichette per l'organizzazione
← Torna a Docker & DevOps Fundamentals