MicroK8s: la soluzione Kubernetes zero-ops di Canonical

1

Kubernetes è diventato lo strumento che le aziende devono avere a “portafoglio” per essere sulla cresta dell’onda e la sua continua evoluzione lo dimostra nel processo di installazione e manutenzione che, oramai, è praticamente senza quasi frizione.

Basta dare un’occhiata alla documentazione ufficiale: si installa un runtime per container (tipicamente Docker o CRI-O), un paio di configurazioni nei parametri del Kernel, qualche pacchetto e si è pronti a lanciare il comando per inizializzare il cluster. Sui nodi aggiuntivi, stessa procedura con la differenza di un comando (per il join al cluster) da lanciare alla fine.

Certo, ci vuole qualche accortezza a livello di configurazione, soprattutto se si sta installando per un ambiente di produzione, ma di fatto la procedura basica di installazione è quella.

Per Canonical, tutto questo, è evidentemente troppo!

Con questa idea è nato MicroK8s, una soluzione pensata dall’azienda produttrice di Ubuntu Linux per portare Kubernetes “nelle case di tutti”, semplificando ulteriormente quella che è la procedura di installazione. Si lancia un comando e Kubernetes è pronto. Sui nodi aggiuntivi stessa cosa.

La procedura è così semplice come l’abbiamo descritta, ma, ovviamente, tutta questa semplicità va a scapito di qualcosa, come l’impossibilità di personalizzare l’installazione per le proprie esigenze. Ad esempio, nonostante Kubernetes supporti decine di soluzioni per il suo networking interno, MicroK8s usa Calico, punto. Oppure non si può optare per l’oramai più che ufficiale etcd come backend per le configurazioni del cluster, essendo costretti all’uso di Dqlite (altro prodotto di Canonical) che altro non è che un SQLite distribuito.

Per il resto, se vogliamo ignorare che il tutto si installa tramite il tanto odiato/amato sistema Snap e che l’installazione di Kubernetes verrà eseguita in un container (soluzione avvallata da Christopher Nolan durante la stesura di Inception), sembra davvero fare quel che promette: installazione in pochi passaggi e senza bisogno di realmente dare indicazioni al sistema, aggiornamento “in un click” e configurazione automatica del sistema in alta affidabilità nel momento in cui si aggiunge un terzo nodo al tutto.

Come nota a margine, se già masticate di Kubernetes, va fatto notare che l’alta affidabilità è garantita perché la componente API Server di Kubernetes (ovvero, quella che può ricevere i comandi di configurazione del cluster e del suo contenuti) viene fatta girare su tutti i nodi installati. Quanto inadatto questo potrebbe essere ad un ambiente di produzione, se non parecchio blindato, giudicatelo voi.

Altre note di merito sono la possibilità di attivare una serie di servizi a livello di cluster (ad esempio la dashboard o un registry per le immagini interno) in maniera molto semplice con un singolo comando, che la soluzione viene fornita anche per sistemi ARM su Raspberry Pi, Windows e Linux, che grazie a CUDA vengono rese disponibili le GPU Nvidia in automatico (per sistemi di AI e Deep-Learning) e che Prometheus è già integrato per avere metriche dettagliate.

Altra nota da tenere presente è che Canonical offre supporto 24/7 con 10 anni di supporto di MicroK8s (da notare, limitatamente a quel prodotto, Dqlite ed altre funzionalità non son coperte dallo stesso).

Non rimane che rimandarvi alla pagina ufficiale del progetto e farvi decidere se provarlo o meno. Ne vale la pena secondo voi?

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.