E4 Container Platform
Kubernetes Cluster ad alte prestazioni
I container consentono di utilizzare in modo efficiente l’infrastruttura sottostante e di sviluppare e distribuire le applicazioni più rapidamente, in una combinazione unica di vantaggi
Perché svolgere operazioni in modalità manuale con la certezza che qualcosa andrà storto?
Quando si tratta di eseguire applicazioni multi-container in un ambiente di produzione, la situazione si complica: centinaia o migliaia di container e diversi tipi di applicazioni. Kaptain, la E4 Container Platform con Cluster Kubernetes, è il direttore d’orchestra che serve alla tua infrastruttura
Perché Kaptain?
“Un capitano di mare è un marinaio con licenza di alto grado che detiene il comando e la responsabilità finali di una nave.
Il capitano è responsabile del funzionamento sicuro ed efficiente della nave e delle persone e del carico a bordo”
Wikipedia – Sea Captain
Tutti i container della tua struttura devono essere distribuiti, gestiti ed interconnessi con il mondo esterno. La complessità delle operazioni di deployment, scheduling e bilanciamento del carico cresce esponenzialmente.
Ecco perché c’è bisogno di una “infrastruttura” in grado di orchestrare i container, ecco la funzione principale di Kubernetes integrato in Kaptain.
VELOCE
Kaptain utilizza componenti chiave tipici delle infrastrutture HPC, come dischi all-flash, GPU e networking ad alte prestazioni. È una piattaforma in grado di accedere ad alta velocità a potenti risorse di storage distribuite, utilizzando efficientemente le GPU per i workload che le supportano.
INTUITIVO
Kaptain è dotato dei classici strumenti da terminale (kubectl) e di una potente interfaccia grafica che semplifica le operazioni più complesse grazie al deployment di Rancher Server in alta affidabilità. Dà accesso ad un ricco catalogo di applicazioni open-source, installabili con un semplice click del mouse.
INTEGRATO
La E4 Container Platform è progettata per essere facilmente integrabile con i tuoi servizi di data center e garantisce la possibilità di utilizzare sia sistemi di autenticazione pre-esistenti (AD, LDAP, openID) che risorse di storage di tipo NAS.
MODERNO
Kaptain è la piattaforma ideale per ospitare la Data Science del futuro: workload di Big Data Analytics e ML/DL distribuito e numerosi framework open-source, disponibili nel catalogo accessibile dalla GUI. La nostra expertise in ambito HPC è la sua garanzia.
Dall’introduzione di Docker® nel 2013, la tecnologia dei container si è rapidamente imposta come soluzione, grazie all’efficienza che garantisce e i vantaggi in termini di costi che offre. Il grande successo della containerizzazione ha portato alla rapida diffusione di nuove piattaforme per la gestione dei container, che garantiscono la riduzione delle complessità tipiche del ciclo di vita di applicazioni e sistemi multi-container. Oggi il progetto open source Kubernetes è senza dubbio lo standard de facto per la gestione dei container su larga scala.
Per comprendere la potenza di Kubernetes, è necessario richiamare alcuni concetti di base sui container. Dal sito web ufficiale di Docker “A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings… (..)…Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure”.
In pratica i container consentono di utilizzare in modo efficiente l’infrastruttura sottostante e di sviluppare e distribuire le applicazioni più rapidamente, una combinazione unica di vantaggi! Non c’è da meravigliarsi che le start-up, le PMI e le grandi imprese stiano adottando la tecnologia dei container a un ritmo esplosivo. A tal proposito ecco cosa ha scritto Gartner: “By 2022, more than 75% of global organizations will be running containerized applications in production, which is a significant increase from fewer than 30% today”.
Scopri i vantaggi
Cos’è Kubernetes?
Kubernetes, è un sistema di gestione dei container, originariamente sviluppato presso i laboratori di Google. Nel 2015, Google ha rilasciato Kubernetes in open-source, donando il codice sorgente alla Cloud Native Computing Foundation (CNCF), una organizzazione no-profit ed agnostica rispetto ai vendor, che gestisce lo sviluppo, la maintenance e l’evoluzione dei principali progetti in ambito container technology e riunisce i migliori sviluppatori, vendor ed utenti finali su scala globale. Ad oggi più di 80.000 sviluppatori diversi hanno collaborato allo sviluppo dei progetti gestiti dalla CNCF.
In breve, Kubernetes consente di rendere operativa la tecnologia dei container, automatizzando e semplificando il flusso di lavoro giornaliero legato ai container stessi. Innanzitutto, Kubernetes automatizza il deployment, lo scaling (la scalabilità) e la gestione di applicazioni containerizzate su un cluster di server (bare metal o virtuali). Kubernetes consente anche di gestire automaticamente e monitorare l’infrastruttura di base per i container (CPU, RAM, storage, rete, ..), centralizzare i log ed impostare alert a vari livelli.
I vantaggi e il valore di business di Kubernetes
Oggi il deployment di un singolo container su un notebook, su una workstation o su un server è piuttosto semplice, ma quando si tratta di eseguire applicazioni multi-container in un ambiente di produzione, la situazione si complica: si può finire con l’avere a che fare con centinaia o addirittura migliaia di container, nei casi in cui si utilizzino diverse applicazioni sviluppate seguendo i principi dell’architettura a micro-servizi. Tutti questi container devono essere distribuiti, gestiti ed interconnessi con il mondo esterno, e la complessità delle operazioni di deployment, scheduling e bilanciamento del carico cresce esponenzialmente. Immaginare di svolgere queste operazioni in modalità manuale significa dover allocare molte risorse umane a questo tipo di attività, con la certezza quasi matematica che prima o poi qualcosa andrà storto! È evidente quindi il motivo per cui c’è bisogno di una “infrastruttura” in grado di orchestrare i container, la funzione principale di Kubernetes.
Benefici e vantaggi della “containerizzazione”
- Riduzione dei costi: i container sono “pacchetti” isolati, che includono tutto ciò di cui ha bisogno l’applicazione da eseguire. Più container possono condividere lo stesso sistema operativo e la stessa connessione di rete. Questo approccio è molto più efficiente rispetto alla creazione di una macchina virtuale con il proprio sistema operativo per ogni applicazione. I container sono leggeri, mutuamente isolati, efficienti (accedono direttamente alle risorse HW) ed occupano meno risorse, consentendo di ottimizzare i costi (hardware e) di data center.
- Facilità d’uso e portabilità: L’isolamento che la tecnologia dei container offre consente di eseguire le applicazioni containerizzate allo stesso modo su ambienti molto diversi: dal laptop a qualsiasi cloud pubblico, su macchine virtuali o su bare metal. Lo stesso container può essere copiato in ambienti di sviluppo, test e di produzione e continuerà a funzionare allo stesso modo, semplificando notevolmente i processi di sviluppo e rilascio del software, con un conseguente time-to-market più rapido. Questo aspetto offre opportunità che, a prima vista, potrebbero non essere così evidenti: se l’obiettivo aziendale è il miglioramento delle relazioni con i clienti, la containerizzazione ti dà la possibilità, ad esempio, di rispondere rapidamente alle richieste dei clienti di correzioni di un bug o di introduzione di nuove funzionalità, cosa che, naturalmente, i tuoi clienti apprezzeranno.
- Scalabilità e modularità: i container possono essere resi operativi in tempi brevissimi; ciò consente di scalare istantaneamente un’applicazione containerizzata, ad esempio, per rispondere senza problemi ad una crescita imprevista del carico generato dalle richieste degli utenti. Inoltre, i container rendono molto semplice suddividere un’applicazione complessa in tanti singoli componenti interconnessi, ciascuno con la propria specifica funzione; in tal modo sarà possibile aggiornare e scalare i componenti in modo indipendente.
Benefici e vantaggi di Kubernetes
- Architettura matura e collaudata: Il design della versione attuale di Kubernetes si basa sulla notevole esperienza operativa condotta in oltre 10 anni di utilizzo per la delivery dei principali servizi di Google (gmail e youtube su tutti): gli ingegneri di Google che hanno contribuito a costruire e mantenere la più grande piattaforma di container al mondo!
- Eccezionale supporto di communità: l’ampia adozione e la costante crescita di popolarità di Kubernetes hanno favorito lo sviluppo di un’ampia comunità di utenti e sviluppatori attivi, così come il supporto dei principali leader del mercato ITC e dei provider di public cloud.
- Funzionalità avanzate: Kubernetes supporta un’ampia gamma di carichi di lavoro consentendo di ospitare con agilità sia workload stateless che statefull o che richiedono l’elaborazione di grandi moli di dati. La flessibilità di Kubernetes consente di supportare al meglio un’ampia gamma di casi d’uso e di ospitare le applicazioni più complesse.
- Portabilità: Kubernetes è al 100% open-source, può essere distribuito su qualsiasi infrastruttura e abilita il deployment ed il management di applicazioni containerizzate in uno o più ambienti cloud pubblici o privati, in macchine virtuali dedicate o in sistemi bare metal. Kubernetes evita il lock-in dell’infrastruttura e del provider cloud e rende possibile implementare una strategia e una configurazione hybrid-cloud e multi-cloud.
- Scalabilità: Kubernetes garantisce alta efficienza nell’uso delle risorse dell’infrastruttura ed offre scalabilità a diversi livelli:
- Scalabilità orizzontale: in una infrastruttura Kubernetes è possibile aggiungere o rimuovere facilmente nuovi server, per gestire al meglio le risorse computazionali e di storage disponibili ai carichi di lavoro
- Scalabilità automatica: in una infrastruttura Kubernetes è possibile modificare automaticamente il numero di container in esecuzione al servizio di un qualunque workload, in base all’utilizzo della CPU o ad altre metriche descritte nella fase di deployment dall’applicazione.
- Scalabilità di replica: il “Replica Controller” verifica che il cluster disponga di un numero specificato di pod (un gruppo di container) equivalenti in esecuzione. Se sono presenti troppi pod, il Replica Controller termina i pod non necessari, in caso contrario avvia i pod mancanti.
- Alta Affidabilità: Kubernetes può essere configurato su un’infrastruttura senza single point of failure ed è progettato per garantire alta disponibilità delle applicazioni che ospita, attraverso:
- Health check & Self Healing: Kubernetes è in grado di proteggere contro i guasti le applicazioni che ospita, controllando costantemente lo stato di salute dei nodi del cluster e dei container in esecuzione; inoltre Kubernetes offre funzionalità di self-healing and auto-replacement: se un container o un pod si blocca a causa di un errore, Kubernetes provvede automaticamente a ripristinarlo.
- Bilanciamento del carico: Kubernetes è dotato di servizi di bilanciamento incorporati che provvedono automaticamente alla distribuzione del carico tra più pod, consentendo di ri-bilanciare rapidamente le risorse per rispondere a picchi di traffico incidentale
- Designed for devops: uno dei principali vantaggi della tecnologia dei container è la sua capacità di accelerare il processo di sviluppo, test e rilascio del software. Kubernetes è progettato per il “continous deployment” ed offre diverse funzionalità utili allo scopo:
- Rollout e rollback automatici: effettuare il deployment della nuova versione di applicazioni è un processo semplice e sicuro: Kubernetes gestisce l’operazione garantendo all’utente l’assenza di tempi di inattività; grazie al monitoraggio costante dell’integrità di ogni container, Kubernetes è in grado di controllare lo stato della nuova versione durante l’aggiornamento e di “spegnere” la vecchia solo quando la nuova sia perfettamente funzionante. In caso di errore, l’infrastruttura provvede automaticamente al rollback.
- Canary Deployment: Kubernetes consente di testare un nuovo deplopyment in produzione in parallelo con la versione precedente, prima di mettere on line la nuova versione ed eliminare la vecchia
- Security: Kubernetes offre anche diverse funzionalità per mettere in sicurezza le applicazioni o i servizi che ospita, ad esempio assicurandosi che informazioni sensibili (come password o chiavi ssh), siano memorizzate in modo sicuro in “Kubernetes secrets”, al di fuori dei container running
Cosa distingue Kaptain dalla concorrenza?
Da un punto di vista di scelte architetturali Kaptain è disponibile in 3 distinti flavour: SS, LS e DS e 3 distinti tagli di risorse: Small, Medium e Large
Il flavour SS (Shared external Storage) si contraddistingue per un numero limitato di workers node ed in cui la componente storage viene fornita da device NFS esterni all’infrastruttura ma ad essa collegati. Il flavour SS poggia perciò su aree storage condivise.
Il flavour LS (Local software defined Storage) invece prevede che ognuno dei nodi worker abbia a bordo dischi dedicati all’erogazione di volumi ed il componente software Rook che ne consente la fruizione da parte dei container applicativi che girano sui medesimi nodi. Nel taglio LS abbiamo la presenza di uno storage software defined anche se non ancora distribuito.
Il flavour DS (Distributed software defined Storage) ospita a bordo di ognuno dei nodi anche Ceph, prodotto di software defined storage che consente di astrarre la componente disco resa disponibile da ogni worker e farla accedere dagli applicativi containerizzati.
Le funzionalità uniche di Kaptain
High Performance Platform: E4 significa “When Performance Matters” e questo motto è talmente interiorizzato dai nostri ingegneri, che, quando hanno progettato la E4 Container Platform, hanno lavorato avendo in mente i workload containerizzati più onerosi in termini di risorse. Ne è venuto fuori un disegno che utilizza componenti chiave tipici delle infrastrutture HPC, come dischi all-flash, GPU e networking ad alte prestazioni. Ne è venuta fuori una piattaforma in grado di accedere ad alta velocita a potenti risorse di storage distribuite ed in grado di utilizzare efficientemente le GPU per i workload che le supportano
Easy & powerful UI: La E4 container Platform, oltre ai classici strumenti da terminale (kubectl), prevede una potente interfaccia grafica accessibile da web, sia per l’utente che per l’amministratore; grazie al deployment di Rancher Server (versione 2.3.5, configurata in alta affidabilità) all’interno dell’infrastruttura, l’utente dispone di un’interfaccia che semplifica le operazioni più complesse e da accesso ad un ricco catalogo di applicazioni open-source, installabili con un semplice click del mouse.
Integrabilità: la E4 Container Platform è progettata per essere facilmente integrabile con i servizi di data center del cliente, garantendo la possibilità di utilizzare sia sistemi di autenticazione pre-esistenti (AD, LDAP, openID, ..), sia risorse di storage di tipo NAS.
Monitoring e Metering: La E4 Container Platform integra una infrastruttura per il monitoraggio ed il logging distribuito di tutti i sotto sistemi del cluster e dei workload da esso ospitati. I componenti che sono stati integrati per offrire queste funzionalità sono Grafana, Prometeous ed InfluxDB, tutti configurati in modo da utilizzare al massimo un piccolo sub-set delle risorse disponibili, così da non pregiudicare l’efficienza dei workload applicativi e di servizio distribuiti sulla piattaforma.
Storage Orchestration: la E4 Container platform può essere configurata per l’utilizzo in self provisioning di risorse di storage esterne (NFS) o per integrare sistemi di storage distribuito basati su Ceph o GlusterFS ad late prestazioni grazie all’utilizzo di tecnologie NVMe e interconnessioni a bassa latenza ed alta banda. Le risorse di storage integrate sono naturalmente scalabili orizzontalmente ed possono essere configurate in modo che gli utenti possano allocarle in modalità self-provisioning per i loro workload.
Data Science platform degli anni ’20: grazie al suo disegno derivato dalla expertise in ambito HPC, la E4 Container Platform è la piattaforma ideale per ospitare workload di Big Data Analytics e ML/DL distribuito; nel catalogo accessibile dalla GUI, sono disponibili diversi framework open-source dell’ecosistema Apache Hadoop/Spark, oltre alle soluzioni di 2° generazione nate per integrare al meglio l’analisi di Big Data con il Data Modeling da algoritmi di ML/DL. L’ambiente offre poi l’accesso ai principali sistemi di DBMS SQL (anche HA) e noSQL (anche distribuiti), ai più diffusi tool per la CI/CD, ai principali linguaggi e framework per lo sviluppo.
E4 CONTAINER PLATFORM