Bentornati in nuovo articolo di tooldech!!, Oggi parleremo di Kubernetes.
Kubernetes (K8s) è una piattaforma open-source che ti aiuta a eseguire e gestire applicazioni containerizzate (cioè in container, come quelli Docker) su uno o più server. Automatizza attività complesse come scalare il numero di istanze, riparare automaticamente i componenti che si rompono e distribuire nuove versioni con il minimo downtime.
A livello architetturale, un cluster Kubernetes è composto da:
- Control plane: “cervello” che prende decisioni (pianificazione, stato desiderato).
- Nodi (worker): “braccia” che eseguono i container (le tue app).
Vorrei spendere due parole in più su quello che riguarda alcuni dei concetti fondamentali quando si parla di Kubernetes.
- Pod: l’unità minima di esecuzione in Kubernetes. Contiene uno o più container che condividono rete e storage. In genere 1 Pod = 1 istanza della tua app.
- Nodo (Node): una macchina (fisica o virtuale) dove girano i Pod. Un cluster ha 1+ nodi.
- Deployment: specifica quante repliche della tua app vuoi e si occupa di crearle/ricrearle (garantisce lo stato desiderato).
- Service: fornisce un endpoint di rete stabile per raggiungere i Pod (che possono nascere/morire e cambiare IP). Tipi comuni: ClusterIP, NodePort, LoadBalancer.
Cosa useremo per il primo cluster locale
Per imparare senza spendere nulla né toccare il cloud, useremo Minikube, uno strumento che crea un cluster Kubernetes in locale. Lo avvieremo con driver Docker perché è spesso il modo più semplice e portabile.
Alternative esistono (kind, k3s), ma per i primissimi passi Minikube rimane la strada più lineare.
Prerequisiti e installazione (Windows, macOS, Linux)
Requisiti minimi consigliati
- CPU: 2 core
- RAM: ≥ 2 GB (meglio 4 GB)
- Disco: ≥ 20 GB liberi
- Connessione internet
- Gestore VM/Container: Docker, VirtualBox, ecc. (useremo Docker) minikube
Installa kubectl (la CLI di Kubernetes)
Io consiglio l’installazione di kubectl e minikube su linux, lascio sul tutorial i comandi per macOS e windows, ma il tutorial si basa sui comandi linux! Troverete i link con la documentazione per l’istallazione.
brew install kubectl
kubectl version --client
Windows (Chocolatey da PowerShell Admin):
choco install kubernetes-cli -y
kubectl version --client
Linux (download binario ufficiale, esempio x86_64):
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
chmod +x kubectl
kubectl version --client

Installa Minikube
Il tutorial si basa sui comandi linux! Troverete i link con la documentazione per l’istallazione.
brew install minikube
minikube version
choco install minikube -y
minikube version
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

minikube version

Nota: useremo il driver Docker (preferito su Linux/macOS/Windows). Il driver “none” è per utenti avanzati; evita di usarlo per i primi test.
Avvio del cluster con Minikube
In questo punto iniziamo ad accendere il cluster minikube con un cluster locale.
Prepariamo il cluster io sto facendo questa prova con utente root, per prova si può ancora usare per ambienti di produzione è fortemente sconsigliata, al di fuori di questa prova sarebbe utile preparae i permessi per il driver docker per usare minikube:
minikube start --driver=docker --force
minikube status

kubectl cluster-info
kubectl get nodes

La prima app su Kubernetes (Nginx)
Creiamo un Deployment chiamato hello-k8s che avvia un container nginx:
kubectl create deployment hello-k8s --image=nginx
create deployment: crea un oggetto Deployment.--image=nginx: usa l’immagine pubblicanginx(porta 80 predefinita).

Verifichiamo la creazione.
kubectl get deployments

kubectl get pods -o wide

Se tutto è andato bene dovresti vedere 1 pod in running.
Scala a 3 repliche:
kubectl scale deployment/hello-k8s --replicas=3
kubectl get pods -o wide

Esporre l’app in rete (Service NodePort)
Per raggiungere Nginx dal tuo PC, esponiamo il Deployment con un Service di tipo NodePort:
kubectl expose deployment/hello-k8s --type=NodePort --port=80 --target-port=80
--type=NodePort: apre una porta sul nodo (intervallo predefinito 30000-32767).--port=80: porta “esterna” del Service.--target-port=80: porta nel container (Nginx)
Controlla il numero di porta assegnato:
kubectl get service hello-k8s

Vedrai qualcosa come 80:30xxx/TCP dove 30xxx è la NodePort.
Demo finale
Con Minikube, puoi ottenere direttamente l’URL raggiungibile dal browser:
minikube service hello-k8s --url

Copia l’URL ritornato (es. http://127.0.0.1:xxxxx o http://<IP>:30xxx) e prova:
curl -I $(minikube service hello-k8s --url)

Dovresti vedere una risposta HTTP/1.1 200 OK e gli header di Nginx. Aprendo l’URL nel browser, appare la pagina di benvenuto di Nginx (“Welcome to nginx!”).
Pulizia dell’ambiente
Quando hai finito, puoi rimuovere le risorse:
kubectl delete service hello-k8s
kubectl delete deployment hello-k8s
E, se vuoi spegnere e cancellare il cluster locale:
minikube stop
minikube delete

Conclusioni + Call-to-Action
Hai creato il tuo primo cluster Kubernetes locale, distribuito una app Nginx, l’hai scalata e esposta in rete.
Grazie di aver letto fino a questo punto e di aver trovato interessante questo articolo, un’abbraccio al prossimo tutorial!
👉 Ti è stata utile la guida?
Prova i nostri altri tutorial su Docker e DevOps.
Seguici sui social:
