Kubernetes è lo standard de-facto per l'orchestrazione dei container e la tecnologia più alla moda del momento. Tutti i manager, i consulenti IT e i colleghi più giovani lo vogliono. Ma perché? Quali sono le ragioni per cui le persone utilizzano questa tecnologia? È solo una moda? Se sì, quanto durerà questo hype? E cosa è meglio sapere ora se stai già utilizzando Kubernetes o hai intenzione di utilizzarlo in futuro. Se non conosci Kubernetes, leggi il nostro articolo "Cos'è Kubernetes?".

Per aiutarti a capire dove l'uso di Kubernetes ha senso e quali vantaggi apporta, condividerò tre esempi in cui ho visto Kubernetes in produzione:

  • Niente più problemi con la piattaforma IT: consente un roll-out standardizzato del software.
  • Auto-scaling: gestire in modo intelligente i picchi di carico senza far esplodere i costi
  • Passaggio al multi-cloud a basso costo di gestione

Distribuzione standardizzata del software per una multinazionale del settore automobilistico

L'azienda multimiliardaria in questione utilizza Kubernetes come piattaforma per il software di produzione in tutti i suoi stabilimenti. Le applicazioni interne per la gestione delle linee di produzione vengono sviluppate nel centro di ricerca e sviluppo mondiale, impacchettate in container e quindi inviate ai repository locali di container in ogni stabilimento di produzione, per poi essere distribuite tramite Kubernetes negli stabilimenti.

Kubernetes consente quindi all'azienda di distribuire facilmente il nuovo software. Poiché Kubernetes fornisce al team di sviluppo una piattaforma unificata per tutti gli stabilimenti, durante lo sviluppo non deve più considerare le idiosincrasie delle diverse architetture IT dei vari siti.

In passato, l'implementazione di nuove applicazioni rappresentava sempre un problema, perché le infrastrutture di calcolo, rete e storage dei singoli stabilimenti erano sempre diverse e anche gli strumenti di automazione non erano standardizzati. Di conseguenza, anche le più piccole differenze comportavano roll-out e patch individuali e più lavoro per il team di sviluppo.

Con Kubernetes che non solo fornisce un livello di astrazione per l'elaborazione, ma anche per la rete e lo storage, l'azienda ha guadagnato molta velocità ed efficienza nel roll-out del software negli stabilimenti. D'altro canto, non bisogna dimenticare l'elevato impegno richiesto per gestire Kubernetes. In definitiva, però, le dimensioni dell'azienda rendono conveniente l'uso di Kubernetes.

Scalare l'applicazione web di e-commerce (o la piattaforma di scommesse sulle corse dei cavalli) in base alla domanda degli utenti

Mentre il primo caso d'uso era nuovo per me, questo era quello di cui avevo letto da tempo. Il cliente utilizzava un'applicazione monolitica. Ma ogni volta che avveniva una vendita, l'applicazione web di e-commerce aveva problemi di prestazioni. Di conseguenza, l'azienda perdeva potenziali vendite perché il sito web smetteva di funzionare correttamente.

Per risolvere questo problema, l'azienda è passata a un'architettura a microservizi Kubernetes con l'obiettivo di beneficiare degli strumenti di scaling nativi di Kubernetes. Questi sono il ridimensionamento automatico dei nodi, in particolare l'aggiunta di pod worker quando il cluster non ha abbastanza potenza di calcolo o memoria. Un'altra funzione è il pod scaling automatico e orizzontale. Crea nuovi pod per l'applicazione front-end che serve il cliente quando l'utilizzo della CPU di tutti i pod di quell'applicazione raggiunge l'80%. In questo modo, durante i periodi di picco come il Black Friday, l'azienda può fornire contenuti a tutti gli utenti e almeno il reparto IT non è più responsabile delle vendite perse.

Inoltre, il team IT non deve più preoccuparsi di un traffico inaspettatamente elevato, come nel caso in cui una vendita avvenga a sua insaputa. Questo perché Kubernetes scala senza interazione umana. Finché il traffico rientra nella norma, cioè nella maggior parte dei casi, la piattaforma può essere gestita attraverso l'uso delle cosiddette istanze riservate. Per queste ultime, l'azienda si è impegnata con il proprio cloud provider per un periodo superiore a un anno. Tutti i picchi, invece, vengono gestiti con istanze on-demand, il che è molto efficiente dal punto di vista dei costi.

Ho sentito la stessa storia da una piattaforma di scommesse sulle corse dei cavalli: il problema era che il traffico era molto intenso durante i fine settimana e non c'era di notte. Per scalare, il provider doveva gestire un'altra macchina di grandi dimensioni, che richiedeva molto tempo per il ramp-up e il ramp-down e creava un forte sovraccarico.

Il passaggio a un'architettura a microservizi e a Kubernetes ha comportato un notevole risparmio sui costi dell'infrastruttura IT, anche se il costo dei consulenti necessari al provider per Kubernetes è aumentato enormemente.

La soluzione multi-cloud

All'epoca, quando lavoravo ancora come consulente di gestione, il cloud era ancora un argomento nuovo e scottante. La preoccupazione principale era spesso: come posso rimanere indipendente dai fornitori? La nostra risposta era di perseguire una strategia multi-cloud, anche se non avevamo idea di come implementarla.

Erano i tempi in cui anche Pivotal era in voga con la sua soluzione Cloud Foundry. Nel frattempo, siamo più saggi e sappiamo che la soluzione non è mai decollata davvero, poiché Pivotal è stata acquisita da VMware nel 2019 e poi incorporata in VMware Tanzu. In ogni caso, non c'è più molto da fare su Cloud Foundry Git. Infine, con VMware Tanzu, arriva sul mercato anche il figlio illegittimo di Kubernetes e vSphere - come se la complessità di uno dei due strumenti non fosse già abbastanza...

Kubernetes è la risposta a questa strategia multi-cloud indipendente dal fornitore. Con Kubernetes è possibile distribuire le applicazioni sulla propria infrastruttura e spostarle quasi senza soluzione di continuità su AWS, Azure o Google e viceversa. Naturalmente, il diavolo si nasconde nei dettagli e ci sono differenze nel funzionamento di Kubernetes su piattaforme diverse. È qui che entrano in gioco strumenti come Rancher o OpenShift, che rendono Kubernetes molto più facile da gestire.

A dire il vero, però, ho visto questo fenomeno solo in aziende molto grandi, dove la mitigazione del rischio è un argomento importante e i costi complessivi di Kubernetes e del multi-cloud rispetto alle soluzioni autocostruite per un ambiente multi-cloud, probabilmente sono ancora un affare.

Kubernetes offre anche diversi altri vantaggi che non sono unici per un caso d'uso particolare, ma che rendono la vita più semplice in generale. Tra questi, le capacità di auto-riparazione di Kubernetes.

Indipendentemente dal tipo di infrastruttura che hai, a un certo punto la tua infrastruttura informatica si guasterà o subirà un'interruzione. Sia che Kubernetes venga eseguito su bare metal, su macchine virtuali autogestite o da un provider cloud, nulla è al sicuro da un kernel panic, da un guasto hardware o semplicemente da una schermata blu della morte.

Quando un nodo diventa indisponibile, Kubernetes riavvia semplicemente i pod su un altro nodo sano. Ciò significa che le applicazioni sono di nuovo rapidamente disponibili senza che dobbiate muovere un dito. Almeno in teoria.

Kubernetes è ottimo, ma non è adatto a tutti

Come puoi vedere, Kubernetes ha alcuni casi d'uso eccezionali. Se riconosci tu stesso e la tua azienda in uno degli esempi presentati, dovresti provarlo. Tieni presente, tuttavia, che non è la soluzione a tutti i problemi, e questo è il punto in cui vedo molte aziende sbagliare.

L'aforisma "Se tutto ciò che hai come strumento è un martello, vedrai un chiodo in ogni problema" può essere facilmente applicato a Kubernetes (e al concetto strettamente correlato di microservizi) nel mondo IT moderno. Solo perché tutti ne parlano e raccomandano questa tecnologia, non significa che la si debba usare per tutto. Perché? Quando si prende una decisione del genere, bisogna sempre considerare le dimensioni della propria azienda e l'impegno richiesto da uno strumento complesso come Kubernetes.

Hai davvero bisogno dell'autoscaling?

Al momento di decidere se Kubernetes o meno, chiediti se la tua applicazione ha davvero bisogno di uno scaling automatico, ad esempio perché hai picchi di carico di lavoro enormi in brevi periodi. Oppure una macchina virtuale più grande è la soluzione più economica nel tuo caso? Si deve sempre tenere conto del fatto che un vero cluster Kubernetes richiede più nodi worker per la ridondanza. Se lo esegui in sede, avrai bisogno anche di più nodi del piano di controllo (idealmente 3).

È necessario reinventare una macchina ben oliata?

Gestisci da solo la tua infrastruttura IT e disponi di un'eccellente infrastruttura di virtualizzazione con un elevato livello di automazione? Allora probabilmente puoi implementare il software nella tua infrastruttura senza grossi problemi. Di conseguenza, non devi reinventare una macchina così perfettamente oliata.

La tua applicazione è già altamente disponibile?

Sei sicuro di aver davvero bisogno di una disponibilità del 99,999% della tua applicazione? Oppure la tua applicazione non soddisfa già i criteri per l'alta disponibilità?

Attenzione al divario (di conoscenza)

Ciò che la maggior parte delle aziende sembra dimenticare è il gap di conoscenza di Kubernetes. Se non hai competenze Kubernetes al tuo interno, non aspettarti di trovare esperti Kubernetes sul mercato in cerca di lavoro. Perché se lo fai, sei già in ritardo e probabilmente dovresti affidarti a consulenti Kubernetes esterni (che sono anch'essi una risorsa scarsa).

Il paradiso di Kubernetes invece dell'inferno

Sono molti i fatti da considerare, ma è qui che inizia il divertimento con Kubernetes. Supponiamo che tu abbia scelto Kubernetes nel tuo cammino verso un futuro brillante con i microservizi. Per essere sicuri di finire nel paradiso di Kubernetes e non all'inferno, ti consigliamo di dare un'occhiata approfondita all'argomento del monitoraggio di Kubernetes e ai problemi più comuni che si presentano in Kubernetes.