Skip to main content

Nel paradigma Cloud Native, Kubernetes si è imposto come lo standard de facto per l’orchestrazione su larga scala dei container. Scopriamo di cosa si tratta e perché questa tecnologia rappresenta il cuore pulsante delle nuove architetture applicative.

Cosa significa orchestrazione dei container

Per comprendere l’essenza, e soprattutto la centralità di Kubernetes nel panorama applicativo contemporaneo, si consideri che i pattern architetturali moderni si fondano sulla scomposizione del codice applicativo in microservizi, che a loro volta sono generalmente eseguiti all’interno di container per garantire isolamento, portabilità e consistenza tra diversi ambienti di esecuzione.

Le applicazioni enterprise contemporanee constano di molteplici container e microservizi, anche nell’ordine delle centinaia o migliaia. È quindi necessario un sistema di orchestrazione che ne automatizzi la gestione, il coordinamento e il monitoraggio, e che distribuisca correttamente i carichi di lavoro, ne garantisca la scalabilità e preservi l’affidabilità del sistema rispetto a molteplici criticità e inconvenienti, che potrebbero condizionare le funzionalità dell’applicazione. Questo è precisamente il ruolo dell’orchestrazione dei container operata da Kubernetes.

Come funziona Kubernetes

Molti esperti hanno definito Kubernetes (abbreviato in K8s) come il sistema operativo del cloud. A ben vedere, in effetti, il suo ruolo di orchestratore e coordinatore dei componenti funzionali delle app moderne non è dissimile da quello del tipico sistema operativo del PC, che funge da intermediario tra il software applicativo e l’hardware della macchina. Anche nel mondo di Kubernetes, infatti, la piattaforma si assicura che tutte le componenti gestite operino in armonia con le risorse infrastrutturali sottostanti e reagiscano in modo coerente ad eventi interni (es, il blocco di un container) ed esterni (picco di richieste) per mantenere uno stato desiderato definito a monte.

Sotto il profilo tecnico, infatti, una caratteristica portante di K8s è l’approccio dichiarativo: gli utenti definiscono lo stato desiderato del sistema attraverso file di configurazione (YAML), e Kubernetes si occupa di riconciliare lo stato attuale dell’infrastruttura applicativa con quello desiderato. Per esempio, nel caso di blocco di un POD (unità base che integra uno o più container) all’interno di un nodo K8s, il sistema ne attiva immediatamente un altro per preservare i requisiti di ridondanza e resilienza previsti a monte. Analogamente, se il traffico verso un certo servizio aumenta in modo esponenziale, come nel caso del carrello di un eCommerce durante il Black Friday, Kubernetes scala le risorse per preservare le prestazioni del sistema. Tutto questo, va sottolineato, avviene in modo automatico, garantendo così la continuità, la scalabilità e la resilienza delle applicazioni sottostanti.

Una tecnologia open source adottata in tutto il mondo

Kubernetes è una tecnologia open source sviluppata da Google per gestire e coordinare efficacemente i suoi servizi (come Gmail, Maps e Search, che generano miliardi di container); erede dei sistemi proprietari Borg e Omega, nel 2014 venne donata alla Cloud Native Computing Foundation per essere il suo primo progetto di spicco, e da allora è stata soggetta a un’evoluzione rapida e continua. La tecnologia rimane agnostica rispetto all’infrastruttura (non a caso è un pilastro del paradigma cloud ibrido) ed è supportata da tutti i grandi nomi dell’industria; questo lo rende un vero e proprio punto di riferimento nel paradigma cloud native, nonché un pilastro dell’application modernization.

BUSINESS CASE

Infrastruttura applicativa per una Banca con Kubernetes e GitSecOps

Un’architettura complessa, che richiede molte competenze

Spesso, quando si parla di Kubernetes, si insiste sull’automazione e sul suo evidente effetto di semplificazione nella gestione di app fondate su centinaia o migliaia di componenti funzionali.

I cosiddetti cluster Kubernetes, tuttavia, si basano su un’architettura tecnica estremamente complessa, fondata su diversi componenti e sottocomponenti che devono operare in modo sinergico per garantire il corretto funzionamento del sistema e dell’applicazione stessa. Tra questi, i due principali sono:

  • I nodi del Control Plane, che governano il cluster e comprendono molteplici componenti come gli API server, i database etcd, i controller e gli scheduler;
  • I Worker Node, o semplicemente Kubernetes Node, che agiscono come macchine operative ospitando e gestendo i container delle applicazioni distribuite, raggruppati in Pod. In contrapposizione al Control Plane, che coordina e orchestra le attività, i Worker Node si occupano dell’esecuzione effettiva dei workload e comprendono un software collegato al control plane (kubelet), un runtime dei container e un kube-proxy per il networking.

Perché valutare un servizio Kubernetes gestito

Kubernetes è open source, ovvero tutte le aziende lo possono utilizzare senza costi di licenza. Tuttavia, si è già fatto cenno alla complessità architetturale, cui bisogna aggiungere la necessità di applicare frequenti aggiornamenti e di gestire al meglio l’infrastruttura sottostante per garantire ottime prestazioni a quello che, a tutti gli effetti, è il cuore pulsante delle applicazioni moderne.

Per molte aziende, soprattutto per quelle che non dispongono di team dedicati e di competenze specialistiche, gestire un cluster Kubernetes da zero può essere un’impresa ardua e onerosa. Non a caso, i servizi K8s gestiti hanno particolare successo perché:

Riducono la complessità tecnica e massimizzano l'efficienza

Sollevano il team dalle attività di gestione del cluster, come il provisioning dell'infrastruttura, il monitoraggio, la sicurezza e il troubleshooting

Garantiscono all’azienda prestazioni infrastrutturali allineate ai requisiti dell’applicazione

Integrano funzionalità di sicurezza per proteggere i cluster da intrusioni, malware e altre minacce

Danno la certezza di continue attività di aggiornamento

Il servizio Kubernetes gestito è dunque un ottimo modo per cogliere l’opportunità del cloud native, delegando, almeno in parte, a un service provider la complessità tecnica del paradigma, così da concentrarsi esclusivamente sull’innovazione e sulla crescita del business.

QUIKUBE, il servizio gestito Kubernetes per garantire scalabilità, solidità e sicurezza ai tuoi applicativi.

Paolo Varalta

Autore Paolo Varalta

Amo l'automazione, il monitoraggio e la documentazione. In Intesys Networking mi occupo di definire e implementare i vari servizi gestiti offerti dall'azienda e di aiutare le aziende ad approcciare il Cloud e le tematiche di sicurezza.

Altri post di Paolo Varalta
CONTATTACI