Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

EKS: usare Kubernetes su AWS

Impariamo ad utilizzare EKS (Elastic Kubernetes Service) l'implementazione di Kubernetes di AWS (Amazon Web Services)
Impariamo ad utilizzare EKS (Elastic Kubernetes Service) l'implementazione di Kubernetes di AWS (Amazon Web Services)
Link copiato negli appunti

Amazon offre un'importantissima piattaforma Cloud che, stando alle statistiche, raccoglie la maggiore parte dell'utenza professionale: parliamo di AWS (Amazon Web Services). In questa lezione e la successiva, la vedremo al lavoro concentrandoci su EKS (Elastic Kubernetes Service) la sua implementazione di Kubernetes. Premettiamo subito due aspetti:

  • le novità che vedremo - nell'ambito del nostro processo di apprendimento - riguarderanno l'attivazione di un cluster in EKS ma tutto ciò che abbiamo imparato sinora su Kubernetes rimarrà valido e applicabile. Il lancio di un'applicazione tramite Deployment e la sua condivisione mediante Service verranno eseguite nello stesso modo, dovremo solo imparare a farle sul cluster appena creato;
  • anche se nelle precedenti lezioni abbiamo visto come utilizzare Kubernetes su Google Cloud, piattaforme Cloud differenti sono totalmente indipendenti l'una dall'altra quindi ci si potrà dedicare
    al provider che si preferisce portando con sé solo il proprio bagaglio culturale maturato su Kubernetes e container.

Iniziare con AWS

Iniziamo con alcuni concetti generali su AWS che torneranno sicuramente utili qualora non si fosse pratici di questa piattaforma. AWS offre decine e decine di servizi di ogni genere che molto spesso servono gli uni a costruire gli altri. Con EKS troveremo un'implementazione ottima di Kubernetes che si baserà su quanto questo provider offre in termini di macchine virtuali, container, storage, etc.

Per interagire con AWS si può passare, in primis, per la via più classica ovvero la AWS Management Console che, in maniera visuale, permette di accedere a qualsiasi servizio tramite pannelli dedicati. In alternativa, si può interagire tramite API o la CLI, la console interattiva, installabile nella propria macchina di lavoro, avviabile come container Docker o utilizzabile in formato web con CloudShell (accessibile nella AWS Management Console selezionando l'icona ">_").

Se non si disponesse di un account AWS si può iniziare con una prova gratuita, il cosiddetto Free Tier che offre risorse gratis per i nuovi clienti nei primi dodici mesi ma include anche porzioni di servizi utilizzabili gratis per sempre. Come si può immaginare, è fondamentale leggere bene le spiegazioni che la documentazione ufficiale offre in merito e ricordare sempre che qualsiasi piattaforma Cloud va studiata con attenzione senza lasciare niente all'improvvisazione. Il Cloud offre risorse a pagamento seguendo la logica del Pay-as-you-go (essenzialmente, paghi ciò che utilizzi) e per questo è fondamentale sapere attivare risorse ma anche dismetterle, conoscere bene i termini del Free Tier ma anche delle politiche di Pricing.

Una volta registrati accederemo alla console di gestione di AWS di cui vediamo, nella figura seguente, il pannello dedicato a EKS. Tramite il campo "Search", al centro in alto nell'interfaccia utente, si può trovare velocemente il servizio di nostro interesse:

Console di gestione delle risorse di AWS

Console di gestione delle risorse di AWS

Tipologie di cluster in EKS

Il lavoro su Kubernetes si svolge su cluster che, anche in questo ambito, sono costituiti da più nodi di cui uno svolge il ruolo di master e gli altri, i nodi worker, quello di elaboratori operativi. Sulle piattaforme Cloud esiste sempre un sistema di macchine virtuali (il servizio EC2 in AWS) che fa da supporto a chiunque abbia bisogno di risorse di elaborazione. Pertanto questi potranno offrire l'infrastruttura di base per il cluster.

Avere nodi configurati come vere e proprie macchine virtuali permette una maggiore configurabilità ma richiede più risorse dedicate e di conseguenza costi maggiori. Per ovviare a tutto ciò il mondo Cloud (non solo AWS) ha proposto il cosiddetto approccio serverless dove il server c'è ma "non si vede". In pratica, è un modo più fluido di richiedere risorse dove abbiamo una minore possibilità di gestirle (che in tal modo possono essere condivise tra più clienti) ma a costi inferiori.

In un contesto come quello di Kubernetes in cui un cluster dedicato e operativo può portare a costi importanti. Nel caso non si richieda la possibilità di configurare i nodi in modo dettagliato, si può ricorrere anche alla sua versione serverless ed è per questo che il nostro cluster potrà essere approntato come:

  • insieme di managed nodes. Versione per così dire tradizionale, dove verranno predisposte e a noi dedicate intere macchine virtuali. Risultato: maggiore configurabilità ma anche maggiori costi;
  • attivazione serverless su servizio Fargate. In cui non avremo vere e proprie macchine virtuali a disposizione bensì dei container come anime operative che saranno attivati all'occorrenza.

I comandi di riferimento

Il lavoro su EKS potrà essere trattato mediante Management Console o riga di comando. In questi tutorial, preferiamo seguire la seconda via in cui faremo uso del comando eksctl per la gestione del cluster e del ben noto kubectl per la gestione delle risorse Kubernetes. Tali comandi potranno essere utilizzati tramite la CloudShell di cui si è detto ovvero la CLI browser-based cui possiamo accedere dalla Management Console.

Prima del suo utilizzo in CloudShell però eksctl andrà installato seguendo le informazioni fornite nell'apposita guida. Essenzialmente, si tratterà di scaricare un pacchetto compresso con tutto il necessario all'interno ed avviarlo nel proprio ambiente di lavoro. Una volta seguite passo passo le indicazioni (che in buona parte consisteranno nel copiare ed incollare i comandi predisposti) si potrà verificare che il tool sia a nostra disposizione con:

$ eksctl version
0.162.0

Da questo momento in poi potremo iniziare ad operare con Kubernetes su AWS.

Ti consigliamo anche