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

Clusterk

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

Masterc

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

Nodec

  • 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
    • Possibili plugins e utilities aggiuntive

Topologia di Cluster Kubernetes

Rete Locale

Clocnet

In una rete locale

  • Su hardware dedicato, PC o Blades
  • Richiede installazione complessa e manutenzione

Cloud

Ccloud

In un cloud

  • Soluzione tipica in produzione
  • Richiede sottoscrizione ad un Cloud Provider
  • Costi a metratura di utilizzo

Macchine Virtuali

Cvirt

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

Cldocker

Su un singolo computer im macchine virtuali

  • Più leggero di macchine virtuali
  • Limitato
  • Richiede organizzazione dello strato Docker