minikube-kubernetes

In questo articolo vedremo come installare Kubernetes con Minikube, nell’ambito della virtualizzazione a container e di cui abbiamo già ampiamente parlato in precedenza.

Cosa è Kubernetes?

Grazie alla virtualizzazione basata su container, è possibile costruire singole applicazioni come aggregato di più moduli o gruppi di container che cooperano fra loro e vengono esposti verso l’esterno come un unico servizio.

Pensiamo ad una semplice immagine WordPress per lo sviluppo di un sito internet.
Perchè il servizio relativo sia correttamente funzionante è necessario far ricorso ad un coordinamento di ulteriori moduli – come ad esempio il database mysql – che dovranno essere caricati in specifici momenti del deploy.

Se in questo caso è sufficiente il docker-compose di Docker, immaginate di portare questo agli estremi per creare applicazioni più complesse, composte di molti più moduli eterogenei e installati su nodi sparsi sulla rete.
A questo punto sarà necessario ricorrere a strumenti di orchestrazione più adeguati.

Ci viene in aiuto Kubernetes – conosciuto anche come K8s – un progetto open source che gestisce il processo di distribuzione e controllo di applicazioni multi-container, ben funzionante con Docker, ma anche con altri sistemi di container.

In realtà in K8s non si parla di containers o di gruppi, ma di pod, ognuno dei quali rappresenta una singola istanza di un’applicazione ed è formato da uno o più container.

Si occupa in sostanza di astrarre le risorse per poter inserire un container all’interno di un cluster, con un unico indirizzo IP e porta.

Non si può propriamente parlare di differenze tra Kubernetes e Docker, dato che svolgono funzioni diverse ed entrambi possono sopravvivere l’uno senza l’altro.
È vero però che collaborando insieme sulle applicazioni e lo sviluppo possono diventare molto più performanti e sicuri.

È forse questo uno dei motivi per cui Kubernetes, originariamente sviluppata da Google, oggi si trova sotto l’ala di The Linux Foundation, la Onlus nata nel 2007 per supportare lo sviluppo del kernel linux e delle applicazioni open source.

Il suo punto di forza della gestione di sistemi di container distribuiti e complessi, aumenta ovviamente anche la difficoltà di implementazione e utilizzo, oltre che l’attenzione che gli sviluppatori devono prestare alla sicurezza, dovendo i nodi che collaborano tra di loro essere collegati in modo sicuro.

Come usare Kubernetes

Per usare Kubernetes non è previsto un singolo metodo, ma è possibile fare ricorso a più di una metodologia.

  1. Si può utilizzare uno tra i tanti pacchetti di distribuzione (non tutti free), come Canonical Kubernetes, Pivotal Container Service, Rancher, Red Hat OpenShift o Suse CaaS Platform.
  2. Alcune distribuzioni di Kubernetes vengono installate ed eseguite in alcune infrastrutture di macchine virtuali come Amazon EC2, Azure Virtual Machines, Google Compute Engine.
  3. Alcune delle distribuzioni Linux offrono strumenti per la configurazione di Kubernetes; un esempio per tutti è Ubuntu, con il suo conjure-up.
  4. Si può installare Minikube per eseguire localmente Kubernetes, testare e disegnare le proprie applicazioni.

Minikube

Con Minikube è possibile eseguire Kubernetes localmente come nodo singolo all’interno di una macchina virtuale.

Prima di installare Minikube, è necessario abilitare nel BIOS la virtualizzazione delle risorse hardware, ed installare in sequenza prima un hypervisor (VirtualBox o hyperv per Windows) e poi kubetcl, l’interfaccia a riga di comando per seguire comandi sul cluster Kubernetes.

Seguendo il tutorial ufficiale di Kubernetes è possibile installare Minikube ed iniziare a sperimentare il deploy di applicazioni su un singolo nodo.

Su un so Linux Ubuntu, i passi da effettuare sono i seguenti:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_1.6.2.deb \
>  && sudo dpkg -i minikube_1.6.2.deb

install minikube

Far partire un cluster usando il driver della virtual machine installata come prerequisito (nel nostro caso virtualbox).

minikube start --vm-driver=virtualbox

start minikube

Adesso non ci rimane che installare kubectl con il seguente comando:

sudo snap install kubectl --classic

snap kubectl

Una volta finita questa fase dell’installazione, si può iniziare ad usare kubernetes per interagire con il cluster minikube.
Ad esempio è possibile vedere l’elenco degli stati dei pod attivi.

kubectl get po -A

minikube get pod

Oppure interagire con il cluster facendo partire un server.

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

minikube create service

Esponendolo come servizio

kubectl expose deployment hello-minikube --type=NodePort --port=8080

minikube expose service

Adesso è possibile aprire questo servizio esposto nel browser con il seguente comando:

minikube service hello-minikube

minikube service

Volendo poi fermare o cancellare il cluster i comandi da eseguire sono semplicemente:

minikube stop

minikube stop

minikube delete

minikube delete

Conclusioni

Come abbiamo potuto vedere Docker e Kubernetes sono soluzioni diverse, ognuna delle quali affronta un aspetto della virtualizzazione.
Ma utilizzate insieme in collaborazione, possono rendere sempre più semplice la gestione e l’implementazione di applicazioni, con caratteristiche importanti quali la rapidità di deploy, la scalabilità e la portabilità tra le varie infrastrutture.

Quando infatti le applicazioni diventano complesse, espandendosi su più container, distribuiti su diversi host o su cloud, Kubernetes riesce a gestire la sicurezza e i processi di gestione necessari.
È possibile infatti organizzare i container massimizzando le risorse necessarie distribuite sui vari host, automatizzando i processi e aggiungendo o modificando lo storage.

 

(Inglese, Portoghese, Brasile)



Come installare Kubernetes con Minikube
Iperius IT Team
*****************************************

PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://support.iperius.net

*****************************************

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*****************************************

PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://support.iperius.net

*****************************************