Skip to Content

Che cos'è un cluster Kubernetes?

I thread blu si incrociano e collegano vari nodi su uno sfondo scuro, assomigliando a un diagramma di rete.

Kubernetes ha rivoluzionato il modo in cui le organizzazioni gestiscono le applicazioni containerizzate fornendo un sistema solido per automatizzare deployment, scalabilità e operazioni. Al centro di Kubernetes c'è il concetto di cluster, essenziale per un'orchestrazione efficiente dei container. Comprendere i cluster Kubernetes è cruciale per qualsiasi organizzazione che desideri sfruttare al massimo le tecnologie dei container.

In questo articolo vedremo cos'è un cluster Kubernetes, i suoi componenti, come configurarne uno e le best practices per la gestione.

Che cos'è un cluster Kubernetes?

Un cluster Kubernetes è un gruppo di macchine (nodi) che lavorano insieme per eseguire e gestire le applicazioni containerizzate. Lo scopo principale di un cluster Kubernetes è automatizzare il deployment, il dimensionamento e la gestione delle applicazioni containerizzate. Ciò si traduce in diversi vantaggi chiave per gli utenti, come:

  • Scalabilità migliorata: I cluster Kubernetes offrono scalabilità elastica. Puoi scalare facilmente le applicazioni in alto o in basso aggiungendo o rimuovendo i nodi in base alle esigenze. Ad esempio, è possibile aggiungere altri nodi durante i periodi di picco del traffico per gestire l'aumento del carico. Al contrario, puoi scalare il cluster durante i periodi di bassa domanda per risparmiare risorse.
  • Tolleranza ai guasti migliorata: I cluster Kubernetes sono progettati per essere altamente disponibili. Ciò è possibile grazie alla replica, in cui le applicazioni critiche vengono eseguite su più pod su nodi diversi. Se un nodo si guasta, Kubernetes riavvia automaticamente i containers guasti e li ripianifica su nodi sani. In questo modo, anche in caso di guasto del nodo, l'applicazione rimane disponibile e operativa.
  • Gestione semplificata: I cluster Kubernetes semplificano la gestione delle applicazioni containerizzate. Invece di gestire manualmente le configurazioni su ogni singolo nodo, Kubernetes utilizza file di configurazione dichiarativi scritti in YAML. Questi file specificano lo stato desiderato dell'applicazione e Kubernetes si occupa di garantire il mantenimento dello stato.

Componenti di un cluster Kubernetes

Un cluster Kubernetes comprende due componenti principali: il piano di controllo e i nodi worker. Ciascuno di questi componenti svolge un ruolo specifico nella gestione del cluster e nell'esecuzione di applicazioni containerizzate.

Piano di controllo

Il piano di controllo funge da cervello del cluster Kubernetes, responsabile delle decisioni e dell'emissione di comandi ai nodi worker. È costituito da diversi componenti chiave, tra cui:

  • Server API: Il server API è l'hub di comunicazione centrale per il cluster. Espone l'API Kubernetes, che funge da punto di ingresso per tutte le attività amministrative e le interazioni con il cluster. API Utenti e strumenti come kubectl interagiscono con il cluster tramite il server API per inviare comandi, gestire le distribuzioni e accedere alle informazioni del cluster.
  • etcd : etcd è un archivio chiave-valore distribuito ad alta disponibilità che funge da singola fonte di verità per lo stato del cluster. Memorizza informazioni critiche sulla configurazione del cluster, tra cui le definizioni dei pod, i dettagli del servizio e lo stato desiderato delle distribuzioni. Questi dati vengono replicati su più nodi, ecc. per garantire coerenza e tolleranza ai guasti.
  • Pianificatore: Il pianificatore è responsabile dell'assegnazione dei workload (pod) ai nodi worker nel cluster. Considera fattori come la disponibilità delle risorse, la capacità dei nodi e le regole di antiaffinità dei pod quando prende decisioni di pianificazione. Ad esempio, il pianificatore potrebbe distribuire i pod su nodi diversi per migliorare l'utilizzo delle risorse o dare priorità ai pod con elevati requisiti di risorse su nodi con ampia capacità.
  • Controller manager: Il controller manager è il punto centrale per la gestione di tutti i controller nel cluster. I controller sono responsabili del monitoraggio continuo dello stato del cluster e dell'adozione di azioni correttive per garantire che lo stato effettivo del cluster corrisponda allo stato desiderato definito nella configurazione. Il controller manager gestisce diversi controller principali, ciascuno con uno scopo specifico.

Nodi dei lavoratori

I nodi worker sono i punti di forza del cluster. Sono le macchine che eseguono applicazioni containerizzate. Ogni nodo worker ha diversi componenti responsabili della gestione e dell'esecuzione dei containers:

  • Kubelet: Il kubelet è un agente che viene eseguito su ciascun nodo worker. Funge da rappresentante del piano di controllo sul nodo ed è responsabile del ciclo di vita dei pod assegnati al nodo. Kubelet garantisce che i containers all'interno di un pod siano scaricati, configurati ed eseguiti in base alle specifiche del pod. Inoltre, monitora lo stato dei containers, riavvia i containers guasti ed estrae i segreti richiesti dai containers per l'esecuzione sicura.

  • Kube-proxy: Kube-proxy è un proxy di rete che viene eseguito su ciascun nodo worker. Implementa policy di rete definite per il cluster e garantisce che i pod possano comunicare tra loro e con i servizi esterni. Kube-proxy mantiene le regole di instradamento della rete e traduce i nomi dei servizi in indirizzi IP dei pod, consentendo ai pod di rilevare e comunicare con i servizi all'interno del cluster.

Lavorando insieme, questi componenti all'interno del piano di controllo e dei nodi worker consentono a Kubernetes di gestire e orchestrare efficacemente le applicazioni containerizzate su vasta scala.

Configurazione di un cluster Kubernetes

Puoi configurare un cluster Kubernetes utilizzando due metodi principali: un servizio Kubernetes gestito o il suo deployment manuale.

Servizi Kubernetes gestiti

I provider cloud come Google Cloud Platform (GCP) con Google Kubernetes Engine (GKE), Amazon Web Services (AWS) con Elastic Kubernetes Service (EKS) e Microsoft Azure con Azure Kubernetes Service (AKS) offrono servizi Kubernetes gestiti. Questi servizi si occupano delle complessità di provisioning, configurazione e gestione dell'infrastruttura cluster Kubernetes. È sufficiente definire la configurazione cluster desiderata e il servizio gestisce il lavoro pesante, consentendo di concentrarsi sul deployment delle applicazioni containerizzate.

Distribuzione manuale

Per maggiore controllo e personalizzazione, puoi implementare manualmente un cluster Kubernetes utilizzando uno strumento come kubeadm. Kubeadm è un toolkit per l'avvio di un cluster Kubernetes. Questo metodo prevede l'installazione di kubeadm su un nodo master designato e dell'agente kubelet su tutti i nodi worker nel cluster. 

Configurazione manuale di un cluster Kubernetes

Prerequisiti

  • Infrastruttura: Assicurati di disporre di un'infrastruttura sufficiente, come macchine virtuali o istanze cloud.
  • runtime dei containers: Installa un runtime di container come containerd o Docker su tutti i nodi.

Passaggio 1: Installazione di kubeadm, kubelet e kubectl

Su tutte le macchine (nodi master e worker), utilizza il gestore dei pacchetti della tua distribuzione per installare gli strumenti kubeadm richiesti:

# Update package lists (replace 'your_package_manager' with your actual package manager like apt-get or yum)
 $ sudo your_package_manager update
 
 # Install kubeadm, kubelet, and kubectl
 $ sudo your_package_manager install -y kubeadm kubelet kubectl

Nota: In alcuni sistemi, potrebbe essere necessaria una configurazione aggiuntiva dopo l'installazione. Consulta la documentazione ufficiale di Kubernetes per i dettagli specifici del sistema operativo scelto.

Prova FlashArray

Scopri di persona come Pure Storage ha semplificato la gestione di blocchi e file in un ambiente self-service.

Provalo subito

Passaggio 2: Inizializzazione del piano di controllo (nodo master)

Scegli una delle macchine che funga da nodo master. Eseguire il comando seguente sul nodo master per inizializzare il piano di controllo. Questo processo genera file di configurazione e fornisce un comando di join per i nodi worker:

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • inizializzazione kubeadm: Questo comando inizializza il piano di controllo sul nodo master.
  • --pod-network-cidr=10.244.0.0/16: Questa opzione specifica l'intervallo CIDR per la rete del pod. È possibile regolare questo valore in base alle proprie esigenze di configurazione di rete.

Dopo aver eseguito il comando di inizializzazione, kubeadm fornirà un comando di join per i nodi worker. Prendi nota di questo comando perché ti servirà nel passaggio 5.

Passaggio 3: Configura kubectl

Nel nodo master, copiare il file di configurazione amministratore generato nella directory di configurazione kubectl locale. Ciò consente di gestire il cluster utilizzando i comandi kubectl. Il comando seguente consente di ottenere questo risultato:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Passaggio 4: Implementa una rete di pod

Un plug-in di rete del pod consente la comunicazione tra i pod all'interno del cluster. Flannel è un'opzione di rete di pod molto diffusa. È possibile implementare Flannel utilizzando il comando seguente sul nodo master:

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Passaggio 5: Unisciti ai nodi dei lavoratori nel cluster

Su ciascun nodo worker, eseguire il comando di join fornito da kubeadm durante il passaggio di inizializzazione sul nodo master (passaggio 2). Questo comando registra il nodo worker con il piano di controllo e lo prepara per l'esecuzione di workload containerizzati. Il comando di join in genere è il seguente:

$ sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • <master_ip_address>: sostituire con l'indirizzo IP del nodo master.
  • <token>: sostituiscilo con il token generato durante il processo di inizializzazione sul nodo master.
  • <hash>: sostituiscilo con l'hash del certificato CA del token di rilevamento fornito dall'output del comando kubeadm init.

Passaggio 6: Verifica dello stato del cluster

Una volta che tutti i nodi worker sono entrati nel cluster, verifica lo stato del cluster utilizzando i comandi kubectl:

$ kubectl get pods -n kube-system
Evergreen One

Riduci il rischio con Evergreen//One™

Il downtime non è un'opzione. Scegli Pure per soddisfare sempre le richieste di capacità.

Scopri Evergreen//One

Gestione di un cluster Kubernetes

Una gestione efficace di un cluster Kubernetes è fondamentale per mantenere performance e affidabilità. Ciò include la scalabilità, l'aggiornamento e l'aggiornamento dei nodi nel cluster.

Scalabilità del cluster

Kubernetes offre scalabilità orizzontale, consentendoti di regolare facilmente il numero di nodi worker in base alle tue esigenze di workload.

  1. Aggiunta di nodi (Scaling Up):
    1. Prepara il nuovo nodo: Assicurati che il nuovo nodo soddisfi i requisiti di sistema consigliati per la versione Kubernetes desiderata. Installa il software necessario, incluso un runtime di container come Docker o containerd, e l'agente kubelet. Consulta la documentazione ufficiale di Kubernetes per i passaggi dettagliati di installazione in base al sistema operativo
    2. Unisci il nodo al cluster: Usa il comando di join kubeadm sul nuovo nodo per unirti al cluster esistente. Per la configurazione iniziale del cluster sono necessarie le seguenti informazioni:
      • Indirizzo IP nodo master: L'indirizzo IP del nodo master.
      • Partecipa al token: Questo token è stato generato durante l'inizializzazione del piano di controllo e fornito nell'output.

Ecco un esempio di comando di join kubeadm:

Sudo kubeadm da $ si unisce a <master_ip_address>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

  • Sostituire <master_ip_address> con l'indirizzo IP effettivo del nodo master.
  • Sostituire <token> con il token generato durante l'inizializzazione del piano di controllo.
  • Sostituire <hash> con l'hash del certificato CA del token di rilevamento dall'output di inizializzazione del piano di controllo.

Rimozione dei nodi (scaling down):
Prima di rimuovere un nodo, è fondamentale scaricarlo. Il drenaggio garantisce che le applicazioni non subiscano downtime, eliminando i pod dal nodo e pianificandoli su nodi sani.

Scarica il nodo: Utilizzare il comando di scarico kubectl per scaricare il nodo che si desidera rimuovere. Questo comando consente di rimuovere i pod dal nodo e di continuare a eseguire DaemonSets (servizi di sistema critici).

$ kubectl drain <node-name> --ignore-daemonsets

Sostituire <node-name> con il nome host o l'indirizzo IP del nodo che si desidera rimuovere.

 

Elimina il nodo: Una volta scaricato, è possibile rimuovere il nodo dal cluster in modo sicuro utilizzando il comando kubectl delete node.

 

$ kubectl delete node <node-name>

Sostituire <node-name> con il nome host o l'indirizzo IP del nodo che si desidera rimuovere.

È inoltre possibile eseguire altre operazioni di gestione, come l'aggiornamento del piano di controllo, l'aggiornamento del nodo worker e gli aggiornamenti continui.

Mantenimento delle massime performance: Monitoraggio, registrazione e storage

Monitoraggio e registrazione efficaci sono cruciali per mantenere il cluster Kubernetes in buone condizioni. Strumenti come Prometheus e ELK Stack offrono informazioni approfondite sull'utilizzo delle risorse, sullo stato dei pod e sulle performance complessive, consentendo di identificare e risolvere in modo proattivo i problemi prima che influiscano sulle applicazioni. Kubernetes si integra anche con varie soluzioni di terze parti per garantire flessibilità.

Una gestione efficiente dei dati è fondamentale per le applicazioni stateful. Portworx ® di Pure Storage fornisce una potente soluzione container-native che si integra perfettamente con il cluster Kubernetes.

Portworx semplifica lo storage per i workload:

  • Volumi persistenti: Assicura che i dati persistano anche quando i pod vengono riavviati o ripianificati.
  • Protezione dei dati e disaster recovery: Offre snapshot e replica e riduce al minimo il downtime durante gli incidenti.
  • Semplificazione della gestione: Fornisce un'interfaccia intuitiva per il provisioning, il monitoraggio e la gestione delle risorse di storage.

Conclusione

I cluster Kubernetes sono fondamentali per l'orchestrazione dei container moderni, offrendo scalabilità, tolleranza ai guasti e gestione semplificata delle applicazioni migliorate. Comprendere i componenti, il processo di configurazione e le pratiche di gestione dei cluster Kubernetes è fondamentale per sfruttare appieno il loro potenziale. Portworx di Pure Storage si integra perfettamente con Kubernetes, fornendo solide funzionalità di storage che migliorano l'efficienza e l'affidabilità complessive dei workload containerizzati.

Potrebbe interessarti anche...

02/2025
Deploying Portworx on Google Distributed Cloud Anthos with vSphere
This Portworx reference architecture contains a validated architecture and design model to deploy Portworx on Anthos running on vSphere.
Reference architecture
28 pages

Scopri risorse chiave ed eventi

Storie dei clienti
AC Milan, innovazione dentro e fuori dal campo di gioco

L'AC Milan sta rivoluzionando il proprio ecosistema digitale grazie a Pure Storage.

Scopri di più
THOUGHT LEADERSHIP
La corsa per l'innovazione

Le più recenti informazioni approfondite e opinioni di leader di settore che sono all'avanguardia nell'innovazione dello storage.

Maggiori informazioni
REPORT DEGLI ANALISTI
Pianifica il tuo futuro cyber-resiliente

Scopri le strategie di collaborazione per sfruttare appieno gli investimenti in sicurezza informatica e garantire una risposta e un ripristino rapidi.

Leggi il report
RISORSA
Il futuro dello storage: nuovi principi per l'epoca dell'AI

Scopri come le sfide emergenti come l'IA stanno rivoluzionando le esigenze di archiviazione dati, necessitando di un nuovo pensiero e di un approccio moderno per ottenere successo.

Scarica l'eBook
CONTATTACI
Contatta PureIcona Informazioni
Icona Chat
Domande?

Hai domande o commenti sui prodotti o sulle certificazioni di Pure?  Siamo qui per aiutarti.

Icona Chiave
Prenota una demo

Prenota una demo per vedere come puoi trasformare i tuoi dati in risultati concreti con Pure. 

Telefono: +39 02 9475 9422

Media: pr@purestorage.com

 

Pure Storage Italia

Spaces c/o Bastioni di Porta Nuova, 21

Milano, 20121

+39 02 9475 9422

italia@purestorage.com

CHIUDI
ChiudiIcona X Chiudi
Il browser che stai usando non è più supportato.

I browser non aggiornati spesso comportano rischi per la sicurezza. Per offrirti la migliore esperienza possibile sul nostro sito, ti invitiamo ad aggiornare il browser alla versione più recente.