Deployment rotolante in Kubernetes

Deployment rotolante in Kubernetes

In questo post, esamineremo le opzioni di distribuzione per l'utilizzo del sistema di orchestrazione contenitore Kubernetes per distribuire i contenitori. Avremo imparato a distribuire nel cluster Kubernetes in vari modi entro la fine di questo articolo. Se vuoi davvero saperne di più su questo argomento, continua a leggere l'articolo. Il codice è disponibile nelle sezioni seguenti.

Cosa sono le distribuzioni in Kubernetes?

Le distribuzioni di Kubernetes sono solo repliche avvolte in un wrapper Kubernetes. La distribuzione monitora il numero di pod operativi, mentre la replicAset gestisce il numero di pod in esecuzione. Ciò consente aggiornamenti di rotolamento, controlli di salute dei pod e facile rollback degli aggiornamenti.

La distribuzione manterrà solo una singola replica durante le normali operazioni, garantendo che il numero di pod richiesti sia operativo.

Non dovresti gestire la replicaset che la distribuzione crea direttamente utilizzando le distribuzioni. Tutte le operazioni condotte su una replicAset devono invece essere eseguite sulla distribuzione, gestendo il processo di aggiornamento della replicaset.

La possibilità di eseguire aggiornamenti di rotolamento è uno dei vantaggi chiave della distribuzione. Le distribuzioni ti danno molta flessibilità rispetto agli aggiornamenti di rotolamento, permettendoti di aggiornare gradualmente la configurazione dei tuoi pod.

Quali sono i casi d'uso tipici per la distribuzione?

Le distribuzioni sono comunemente utilizzate nei seguenti scenari:

  • Per lanciare una replicaset, creare una distribuzione. Sullo sfondo, la replicaset costruisce baccelli. Controlla l'avanzamento della distribuzione per verificare se avesse successo.
  • Aggiorna PodTemplateSPEC della distribuzione per riflettere la condizione modificata dei pod. La distribuzione è incaricata di gestire il trasferimento controllato di baccelli dal vecchio alla nuova replicaset e formane uno nuovo. Con ogni nuova replicAset, la revisione della distribuzione viene aggiornata.
  • Aumentare la capacità della distribuzione di gestire un maggiore traffico.
  • Metti in pausa un lancio di distribuzione per apportare varie modifiche al suo podtemplatespec, quindi riprendilo per iniziare un nuovo lancio.
  • Lo stato di distribuzione può essere utilizzato per determinare se un lancio ha avuto successo o meno.
  • Rimuovi le repliche precedenti che non è più necessario.

Prerequisiti:

Innanzitutto, è necessario installare il cluster minikube e iniziare Ubuntu 20.04. Ora apri un terminale per eseguire i comandi. A tale scopo, premere il collegamento "Ctrl+Alt+T" sulla tastiera.

Puoi anche scrivere il comando "Start Minikube" nel terminale. Dopo questo, aspetta un po 'fino all'inizio. Quello che segue è il risultato di questa istruzione:

$ Minikube inizi

Come creare una distribuzione?

In Kubernetes, le distribuzioni sono formate specificando i loro requisiti in un file di definizione YAML. Usiamo l'esempio di una distribuzione denominata.YAML con i seguenti parametri per vedere come è configurata una distribuzione di aggiornamento del rolling:

$ nano schieramento.Yaml


L'intero file di configurazione può essere trovato qui. Per far apparire tre pod, il codice seguente crea una replicaset. Nell'esempio, il.metadati.La colonna Nome indica che è stata creata una distribuzione denominata Nginx-Deployment. La distribuzione produce tre baccelli replicati, secondo il.spec.Attributo Replicas.

La distribuzione.spec.Il campo selettore specifica il modo in cui determina quali pod gestire. In questo caso, utilizzerai il modello POD per selezionare un'etichetta (app: nginx). Sono possibili regole di selezione più complicate se il modello POD si adatta ai criteri.


Per creare la distribuzione, eseguire il comando dato dopo aver configurato YAML di distribuzione:

$ kubectl crea -f distribuisci.Yaml

Utilizzare il comando KuBectl Get Deployments per vedere se la distribuzione è stata creata, come mostrato di seguito.

$ kubectl ottieni distribuzioni


Se ci sono distribuzioni in corso, è possibile monitorare lo stato di lancio scrivendo questo comando.


Dopo alcuni secondi, esegui Kubectl per ottenere di nuovo le distribuzioni per vedere i dettagli.

$ kubectl ottieni distribuzioni


Per ispezionare la replicAset (RS) creata dalla distribuzione, utilizzare il comando Kubectl Get RS. Ecco il risultato.

$ kubectl ottieni Rs

Esegui kubectl Ottieni pod -show etichette per vedere le etichette prodotte automaticamente per ogni pod. L'output potrebbe apparire così:

$ kubectl get pods-show labels

Come aggiornare una distribuzione?

Per aggiornare la distribuzione, seguire i passaggi elaborati di seguito:

Modifichiamo i pod Nginx per utilizzare la seguente versione di NGINX: Invece di usare NGINX: 1.14.2 Immagine, usa il 1.16.1 immagine.


Esegui il comando dato e visualizza lo stato di lancio.


Al termine dell'implementazione, usa Kubectl per ottenere distribuzioni per vedere la distribuzione. Quello che segue è l'output:

$ kubectl ottieni distribuzioni


Per recuperare i dettagli sulla distribuzione, eseguire il seguente comando:

$ kubectl Descrivi le distribuzioni


Supponiamo che tu abbia fatto un errore quando si cambia la distribuzione e hai digitato NGINX: 1.161 invece di nginx: 1.16.1 nel nome dell'immagine:

L'implementazione viene bloccato. Puoi controllare le prestazioni del lancio qui:


Per fermare l'orologio dello stato di distribuzione sopra, utilizzare CTRL-C.

Quali sono i vantaggi degli aggiornamenti di rotolamento?

Gli aggiornamenti di rotolamento consentono l'integrazione progressiva delle modifiche, offrendo una maggiore flessibilità e controllo sulla durata della vita dell'applicazione. Di seguito sono riportati alcuni dei vantaggi dell'utilizzo degli aggiornamenti di rotolamento per i cluster di Kubernetes:

  • Non ci sono tempi di inattività perché le istanze POD dell'applicazione sono sempre in esecuzione, anche durante un aggiornamento.
  • Consente agli sviluppatori di testare l'impatto delle modifiche in un ambiente di produzione senza interferire con l'esperienza dell'utente.
  • È una tecnica di distribuzione economica perché non richiede risorse aggiuntive assegnate al cluster.
  • Gli aggiornamenti complessi possono essere realizzati in modo efficace apportando semplici modifiche a un file di distribuzione, eliminando la necessità di migrazione manuale che richiede tempo dei file di configurazione.

Conclusione:

Questo post ha coperto le basi delle distribuzioni, come funzionano gli aggiornamenti di rotolamento e una varietà di scelte di configurazione per aggiornamenti di messa a punto e pianificazione dei pod. Dovresti ora essere in grado di stabilire e modificare le distribuzioni con fiducia per raggiungere lo stato corretto per la tua applicazione.