0Pricing
DevOps Bootcamp · Lezione

Ciclo di vita e stati dei Pod

Comprenda le diverse fasi attraversate da un Pod e come monitorarne lo stato.

Ciclo di vita e stati dei Pod è una lezione DevOps Bootcamp 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 DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Pod: un viaggio attraverso il ciclo di vita

I Pod non sono statici: attraversano diverse fasi, proprio come in un viaggio. Comprendere questo «ciclo di vita» è fondamentale per gestire efficacemente le vostre applicazioni in Kubernetes.

Vi aiuta a capire se l'app è integra, si sta avviando o ha riscontrato un problema.

Ciclo di vita e stati dei Pod — illustrazione 1

Le cinque fasi della vita di un Pod

Kubernetes suddivide i Pod in cinque fasi principali. Queste fasi forniscono una panoramica di alto livello dello stato attuale di un Pod:

  • Pending: il Pod è stato accettato da Kubernetes, ma i suoi container non sono ancora stati avviati.
  • Running: almeno un container nel Pod è in esecuzione o in fase di avvio.
  • Succeeded: tutti i container nel Pod sono stati completati correttamente e non verranno riavviati.
  • Failed: tutti i container sono terminati e almeno uno ha avuto esito negativo (ad esempio, è terminato con un codice diverso da zero).
  • Unknown: non è stato possibile determinare lo stato del Pod, spesso a causa di problemi di comunicazione.

Fase 1: Pod in stato Pending

Un Pod si trova nella fase Pending quando è stato accettato dal server API di Kubernetes, ma uno o più container non sono ancora stati creati o configurati.

Tra le cause comuni ci sono:

  • L'immagine del container è ancora in fase di download.
  • Il cluster non dispone di risorse sufficienti (CPU/memoria) per pianificare il Pod.
  • I volumi sono ancora in fase di provisioning o montaggio.

Osservazione di un Pod in stato Pending

Esaminiamo un esempio. Se provate a distribuire un Pod con un'immagine inesistente, potrebbe rimanere bloccato nello stato «Pending» o mostrare un errore durante il recupero dell'immagine.

Ecco una definizione di esempio per un Pod:

apiVersion: v1
kind: Pod
metadata:
  name: pending-pod-demo
spec:
  containers:
  - name: my-container
    image: non-existent-image:latest
    ports:
    - containerPort: 80

Per verificarne lo stato, usereste kubectl get pod. Potreste visualizzare un risultato simile:

$ kubectl get pod pending-pod-demo
NAME               READY   STATUS         RESTARTS   AGE
pending-pod-demo   0/1     ErrImagePull   0          5s

ErrImagePull indica che non è stato possibile recuperare l'immagine, impedendo al Pod di raggiungere lo stato Running.

Fase 2: Pod in esecuzione

La fase Running indica che il Pod è stato associato a un nodo e che tutti i suoi container sono stati creati correttamente. Almeno un container è in esecuzione oppure è in fase di avvio o riavvio.

È importante notare che un Pod in fase Running non significa automaticamente che l'applicazione al suo interno sia integra o completamente funzionante. Significa solo che i container sono attivi.

Avviare un Pod

Questa è una definizione standard di un Pod per un server web Nginx. Dopo averla applicata, il Pod dovrebbe passare rapidamente allo stato 'Running'.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

Una volta eseguito il deployment, kubectl get pod mostrerebbe:

$ kubectl get pod nginx-pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          10s

Il valore 1/1 nella colonna READY conferma che un container è pronto su uno definito.

Fasi 3 e 4: Succeeded e Failed

Queste fasi rappresentano gli stati di terminazione di un Pod:

  • Succeeded: un Pod entra in questa fase quando tutti i container al suo interno sono terminati correttamente e non verranno riavviati. È tipico dei Pod che eseguono attività singole o processi batch.
  • Failed: un Pod si trova nella fase Failed quando tutti i container al suo interno sono terminati e almeno uno di essi è terminato con un errore, ad esempio con un codice di uscita diverso da zero.

Comprendere queste fasi aiuta a diagnosticare il completamento dei job o gli errori dell'applicazione.

La misteriosa fase Unknown

La fase Unknown indica che non è stato possibile determinare lo stato del Pod. È una fase rara, ma critica.

Di solito si verifica quando il Kubelet, ovvero l'agente del nodo su cui è in esecuzione il Pod, smette di comunicare con il server API di Kubernetes. La causa potrebbe essere un problema di rete, un arresto anomalo del Kubelet o un problema del nodo stesso.

Stati dei container all'interno dei Pod

Sebbene i Pod abbiano fasi complessive, anche i singoli container al loro interno hanno stati più granulari. Questi stati influenzano direttamente la fase complessiva del Pod:

  • Waiting: il container è in attesa di essere avviato. Tra i motivi possibili vi sono il download dell'immagine, l'allocazione delle risorse o l'attesa del completamento dei container di inizializzazione.
  • Running: il container è in esecuzione attiva senza problemi.
  • Terminated: il container ha completato la propria esecuzione. Potrebbe aver avuto successo oppure essere terminato con un errore.

Verifica dello stato del Pod

Immagini di aver appena eseguito il deployment di un nuovo Pod. Esegui kubectl get pod my-app e visualizzi il seguente output:

NAME      READY   STATUS     RESTARTS   AGE
my-app    0/1     Pending    0          12s

Qual è il motivo più probabile per cui il Pod my-app si trova nello stato Pending con 0/1 container pronti?

Riepilogo del ciclo di vita e prossimi passi

Ha imparato che i Pod Kubernetes attraversano fasi distinte: Pending, Running, Succeeded, Failed e Unknown. Queste fasi forniscono informazioni di alto livello sullo stato operativo di un Pod.

Abbiamo anche esaminato gli stati dei container individuali (Waiting, Running e Terminated), che contribuiscono alla fase complessiva del Pod. Monitorare questi stati con kubectl get pod e kubectl describe pod (che approfondirà più avanti) è fondamentale per comprendere lo stato di salute dell'applicazione.

Ora passeremo ai pattern avanzati per i Pod, esaminando come eseguire più container affiancati all'interno di un singolo Pod usando il pattern sidecar.

Domande Frequenti

La lezione «Ciclo di vita e stati dei Pod» è gratuita?

Sì — il testo completo di «Ciclo di vita e stati dei Pod» è 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 «Ciclo di vita e stati dei Pod»?

Comprenda le diverse fasi attraversate da un Pod e come monitorarne lo stato. 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 2 di 4.

Quanto tempo richiede la lezione «Ciclo di vita e stati dei Pod»?

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