Un cluster Kubernetes è un insieme di almeno un nodo di controllo (master) e diversi nodi di lavoro (nodes) sui quali vengono eseguite applicazioni containerizzate. Il cluster gestisce automaticamente la distribuzione, la scalabilità e la tolleranza ai guasti dei container. Questa struttura consente di eseguire applicazioni in modo affidabile ed efficiente in ambienti distribuiti.

Managed Kubernetes
Orchestrazione sicura dei carichi di lavoro dei container
  • Configurazione automatica dei cluster Kubernetes
  • Archiviazione persistente completamente integrata
  • Assistenza clienti 24/7

Cos’è un cluster Kubernetes?

I cluster sono generalmente un gruppo di computer che appaiono autonomi dall’esterno. Nel caso di Kubernetes, invece dei computer fisici, per formare dei cluster vengono combinati diversi nodi. Questi sono macchine virtuali o fisiche.

Le singole applicazioni vengono eseguite nei cluster Kubernetes, che sono quindi il livello più alto nella gerarchia Kubernetes.

Quali casi d’uso ci sono per i cluster Kubernetes?

I cluster sono una parte importante dell’utilizzo di Kubernetes. Questi consentono di distribuire le applicazioni senza legarle alle macchine. Il loro scopo principale è quindi quello di astrarre i container ed eseguirli su più macchine. Allo stesso tempo, i cluster Kubernetes non sono legati a un sistema operativo specifico e sono quindi molto portabili.

Tra i tipici ambiti di applicazione ci sono:

  • Distribuzione di applicazioni complete: queste sono trasversali ai container e indipendenti dall’hardware sottostante. Si possono quindi distribuire rapidamente aggiornamenti o nuove funzioni senza modifiche ai singoli server, garantendo l’esecuzione coerente delle applicazioni in ogni ambiente.
  • Funzionamento in architetture a microservizi: in questo caso le applicazioni possono comunicare tra loro e rimanere altamente scalabili. I singoli microservizi possono essere sviluppati, aggiornati e scalati indipendentemente, aumentando notevolmente l’agilità e la resilienza complessiva dell’applicazione.
  • Continuous Integration (CI)/Continuous Delivery (CD): i lavori di Continuous Integration o di Continuous Delivery consentono l’automazione dei processi di build, test e deployment. In questo modo, i cicli di sviluppo si accorciano, le fonti di errore manuale si riducono e le nuove funzionalità o patch raggiungono più rapidamente l’ambiente di produzione.

Da cosa è costituito un cluster Kubernetes?

Un cluster Kubernetes è costituito da un’unità di controllo, detta anche nodo master, e da uno o più nodi worker.

Nodo master

Il nodo master è la base dell’intero cluster ed è responsabile dell’amministrazione dello stesso. Conseguentemente, questo nodo si occupa dello stato del cluster, ad esempio determinando quale applicazione viene eseguita e quando. L’unità di controllo, a sua volta, è suddivisa in vari componenti:

  • Server API: il server API è il front end del nodo master e coordina la comunicazione con il cluster Kubernetes. Attraverso l’interfaccia, ad esempio, si definisce lo stato del cluster. È possibile interagire con l’API Kubernetes sia tramite la riga di comando sia tramite l’interfaccia grafica nella Google Cloud Console.
  • Scheduler: lo scheduler si occupa della distribuzione dei container in base alle risorse disponibili. Garantisce che tutti i pod Kubernetes (gruppi di container) siano assegnati a un nodo e possano quindi essere eseguiti.
  • Controller Manager: con il Controller Manager vengono coordinati i vari controller, che in sostanza non sono altro che processi. Ciò garantisce, tra l’altro, che si reagisca adeguatamente in caso di guasti di singoli nodi. Più in generale, il Controller Manager si occupa di adeguare lo stato attuale di un cluster allo stato desiderato in ogni momento.
  • etcd: etcd è un componente dell’unità di controllo che memorizza tutti i dati importanti del cluster. Pertanto, può essere considerato un archivio di backup per Kubernetes, organizzato come un Key Value Store.

Nodo worker

Ogni cluster ha almeno un nodo worker, nella maggior parte dei casi anche diversi. Questi eseguono i compiti e le applicazioni assegnati loro dall’unità di controllo e comprendono due componenti:

  • Kubelet: Kubelet è un componente dei nodi worker che garantisce che ogni container in un pod venga eseguito. A tal fine, Kubelet interagisce con il motore dei container utilizzato, un programma per la creazione e la gestione dei container.
  • Kube proxy: con Kube proxy si garantisce che le regole di rete vengano rispettate. Inoltre, questo componente è responsabile dell’instradamento delle connessioni.

Come si crea un cluster Kubernetes?

Un cluster Kubernetes può essere distribuito su macchine virtuali o fisiche. Per creare dei cluster propri esistono diverse opzioni.

Impostare un cluster Kubernetes con Minikube

Per creare un semplice cluster con un nodo worker, è possibile usare Minikube, ovvero uno strumento per eseguire Kubernetes in locale sulla propria macchina. È possibile installarlo su tutti i principali sistemi operativi e viene descritto esaurientemente da molti tutorial di Kubernetes. Per verificare se l’installazione sia avvenuta con successo, inserisci il seguente comando nel terminale:

minikube version
bash

Utilizza la seguente istruzione per avviare Minikube:

minikube start
bash

Dopo aver eseguito questo comando, Minikube avvia una macchina virtuale sulla quale verrà automaticamente eseguito un cluster. È quindi possibile interagire con Kubernetes utilizzando la riga di comando. Per sapere se quest’ultima è già installata sul tuo server, usa il seguente comando da terminale:

kubectl version
bash

Potrai visualizzare i dettagli del tuo cluster tramite il seguente comando:

kubectl cluster-info
bash

È inoltre possibile visualizzare direttamente nel terminale i singoli nodi su cui possono essere eseguite le applicazioni:

kubectl get nodes
bash

Creare un cluster Kubernetes con kind

Se desideri creare un cluster Kubernetes con più di un nodo, puoi utilizzare lo strumento kind, disponibile per tutti i principali sistemi operativi. Il modo più semplice per installarlo è tramite il gestore di pacchetti. Negli esempi qui riportati, viene utilizzato choco per Windows:

choco install kind
bash

Per un cluster con più nodi worker, crea ora un file YAML di configurazione in una qualsiasi directory. In questo file si definisce la struttura del cluster. Ad esempio, un file di configurazione per un cluster Kubernetes con un nodo master e due nodi worker potrebbe essere simile a quanto segue:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

Successivamente, puoi creare un cluster Kubernetes, in base alla configurazione scelta, con il seguente comando:

kind create cluster --config fileesempio.yaml
Hai trovato questo articolo utile?
Vai al menu principale