Kubernetes, pro e contro. Il prezzo di un sistema complicato vale sempre i suoi benefici?

Quando si parla di Kubernetes tra neofiti, così come quando si parlava di OpenStack qualche anno fa (sembra un’era geologica, ma la prima release di OpenStack è del 2010), c’è sempre un misto di fascinazione e paura.

Cos’è questa cosa di cui tutti parlano? Mi serve? È utile? In particolare: la posso capire? Domande lecite e legittime, le cui risposte non sono poi così semplici da interpretare, quando le si trova.

Il problema è che all’atto pratico Kubernetes dovrebbe essere considerato, in maniera lucida, unicamente per quello che è: una tecnologia. Con pregi e difetti che andrebbero valutati sempre e solo sulla base delle proprie esigenze, non in base ai trend topic di Twitter.

Succede sempre così? Quasi mai.

Dovrebbe? Sempre.

Sono in tanti a porsi domande e tanti provano a dare risposte, c’è chi ad esempio boccia Kubernetes per la maggioranza dei casi, evidenzando aspetti negativi che ciascuno dovrebbe tenere in considerazione nel valutare questa tecnologia. Dalla necessità di macchine multiple, passando per le 580.000 linee di codice Go su cui è basato. Dalla complessità intrinseca (concettuale, architetturale, operazionale ed a livello di configurazione) a quella dei deploy, per concludere come in generale i microservizi siano una cattiva idea.

Tutto male quindi? Occorre lucidità.

Bollare l’intero progetto come non necessario solo perché questo richiede più macchine per essere erogato è un ragionamento piuttosto limitante. Certo, la gestione potrebbe rivelarsi complicata, ma per sfruttare quelli che sono i pregi del progetto (che l’autore comunque menziona) quali la scalabilità e la disponibilità dei servizi si fa presto a concludere come la coperta sia corta: è impossibile pretendere di scalare ed essere sempre disponibili senza avere un’architettura ampia. Ovviamente poi, questa va gestita.

Infine la questione complessità: nel capire la struttura, nell’organizzare i deploy, nello sviluppare in generale i microservizi (bollati dall’autore come inutili, per via del fatto che è complicato scriverne di efficienti e funzionali).

Come per tutti i progetti enormi come Kubernetes, prendere il toro per le corna cercando di sfruttarne tutte le funzionalità è davvero un approccio poco raccomandabile. È oggettivo come alcune dinamiche di funzionamento di k8s vadano comprese, assimilate e diluite in base al proprio know-how, in modo da non sentire il cuore accelerare di fronte a immagini come questa:

Approcciarsi cercando di capire cosa, rispetto a quanto è necessario erogare, possa beneficiare di un utilizzo all’interno di Kubernetes, magari affiancando inizialmente la soluzione a quelle esistenti ecco, potrebbe essere un’idea.

Per quanto complessa l’architettura nell’immagine qui sopra (che arriva dalla documentazione ufficiale del progetto) può sembrare, è di fatto è possibile partire a testare le cose con due sole macchine.

Il buon senso dunque: se l’esigenza è quella di avere 10 container che erogano un servizio al momento in funzione su una singola macchina, allora forse no, la complessità introdotta da k8s è troppa, viceversa se si ha necessità di scalare ed applicazioni che necessitano di tale approccio allora l’idea di avere uno strumento che in maniera automatizzata si occupi di aumentare (o diminuire) la potenza di fuoco basandosi su precise metriche potrebbe essere irrinunciabile.

A proposito di questo, noi di MMUL stiamo portando avanti un progetto aperto per creare un’installazione standard di Kubernetes mediante Ansible. Chi volesse partecipare è il benvenuto.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

4 risposte a “Kubernetes, pro e contro. Il prezzo di un sistema complicato vale sempre i suoi benefici?”

  1. Avatar Matteo Fracassetti
    Matteo Fracassetti

    L’articolo citato parte dall’assunto, sbagliato ma molto diffuso, che la parte di piattaforma debba essere progettata e mantenuta da sviluppatori di software: Non è il loro lavoro e servono competenze diverse quindi è normale che risulti tutto “complicato”…
    Nell’azienda dove lavoro abbiamo developer molto preparati ma moltissimi altri che non hanno idea di a che cosa serva la subnet o a cui viene il mal di testa ogni volta che si cita un certificato client o una certification authority.
    Uno strumento deve essere dimensionato sulla base dello scopo a cui deve assolvere: È ovvio che in un gruppo di 5 developer possa essere sensato alienare completamente la parte di piattaforma e appoggiarsi a un servizio cloud già pronto (anche se l’esempio che fa, della vm con 400 CPU, mi fa pensare ad un soggetto con la forma mentis per cui a codice scritto male si rimedia aggiungendo risorse invece che sistemando il problema).
    Se si ha bisogno di kubernetes probabilmente l’azienda ha (o dovrebbe avere) persone preparate per la gestione della piattaforma e non sviluppatori che la seguono “best effort”…

    1. Avatar Raoul Scarazzini
      Raoul Scarazzini

      Sante parole.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *