Guida Rubrica KUBE 3: Configurazione di un ambiente Kubernetes

Kode

Utente Emerald
10 Dicembre 2013
1,226
81
371
623
kube_1.jpg


All'interno di questo capitolo dedicato alla rubrica su Kubernetes, andiamo a sporcarci un pò le mani andando a settare l'ambiente di sviluppo. Nella guida consigliamo vivamente di installare un sistema operativo secondario basato su una qualsiasi versione di Ubuntu che sia a 64 bit. Tale guida supporta anche le versioni a 32 bit ma, non avendole testate personalmente, non posso darvi l'assicurazione che le procedure descritte funzionino senza intoppi.

Nota: Usando Kubernetes per lavoro, io ho eseguito tutte le procedure tramite MacOS, l'unica variazione che si ha è che nell'installazione di curl al posto di apt si usa brew
III. Capitoli
1.
Introduzione a Kubernetes: cos'è, infrastruttura su cui si basa, vantaggi, caratteristiche e nomenclatura.
2. Architettura di Kubernetes: Architettura Cluster, Container, Pods, Admin Cluster, Storage e Scheduling.
3. Configurazione di un ambiente Kubernetes: Set up, configurazione dei container, dei pods ed esecuzione di applicazioni.
4.
Creazione della prima applicazione su Kubernetes: Hello MiniKube!
5. Creazione di un'applicazione stateless su Kubernetes
(*) La rubrica potrebbe subire delle estensioni in caso il progetto riceva un buon feedback.

1. Fase preliminare

Dato che Kubernetes lavora all'interno di una rete di nodi, e poiché non tutti hanno la possibilità di lavorare su due o più macchine contemporaneamente, andremo a creare un ambiente virtualizzato che "simuli" la comunicazione di rete di vari nodi. Per scopi di testing e per il lavoro in locale virtualizzato, si fa uso di un programma open-source chiamato MiniKube

Dato che MiniKube lavora tramite hypervisor
all'interno del nostro ambiente abbiamo bisogno di tool di virtualizzazione come VirtualBox (Disponibile per Windows e Mac OS) o per le varie distribuzioni VMWare (ottimizzato per Mac per la versione Fusion e Workstation per la versione Windows).

Nella guida non introdurrò come installare una virtual machine, darò per scontato che abbiate un sistema in cui si ha già una VM in cui gira Ubuntu con una versione pulita (nuova, senza framework o versioni specifiche per vari linguaggi).

L' installazione delle componenti viene effettuata tramite Terminale
Prima di iniziare con l'installazione vera e propria bisogna installare curl nella sua versione più aggiornata:

Codice:
sudo apt install curl

2. Installazione delle componenti principali

2.1 Installare Kube Control

La prima cosa da dover installare è il Kube Control (kubectl) che, ricordiamo, è adibito alla gestione dei cluster nell'ambiente Kubernetes.

1. Apriamo il Terminale
2. Eseguiamo il seguente codice:

Codice:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

2.2 Installare MiniKube

La seconda componente è MiniKube che serve per la virtualizzazione dei nodi del nostro ambiente

1. Eseguite il seguente comando da Terminale:

Codice:
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&&chmod +x minikube

2. Successivamente avviate MiniKube

Codice:
minikube start

3. All'avvio di MiniKube si avrà il settaggio automatico (per default) di Kubectl.
4. Per passare alla visualizzazione delle componenti su una dashboard, bisogna eseguire il seguente comando:

Codice:
minikubedashboard

5. Si aprirà una scheda di rete sul vostro browser predefinito all'indirizzo di localhost sulla porta di default 50227


kube_2.png


3. Gestione della dashboard
Ora parliamo un pò di come gestire la dashboard. Abbiamo visto come installare MiniKube, Kube Control e come avviare il tutto.
Partendo da questo punto, Kubernetes imposta per default un cluster nella nostra rete virtuale, quindi non si ha bisogno di nient'altro da settare per il momento. Possiamo quindi seguire i passi successivi:

1. Verifichiamo lo status del cluster di default:

Codice:
kubectlgetnodes

2. Ora potete creare il deployment tramite la dashboard. Fate clic sul pulsante Create (in alto a destra) per passare a un editor basato sul web. Qui potete creare un deployment in formato JSON o YAML. Dopodiché Kubernetes genera automaticamente più pod. Regolate il numero desiderato di pod scalando il deployment. La funzione corrispondente è accessibile tramite un pulsante con tre punti che trovate accanto al deployment.

kube_3.png


3. Controllare se lo status dei vari pods di default (3 pods) siano tutti in stato di Running
4. Per scalare i pods sul cluster basta semplicemente andare nelle impostazioni del pods per poi cliccare sull'opzione Scale

kube_4.png


5. Salvando, andremo a modificare il numero dei pods secondo il numero di input immesso. Possiamo visualizzare lo stato dei nuovi pods direttamente nella dashboard all'interno della tabella Pods

4. Gestione da Terminale

NOTA:
Questa sezione è stata inserita per chiunque non voglia gestire le componenti di Kubernetes tramite dashboard ma direttamente da terminale. Consiglio di seguire questa sezione agli utenti che sappiamo manipolare ben Docker da Terminale.

1. Creiamo un deployment di default utilizzando un immagine presa da Docker sul Docker Hub

Codice:
kubectl create deployment --image=[Percorso verso l’Image]

5. Informazioni delle componenti
Dopo aver settato tramite dashboard (o tramite terminale) l'ambiente, possiamo analizzare le informazioni di Kubernetes in nostro possesso andando ad utilizzare il Kube Control da Terminale.

1. Per vedere tutti i comandi disponibili per il Kube Control:

Codice:
kubectl help

I comandi relativi al kubectl sono nel formato seguente:

Codice:
kubectl [command] [TYPE] [NAME] [flags]

2. Per vedere i deployments disponibili

Codice:
kubectl get deployment

3. Per vedere i pods creati e disponibili

Codice:
kubectl get pods

4. Per vedere i servizi attivi

Codice:
kubectl get services

5. Per vedere i nodi attivi

Codice:
kubectl get nodes


kube_6.png



5. Pubblicazione deployment e attivazione dei services
Abbiamo visto come creare un deployment ma, con i passi effettuati sopra, non si ha ancora una distribuzione remota dato che non si ha ancora un servizio associato.

1. Per pubblicare un deployment

Codice:
kubectl expose deploy <deployment-name>

In questo modo si espone un deployment all'interno di un servizio interno al cluster. Con solo questo comando, però, non è possibile accedere al medesimo servizio esternamente dato che non si ha una interfaccia esterna al cluster che possa intercettare le richieste verso il servizio creato.

2. Per risolvere il problema e creare un interfacciamento esterno:

Codice:
kubectl expose deploy <name-deployment> --type=LoadBalancer --port=8080

3. Per avviare il servizio, utilizziamo MiniKube
Codice:
minikube service test-deployment

NOTA: Se il comando non va a buon fine, significa che non avete avviato MiniKube adeguatamente, per risolvere il problema basta eseguire:

Codice:
minikube start

4. Per cancellare il servizio con il relativo deployment basta eseguire:

Codice:
kubectl delete service test-deployment
kubectl delete deployment test-deployment

5. Al termine della vostra sessione di prova per il testing dell'ambiente, dovete chiudere MiniKube

Codice:
minikube stop

6. Se volete rieffettuare la riallocazione di una nuova VM Kubernetes, cancellate la macchina virtuale MiniKube con il seguente comando:

Codice:
minikube delete

In seguito basta semplicemente andare a rieseguire i comandi dal capitolo 1.

NOTA: Sia all'interruzione che alla cancellazione di MiniKube, andrete a cancellare i pods, service e deployment caricati. Quindi al restart di MiniKube perderete i dati che avete virtualmente impostato.

6. Conclusioni

L'installazione di Kubernetes è prevalentemente facile, il suo utilizzo prevede un pò di esperienza. Per ora abbiamo visto solamente come inizializzare il sistema ma non abbiamo deployato nessun'applicazione.

Nelle guide successive creeremo la prima vera applicazione: Hello MiniKube, cosi da poter visualizzare al meglio le potenzialità dell'architettura.

Non hai letto le guide precedenti? Inizia cliccando qui!
Hai riscontrato dei problemi nella configurazione dell'ambiente? Contattami in privato! Ti risponderò entro 24 ore.

Link del capitolo precedente: https://www.inforge.net/forum/resources/rubrica-kube-2-architettura-di-kubernetes.15365/
Link del primo capitolo: https://www.inforge.net/forum/resources/rubrica-kube-1-introduzione-a-kubernetes.15363/