Cos'è un cluster Kubernetes?

Un cluster Kubernetes (K8s) è un gruppo di nodi di calcolo, o macchine di lavoro, che eseguono applicazioni containerizzate. La containerizzazione è un processo di runtime e implementazione del software che raggruppa il codice di un'applicazione con tutti i file e le librerie necessari per l'esecuzione su qualsiasi infrastruttura. Kubernetes è un software di orchestrazione di container open source con cui è possibile gestire, coordinare e pianificare i container su larga scala. Kubernetes colloca i container nei pod e li esegue sui nodi. Un cluster Kubernetes ha, come minimo, un nodo principale che esegue un pod di container e un piano di controllo che gestisce il cluster. Quando distribuisci Kubernetes, di fatto stai eseguendo un cluster Kubernetes.

Quali sono i fondamenti di Kubernetes?

Per comprendere un cluster Kubernetes, devi prima comprendere i fondamenti della containerizzazione con Kubernetes. 

Un container è una singola applicazione o microservizio impacchettato con le relative dipendenze, eseguibile come ambiente e applicazione autonomi in uno. Le applicazioni moderne hanno adottato un'architettura di microservizi distribuita in cui ogni applicazione include centinaia o addirittura migliaia di componenti software discreti che vengono eseguiti in modo indipendente. Ogni componente (o microservizio) svolge una singola funzione indipendente per migliorare la modularità del codice. Creando contenitori indipendenti per ogni servizio, le applicazioni possono essere distribuite e distribuite su più macchine. È possibile aumentare o ridurre i carichi di lavoro e le funzionalità di calcolo dei singoli microservizi per massimizzare l'efficienza delle applicazioni.

Kubernetes è un software open source per l'orchestrazione dei container che semplifica la gestione dei container su larga scala. Può pianificare, eseguire, avviare e chiudere i container e automatizzare le funzioni di gestione. Gli sviluppatori ottengono i vantaggi della containerizzazione su larga scala senza costi amministrativi.

Di seguito, descriveremo alcuni concetti fondamentali di Kubernetes.

Pod

Un pod è l'unità implementabile standard in Kubernetes. I pod contengono uno o più container e, all'interno del pod, i container condividono le stesse risorse di sistema, come spazio di archiviazione e rete. Ogni pod riceve un indirizzo IP univoco. 

I container all'interno di un pod non sono isolati. Pensa a un pod come a una macchina virtuale (VM), con i container simili alle applicazioni in esecuzione sulla VM. I pod e i gruppi di pod possono essere organizzati allegando ad essi etichette di attributi, ad esempio etichettando "dev" o "prod" per il tipo di ambiente. 

Nodo

Un nodo è una macchina che esegue i pod. Può essere un server fisico o virtuale, come un'istanza Amazon EC2. I componenti di un nodo includono:

  • Kubelet per la gestione di nodi e container
  • Kube-proxy per un proxy di rete
  • Runtime del container

È necessario installare un runtime per container compatibile sul nodo per eseguire i contenitori. Kubernetes supporta diversi runtime di container, come Kubernetes Container Runtime Interface e container. 

Set di repliche e implementazione

Un pod è un artefatto autonomo che non si riavvia automaticamente quando il suo nodo si interrompe. Se uno o più pod sono raggruppati in un set di repliche, in Kubernetes puoi designare set di repliche che saranno sempre in esecuzione tra i nodi. Questo è fondamentale per la scalabilità verso l'alto e verso il basso e per garantire la continuità di applicazioni e servizi. 

Una implementazione è l'oggetto di gestione di Kubernetes per la distribuzione di un'applicazione, nonché per l'aggiornamento o il rollback dell'app senza portarla offline.

Assistenza e ingresso

Usa un servizio Kubernetes per esporre un pod o un gruppo di pod sulla rete, tramite un endpoint, per un'interattività che segue le regole di comunicazione di rete standard. Per l'accesso pubblico al traffico Internet, un ingresso Kubernetes è collegato a un servizio, che quindi si collega a uno o più pod.

Quali sono i componenti del cluster Kubernetes?

Un cluster Kubernetes è un gruppo di uno o più nodi con pod in esecuzione. All'interno del cluster, il piano di controllo Kubernetes gestisce nodi e pod.

I componenti del piano di controllo includono:

  • Server API Kubernetes (kube-apiserver) che gestisce le comunicazioni all'interno e verso il cluster
  • Spazio di archiviazione (etcd) per registrare lo stato persistente del cluster
    Scheduler (kube-scheduler) per gestire il nodo e le successive risorse del pod Kubernetes 

Altri componenti includono un controller manager per il controllo dei nodi e dei processi (kube-controller-manager) e un cloud controller manager per l'integrazione con l'infrastruttura cloud pubblica specifica del provider (cloud-controller-manager).

Poiché i container non dispongono di un’archiviazione persistente, le applicazioni devono archiviare dati persistenti. I pod possono anche richiedere l'accesso ai dati condivisi. I volumi persistenti possono essere aggiunti a un cluster come archiviazione, referenziati all'interno del cluster in modo simile a un nodo.

In che modo gli sviluppatori lavorano con il cluster Kubernetes?

Gli sviluppatori devono prima scaricare e installare Kubernetes su un nodo master e sui relativi nodi worker. Possono quindi implementare il cluster su macchine fisiche o virtuali, localmente, in un data center o nel cloud.

Installazione

Per iniziare con facilità con le macchine virtuali Linux, sul nodo master scelto (macchina virtuale), installa prima:

  • Docker o qualsiasi altro software di containerizzazione.
  • Chiave del repository e repository di codice di Kubernetes.
  • Pacchetto kubeadm per il bootstrap del cluster.
  • Pacchetto kubelet per il coordinamento dei nodi.
  • Pacchetto kubectl per la riga di comando del cluster.

Esegui il processo su ciascuno degli altri nodi di lavoro designati.

Inizializzazione del cluster

Per inizializzare un cluster, esegui il comando kubeadm init sul nodo master. È necessario aggiungere un file di configurazione kube e distribuire una rete pod, in genere con un file YAML, prima che il cluster sia pronto per funzionare. Il comando kubeadm init emette un comando join, che può essere copiato e incollato nelle righe di comando degli altri nodi di lavoro della macchina virtuale. Ciò consente a ciascun nodo di lavoro di entrare a far parte del cluster. 

Utilizzo di Kubernetes

Con il pannello di controllo dell'interfaccia utente di Kubernetes, i deployer possono creare e distribuire applicazioni sul cluster. Per un pannello di controllo dell'interfaccia utente di Kubernetes, esegui il comando kubectl proxy sulla macchina master. L'interfaccia utente sarà quindi disponibile all'indirizzo http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.

Cos'è la gestione dei cluster Kubernetes?

La gestione dei cluster Kubernetes è il termine per la gestione di più cluster Kubernetes su larga scala. Ad esempio, si consideri un ambiente di sviluppo: il team può richiedere cluster di test, sviluppo e produzione che vengono eseguiti ciascuno su più macchine fisiche e virtuali distribuite in loco e basate sul cloud.

Per gestire insieme più tipi diversi di cluster, devi essere in grado di eseguire operazioni di cluster come creazione e distruzione, aggiornamenti in situ, manutenzione, riconfigurazione, sicurezza, segnalazione dei dati del cluster e così via. La gestione multi-cluster può essere ottenuta attraverso una combinazione di servizi Kubernetes, strumenti specializzati, configurazioni e best practice.

In che modo AWS può aiutarti a soddisfare i requisiti del tuo cluster Kubernetes?

AWS fornisce servizi cloud per configurare, eseguire e gestire i tuoi cluster Kubernetes: 

  • Amazon Elastic Compute Cloud (EC2) ti aiuta a effettuare il provisioning ed eseguire Kubernetes sui tipi di istanza che preferisci.
  • Amazon Elastic Kubernetes Service (EKS) ti aiuta ad avviare, eseguire e scalare Kubernetes, senza dover fornire o gestire istanze master con un piano di controllo e così via. EKS è dotato di strumenti di gestione dei cluster e utili integrazioni con i servizi di rete e sicurezza AWS.

Inizia a usare i cluster Kubernetes su AWS creando un account gratuito oggi stesso.

Fasi successive su AWS

Registrati per creare un account gratuito

Ottieni accesso istantaneo al Piano gratuito di AWS.

Registrati 
Inizia a lavorare nella console

Inizia subito a creare nella Console di gestione AWS.

Accedi