Come creare dei cluster Kubernetes: una guida per principianti
Kubernetes è un sistema popolare per la gestione dei container. Una delle entità più importanti dell’intero sistema Kubernetes è costituita dai “cluster”, i quali vengono utilizzati continuamente.
- 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. Su 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. I cluster Kubernetes sono quindi il livello più alto nella gerarchia Kubernetes.
Le possibili applicazioni dei 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 flessibili.
I cluster sono ottimi anche per l’utilizzo di microservizi poiché le applicazioni distribuite da questi ultimi possono comunicare tra loro tramite Kubernetes. Questo metodo di distribuzione garantisce un’elevata scalabilità di modo da poter sempre regolare l’utilizzo delle risorse nel miglior modo possibile.
I cluster possono essere utilizzati anche per eseguire lavori di Continuous Integration o Continuous Delivery.
Il servizio Managed Kubernetes di IONOS offre cluster Kubernetes perfettamente integrati nell’ecosistema IONOS.
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, il nodo master 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
- Scheduler
- Controller Manager
- etcd
Server API
Il server API è il front end del nodo master e coordina la comunicazione con il cluster Kubernetes. L’interfaccia viene utilizzata per definire lo stato del cluster. L’interazione con l’API Kubernetes è possibile sia tramite la riga di comando sia tramite l’interfaccia utente di Google Cloud Console.
Scheduler
Lo scheduler si occupa di distribuire i container in base alle risorse disponibili. Questo componente assicura che tutti i pod (gruppi di container) siano assegnati a un nodo e possano quindi essere eseguiti.
Controller Manager
Il Controller Manager viene utilizzato per coordinare i vari controller, i quali rappresentano fondamentalmente dei processi. Ciò garantisce che vengano intraprese azioni appropriate in caso di guasto ai singoli nodi. Più in generale, il Controller Manager si occupa di adattare lo stato attuale di un cluster allo stato desiderato in qualsiasi momento.
etcd
L’etcd è un componente del controller che memorizza tutti i dati importanti del cluster. Pertanto, può essere considerato come una memoria di backup per Kubernetes.
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
- Kube-Proxy
Kubelet
Kubelet è un componente dei nodi worker che assicura che ogni contenitore venga eseguito in un pod. A tal fine, interagisce con Docker Engine, un programma di creazione e gestione di container.
Kube-Proxy
L’uso di Kube-Proxy garantisce il rispetto delle regole di rete. Il componente è anche responsabile dell’inoltro delle connessioni.
Creare dei cluster Kubernetes
Un cluster Kubernetes può essere distribuito su macchine virtuali o fisiche. Per creare dei cluster propri esistono diverse opzioni.
Consultate il nostro tutorial su Kubernetes per scoprire in dettaglio come installare e lavorare con i cluster su Kubernetes.
Minikube
Per creare un semplice cluster con un nodo worker, è possibile usare Minikube, ovvero uno strumento per eseguire Kubernetes in locale sulla propria macchina. Può essere installato su tutti i principali sistemi operativi. Per verificare che l’installazione di Minikube sia avvenuta con successo, inserite il seguente comando nel terminale:
minikube version
Utilizzate la seguente istruzione per avviare Minikube:
minikube start
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 vostro server, utilizzate il seguente comando da terminale:
kubectl version
Potrete visualizzare i dettagli del vostro cluster tramite il seguente comando:
kubectl cluster-info
È inoltre possibile visualizzare direttamente nel terminale i singoli nodi su cui possono essere eseguite le applicazioni:
kubectl get nodes
Kind
Se desiderate creare un cluster Kubernetes con più di un nodo, potete 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
Per un cluster con più nodi worker, create 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, potete creare un cluster Kubernetes, in base alla configurazione scelta, con il seguente comando:
kind create cluster --config fileesempio.yaml