0Pricing
Kubernetes Basics · Lezione

Aggiornamenti progressivi e rollback

Implementi aggiornamenti delle applicazioni senza downtime e torni alle versioni precedenti se si verificano problemi.

Aggiornamenti progressivi e rollback è una lezione Kubernetes Basics 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 Kubernetes Basics, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kubernetes Basics include 4 lezioni in totale.

Aggiornamenti senza interruzioni: perché

Immagini di aggiornare un'applicazione in produzione. Senza un'attenta pianificazione, gli utenti potrebbero riscontrare interruzioni del servizio o errori. È qui che gli aggiornamenti progressivi di Kubernetes dimostrano tutta la loro utilità!

Gli aggiornamenti progressivi consentono di aggiornare l'applicazione a una nuova versione senza interrompere il servizio. Le nuove versioni vengono distribuite gradualmente, garantendo che l'applicazione rimanga disponibile.

Come i Deployment gestiscono gli aggiornamenti

Quando si aggiorna il template del Pod di un Deployment, ad esempio modificando l'immagine del container, Kubernetes non arresta semplicemente tutto per poi riavviarlo. Usa invece per impostazione predefinita una strategia RollingUpdate.

  • Crea nuovi Pod con la configurazione aggiornata.
  • Termina gradualmente i Pod precedenti quando i nuovi sono pronti.
  • Questo processo garantisce una transizione fluida con un'interruzione minima o nulla.

Controllare la velocità del rollout

È possibile regolare in dettaglio il comportamento degli aggiornamenti progressivi usando due parametri fondamentali nella sezione .spec.strategy.rollingUpdate del Deployment:

  • maxUnavailable: il numero massimo di Pod che possono non essere disponibili durante l'aggiornamento. Può essere un numero assoluto o una percentuale.
  • maxSurge: il numero massimo di Pod che possono essere creati oltre il numero desiderato di Pod. Anche questo valore può essere un numero assoluto o una percentuale.

Per impostazione predefinita, entrambi sono impostati al 25%.

Il Deployment iniziale

Iniziamo con un semplice Deployment Nginx. Questo YAML definisce l'applicazione iniziale, in esecuzione con 3 repliche di nginx:1.14.2.

Lo useremo come base per eseguire un aggiornamento progressivo nel passaggio successivo.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Eseguire un aggiornamento progressivo

Ora aggiorniamo la versione di Nginx da 1.14.2 a 1.15.0. È sufficiente modificare l'immagine nel file YAML e applicarlo.

Kubernetes rileverà la modifica e avvierà automaticamente un aggiornamento progressivo. Osservi il campo image qui sotto:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.0
        ports:
        - containerPort: 80

Monitorare lo stato del rollout

Dopo aver applicato il file YAML aggiornato, è possibile monitorare l'avanzamento dell'aggiornamento progressivo usando il comando kubectl rollout status:

kubectl rollout status deployment/my-nginx

Verranno visualizzati messaggi che indicano la creazione dei nuovi Pod e la terminazione di quelli precedenti fino al completamento dell'aggiornamento. È inoltre possibile usare kubectl get rs per visualizzare i ReplicaSet precedenti e quelli nuovi.

Controllare la cronologia del rollout

Kubernetes conserva la cronologia delle revisioni dei Deployment. È estremamente utile per comprendere le modifiche e per eventuali rollback.

Per visualizzare la cronologia, usi il comando:

kubectl rollout history deployment/my-nginx

Verrà visualizzato un elenco di revisioni, ognuna delle quali rappresenta uno stato distinto del Deployment. CHANGE-CAUSE riflette spesso il comando o la modifica al file YAML.

Quando è necessario un rollback

Anche con test accurati, a volte una nuova versione dell'applicazione introduce bug o problemi di prestazioni che non erano stati rilevati. In situazioni così critiche, è necessario poter tornare rapidamente a uno stato stabile noto.

È qui che entrano in gioco i rollback. Consentono di annullare un aggiornamento problematico e riportare il Deployment a una versione precedente e funzionante della sua cronologia.

Eseguire un rollback

Per tornare alla revisione immediatamente precedente, usi:

kubectl rollout undo deployment/my-nginx

Se desidera eseguire il rollback a una revisione specifica, ad esempio la revisione 1, può specificarla:

kubectl rollout undo deployment/my-nginx --to-revision=1

Kubernetes eseguirà un altro aggiornamento progressivo per riportare i Pod alla configurazione storica specificata.

Verifica della strategia di rollout

Quale dei seguenti parametri può essere usato per controllare il comportamento della strategia RollingUpdate di un Deployment Kubernetes?

Riepilogo: aggiornamenti fluidi e reti di sicurezza

Abbiamo visto come i Deployment Kubernetes consentano aggiornamenti progressivi senza interruzioni, portando gradualmente le applicazioni alle nuove versioni. Ha imparato che:

  • I Deployment usano RollingUpdate per impostazione predefinita.
  • maxUnavailable e maxSurge controllano la velocità dell'aggiornamento.
  • kubectl rollout status monitora l'avanzamento.
  • kubectl rollout history tiene traccia delle revisioni.
  • kubectl rollout undo consente di eseguire rapidamente il rollback a versioni stabili.

Queste funzionalità sono fondamentali per mantenere alta disponibilità e affidabilità nelle applicazioni.

Domande Frequenti

La lezione «Aggiornamenti progressivi e rollback» è gratuita?

Sì — il testo completo di «Aggiornamenti progressivi e rollback» è 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 Kubernetes Basics, passa a CoddyKit PRO. Il corso Kubernetes Basics include 4 lezioni in totale.

Cosa imparerò in «Aggiornamenti progressivi e rollback»?

Implementi aggiornamenti delle applicazioni senza downtime e torni alle versioni precedenti se si verificano problemi. Eserciti Kubernetes Basics 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 Kubernetes Basics?

Non è richiesta alcuna esperienza precedente. Kubernetes Basics 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 «Aggiornamenti progressivi e rollback»?

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 Kubernetes Basics?

Sì. Ogni lezione Kubernetes Basics 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. Comprendere i Deployment
  2. Scalabilità delle applicazioni con i ReplicaSet
  3. Aggiornamenti progressivi e rollback
  4. Strategie di deployment: blue-green e canary
← Torna a Kubernetes Basics