Per iniziare a lavorare con Kubernetes abbiamo bisogno di due cose:
- un cluster Kubernetes;
- il client kubectl.
La preoccupazione principale che potremmo avere è quella relativa al primo punto ovvero la predisposizione di un cluster. Come vedremo però si può ottenere – per scopi sperimentali e di studio – in maniera molto facile, veloce e soprattutto economica.
Kubernetes è specializzato nella gestione di applicazioni distribuite e scalabili basate su moduli applicativi realizzati con la tecnologia a container su cui abbiamo fatto un rapido ripasso nella lezione precedente. Le architetture Kubernetes vengono implementate su cluster di nodi che dovrebbero corrispondere a macchine fisiche o virtuali che siano.
Diciamo subito che l'utilizzo del concetto di nodo è molto importante in quanto risulta un'astrazione della macchina in sé rappresentando quindi un'unità funzionale del cluster svincolata dalle caratteristiche tecnologiche del dispositivo che, come abbiamo già detto, potrebbe non esistere fisicamente in quanto frutto di virtualizzazione.
Come ottenere un cluster Kubernetes
Kubernetes è uno strumento versatile che può trovare applicazione in molti contesti ma non nascondiamo che il mondo in cui ha ormai dilagato e che è in grado di sprigionare tutte le sue potenzialità è il Cloud. Creare un cluster Kubernetes, come accennato nella lezione precedente, può essere fatto con tutte le principali piattaforme Cloud tra cui:
Tali soluzioni offrono un impiego "reale" di Kubernetes pur richiedendo delle iscrizioni alle relative piattaforme ed eventualmente la registrazione di un mezzo di pagamento come account di fatturazione. Questi saranno i veri scenari con cui prima o poi, al giorno d'oggi, ci si confronterà per diventare ottimi amministratori di applicazioni Kubernetes ma quello che ci interessa al momento è trovare un modo immediato, facile ed economico per iniziare a sperimentare Kubernetes. Tutto ciò esiste e risponde al nome di minikube.
Lavorare con minikube
Ciò che minikube offre è un cluster locale, installabile su ogni sistema operativo che permette di sviluppare applicazioni Kubernetes senza dover approntare un reale cluster né accedere a servizi in Cloud. Noi ci risparmieremo anche di installare minikube (sebbene sia piuttosto semplice grazie alle istruzioni disponibili sul sito ufficiale per ogni sistema operativo e piattaforma) in quanto lo utilizzeremo in un sistema on-line, gratuito e disponibile per chiunque abbia un account di posta elettronica Gmail: Cloud Shell.
Ambiente di sperimentazione pronto all'uso in Cloud Shell
Cloud Shell è un ambiente runtime, già allestito con moltissimi strumenti, offerto dalla Google Cloud Platform (GCP), il Cloud di Google. Per accedervi è sufficiente recarsi nel pannello della GCP, la loro console. Si verrà accolti (se non ancora loggati nel browser) dal classico form di autenticazione Google in cui potremo inserire le nostre password Gmail.
Fatto ciò, ci troveremo dinanzi il pannello della Google Cloud Platform, a noi però interesserà cliccare un'icona posta nella barra in alto a destra che nell’immagine seguente abbiamo cerchiato in rosso:
Dopo pochi secondi di provisioning, verremo accolti in un ambiente da riga di comando che è una macchina virtuale Linux in cui sono già a disposizione e installati moltissimi strumenti di lavoro (git, Python, Node.js, il linguaggio Go, etc.) e soprattutto alcuni che oggi abbiamo particolarmente a cuore: Docker, minikube ed il client kubectl.
Questo significa che qui abbiamo, già pronto e gratuito, tutto ciò che ci permette di studiare e sperimentare Kubernetes: potremo così apprendere ogni cosa che ci interessa sui concetti alla base di questa piattaforma e sulle sue API. Il tempo del Cloud e dei veri cluster arriverà più avanti sebbene non ci nascondiamo che minikube può essere utile per tantissimi approfondimenti ma, per chi porterà avanti i propri studi anche al di là di questa guida, determinate applicazioni richiederanno una vera installazione Kubernetes.
Primo approccio a minikube
Una volta entrati nella Cloud Shell (o installato minikube sulla propria macchina, a seconda delle preferenze) possiamo avviare il nostro primo cluster con:
minikube start
Dopo alcuni secondi di preparazione il nostro cluster minikube sarà in esecuzione e potremo averne conferma sfruttando, sin da ora, il client kubectl anch'esso già disponibile in Cloud Shell. Il comando seguente:
kubectl get po -A
ci offrirà una panoramica sugli elementi che avremo al momento in esecuzione. Nel nostro caso apparirà questo:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-hvwjx 1/1 Running 0 4m19s
kube-system etcd-minikube 1/1 Running 0 4m30s
kube-system kube-apiserver-minikube 1/1 Running 0 4m30s
kube-system kube-controller-manager-minikube 1/1 Running 0 4m30s
kube-system kube-proxy-v4vrb 1/1 Running 0 4m19s
kube-system kube-scheduler-minikube 1/1 Running 0 4m30s
kube-system storage-provisioner 1/1 Running 1 (3m48s ago) 4m27s
Se tutto ciò si sarà verificato, significa che saremo pronti per studiare Kubernetes (mediante minikube) cosa che inizieremo a fare nelle prossime lezioni. Al momento, quello che ci interessa è imparare ad arrestare il cluster che abbiamo appena avviato. Sarà possibile farlo con:
minikube stop
che metterà a riposo le risorse prima attivate.