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.

Managed Kubernetes di IONOS

Il modo semplice per gestire i carichi di lavoro dei container. Configurazione completamente automatizzata dei cluster Kubernetes, massima trasparenza e controllo dei cluster K8.

Memoria persistente
Assistenza 24/7 per K8
Configurazione automatizzata dei cluster

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.

Consiglio

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.

Consiglio

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