Cluster Kubernetes
Struttura di un Cluster
Kubernetes è un orchestratore di applicativi in container, preferibilmente strutturati in microservizi:
- Molte parti piccole e indipendenti
- Cooperano per implementare un applicativo complesso
- Stesso concetto di Docker-compose ma in grande
K8s gestisce clusters che comprendono:
- masters - uno o più
- si occupano della gestione - control plane
- nodi - uno o più - workers
- si occupano dell’esecuzione
- comunicano col master
Masters e nodi sono istanze Linux
- su hardware nativo
- su macchine virtuali
- nel cloud
Componenti del Master
Il master ha quattro componenti principali:
- API Server
- Frontend col mondo
- API REST che comunica in JSON
- Cluster Store
- Configurazioni e stato del cluster
- Basato sul gestore di chiavi etcd
- Controller
- Monitor delle operazioni
- Transizioni da current state a desidered state
- Scheduler
- Assegna i workload ai nodi
- Si occupa delle performance
Componenti di un Nodo
- Kubelet
- Comunica col Master
- Container Engine
- Gestisce i contenitori
- Network Proxy
- Gestisce le comunicazioni di rete del nodo
Aspetti d’Uso
Due aspetti di Kubernetes:
-
Cluster - creazione e gestione
- Prerequisito per ogni operazione
- Vari ambienti per vari sistemi operativi host
-
Kubernetes - interazione col cluster
- Quando il cluster è attivo e raggiungibile
- Comando client principale stile CLI: kubectl
- anche utilities GUI, ma
kubectl
è più completo e performante
- anche utilities GUI, ma
- Possibili plugins e utilities aggiuntive
Topologia di Cluster Kubernetes
Rete Locale
In una rete locale
- Su hardware dedicato, PC o Blades
- Richiede installazione complessa e manutenzione
Cloud
In un cloud
- Soluzione tipica in produzione
- Richiede sottoscrizione ad un Cloud Provider
- Costi a metratura di utilizzo
Macchine Virtuali
Su un singolo computer im macchine virtuali
- Per esercizi e sviluppo applicativi
- Limitato
- Richiede notevoli risorse di CPU e RAM
- Statico e non scalabile
Contenitori Docker
Su un singolo computer im macchine virtuali
- Più leggero di macchine virtuali
- Limitato
- Richiede organizzazione dello strato Docker