Kubernetes è un sistema open source per l'orchestrazione dei container che consente di gestire applicazioni containerizzate su un'infrastruttura distribuita. Attraverso i componenti che costituiscono il cluster, Kubernetes automatizza il deployment, la scalabilità e la gestione delle applicazioni, semplificando la gestione di ambienti complessi e distribuiti.
cluster
Un cluster Kubernetes è un insieme di nodi che lavorano insieme per eseguire e gestire applicazioni containerizzate.
È costituito da:
- uno o più componenti del control plane, che gestiscono lo stato e il funzionamento del cluster;
- uno o più worker node, sui quali vengono eseguiti i carichi di lavoro e i relativi container.
Il control plane coordina le attività del cluster, mentre i worker node mettono a disposizione le risorse necessarie per eseguire le applicazioni.
container
Un container è un'istanza eseguibile utilizzata per ospitare un'applicazione o un servizio. Kubernetes gestisce e orchestra i container all'interno del cluster, consentendo di eseguire più applicazioni in ambienti isolati sulla stessa infrastruttura.
Ogni container dispone del proprio file system e dei propri processi. I container vengono generalmente eseguiti all'interno di unità logiche chiamate pod.
control plane node
Il control plane node ospita i componenti responsabili della gestione e del controllo del cluster. Coordina le attività dei worker node e gestisce operazioni quali la schedulazione dei pod, l'allocazione delle risorse e il mantenimento dello stato desiderato del cluster.
Tra i principali componenti del control plane sono presenti:
- API Server;
- controller manager;
- scheduler;
- etcd.
Questi componenti collaborano per mantenere il cluster nello stato previsto e consentirne la gestione.
worker node
Il worker node è un nodo del cluster Kubernetes sul quale vengono eseguiti i carichi di lavoro e i container delle applicazioni.
Il worker node riceve le istruzioni dal control plane e mette a disposizione le proprie risorse, come CPU, memoria, storage e rete, per l'esecuzione delle applicazioni. Comunica con il control plane attraverso l'API Server e fornisce informazioni sullo stato delle risorse e dei workload in esecuzione.
Node Pool
Un Node Pool è un gruppo di worker node all'interno di un cluster Kubernetes con caratteristiche hardware e configurazioni omogenee, come CPU, memoria, storage e capacità di rete.
I Node Pool consentono di organizzare e dimensionare le risorse del cluster in base alle esigenze delle applicazioni. Se l'
autoscaling è configurato e attivo, il numero di nodi di un Node Pool può essere aumentato o ridotto automaticamente in base alle risorse richieste dai workload.
kubelet
Il kubelet è un agente eseguito su ogni worker node e rappresenta uno dei principali componenti del nodo.
Comunica con il control plane attraverso l'API Server e verifica che i container previsti per i pod assegnati al nodo siano correttamente in esecuzione. Il kubelet contribuisce inoltre alla gestione delle risorse del nodo e comunica al cluster le informazioni relative allo stato dei workload eseguiti.
kubectl
Kubectl è la CLI (
Command Line Interface) utilizzata per interagire con un cluster Kubernetes.
Consente di eseguire operazioni quali:
- creare, modificare ed eliminare risorse;
- gestire i pod e i servizi;
- scalare le applicazioni;
- consultare lo stato delle risorse;
- visualizzare eventi e log.
Kubectl comunica con il cluster attraverso l'API Server.
pod
Un pod è la più piccola unità distribuibile e gestibile da Kubernetes ed è composto da uno o più container eseguiti insieme sullo stesso nodo.
I container appartenenti allo stesso pod condividono lo stesso spazio di rete e lo stesso indirizzo IP e possono comunicare tra loro utilizzando localhost. Possono inoltre condividere volumi e altre risorse definite per il pod.
Kubernetes gestisce il ciclo di vita dei pod e, quando necessario, può sostituire un pod non più disponibile per mantenere lo stato desiderato dell'applicazione.
API Server
L'API Server è il componente del control plane che espone l'API Kubernetes e rappresenta il principale punto di accesso per la gestione del cluster.
Riceve e valida le richieste, gestisce i meccanismi di autenticazione e autorizzazione e consente ai componenti del cluster e agli strumenti esterni, come kubectl, di interagire con le risorse Kubernetes.
etcd
etcd è un archivio distribuito chiave-valore utilizzato da Kubernetes per memorizzare i dati relativi allo stato e alla configurazione del cluster.
I dati vengono replicati per garantire disponibilità e affidabilità e sono utilizzati dal control plane per mantenere lo stato del cluster.
scheduler
Lo scheduler è il componente del control plane responsabile dell'assegnazione dei pod ai worker node.
Per ogni pod da eseguire, valuta le risorse disponibili, i requisiti e i vincoli configurati e seleziona il nodo più adatto sul quale eseguirlo.
controller
Un controller è un componente software che monitora lo stato delle risorse del cluster e interviene per avvicinare lo stato corrente a quello desiderato.
Le principali funzioni dei controller in Kubernetes comprendono:
- monitoraggio dello stato - controllano lo stato del cluster e delle risorse attraverso l'API Server;
- riconciliazione - confrontano lo stato corrente delle risorse con quello desiderato e intervengono quando necessario;
- gestione degli eventi - reagiscono a eventi come la creazione, la modifica o la rimozione di risorse;
- gestione delle dipendenze - coordinano, quando previsto, le relazioni tra le risorse.
I controller sono componenti fondamentali del modello di gestione dichiarativo di Kubernetes.