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

4

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 Raoul Scarazzini
    Raoul Scarazzini

    @lo_zio_sam:disqus sull’articolo linkato confermo come sia stato scelto proprio per raccontare il contrario, in particolare proprio sul discorso della scelta: come ho scritto avere lucidità in questo senso è essenziale e bollare tutto con un “non serve perché è complicato” è molto miope.
    Sul discorso ruolo Ansible è meramente una questione di semplicità: Kubespray è un “universo mondo” veramente molto ampio, nel nostro caso avevamo bisogno di qualcosa di molto più elementare che ci consentisse di avere il controllo totale, di limitare al massimo il codice da mantenere (e per il quale seguire sviluppi e aggiornamenti) e che implementasse quanto ci serve senza necessariamente coprire la totalità delle opzioni disponibili (vedi il supporto a tutte le piattaforme cloud che ha Kubespray o tutte le distribuzioni).

  2. Avatar Raoul Scarazzini
    Raoul Scarazzini

    Assolutamente, sei il benvenuto. Come si può vedere dal codice è tutto molto semplice, al momento non è nemmeno multi master, però scala sugli worker in maniera automatica: puoi partire con due e man mano aggiungi semplicemente aggiungendo gli host all’inventario.
    Entro questa settimana dovrei concludere la parte di integrazione con Ceph (mediante CSI) e NFS (nativa). Di nuovo: è quanto al momento ci serve, spazio per miglioramenti (soprattutto nell’ambito dell’HA del control plane) ce n’è tantissimo.

  3. 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”…

  4. Avatar Raoul Scarazzini
    Raoul Scarazzini

    Sante parole.

Lascia un commento

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