Origini, evoluzione e scopo di Kubernetes
Kubernetes
Normalmente abbreviato in k8s. Pronuncia come in Kates.
Sistema aperto per automatizzare il deployment, la scalabilità e la gestione di applicativi in container.
https://kubernetes.io/
- Originato da Google
- Gestito dalla Cloud Native Computing Foundation
- Scritto in Go
- Tecnologia complementaria a Docker
Google è basato su Kubernetes
- Google genera miliardi di contenitori la settimana
- search, Gmail, GFS, ecc.
Kubernetes c’era prima di Docker
- Progetti originari: Borg e Omega (Star Trek)
- Originariamente chiamato Seven of Nine (donna Borg salvata da USS Voyager)
- Per questo ha sette lati
- Il nome viene dal greco per timoniere
Macchine Virtuali e Contenitori
Macchine Virtuali
Virtualizzazione dell'Hardware
- Più sistemi operativi diversi
- Più flessibile
- Più maturo
Contenitori
Virtualizzazione dell'Ambiente Operativo
- Più efficienza
- Meno manutenzione di sistema
- Deployment molto più veloce
- Migliaia di immagini con documentazione
Storia:
- 1980-2000: Applicativi su hardware nativo
- 2000-2015: Applicativi in macchine virtuali
- 2015-: Applicativi in contenitori nel cloud
Cloud Native
Progettati per i requisiti di funzionamento nel cloud:
- unattended
- auto-scaling
- self-healing
- rolling updates e rollbacks senza downtime
Gli applicativi cloud native possono anche funzionare su un cluster locale. Infatti di solito vengono prima sviluppati in locale.
Alcuni fornitori di servizi cloud che offrono soluzioni Kubernetes a pagamento sono:
- GCP - Google Kubernetes Engine (GKE).
- Microsoft Azure - Azure Kubernetes Service (AKS).
- Amazon - Amazon Elastic Kubernetes Service (Amazon EKS).
- Red Hat - OpenShift Container Platform (OCP)
Ogni diversa offerta ha metodi differenti di connessione e autenticazione, tools di gestione del cluster e regolamenti comportamentali.
Una volta istanziato un cluster Kubernetes però, l'uso del comando di gestione kubectl
è lo stesso per tutte le piattaforme.
Orchestratore
Sistema che compie il deployment e la gestione di applicazioni in un cluster, e risponde dinamicamente ai cambiamenti.
Le applicazioni sono attive in contenitori.
Lo scopo potenziale di Kubernetes è globale.
Il servizio è solitamente fornito da un cloud provider.
Tipi di Contenitori
K8s accetta vari tipi di contenitori.
Dalla release 1.20 devono essere conformi all’interfaccia Container Runtime Interface (CRI).
Nuove versioni di Docker forniscono containerd
, conforme a questa interfaccia
La versione più vecchia di Docker è deprecata
Vi sono altri ambienti di container oltre a Docker, ma molto meno diffusi
Note
Un contenitore non ha il Kernel del Sistema Operativo, ma usa quello della macchina ospite.
Ci sono contenitori Linux e Windows:
- Linux ammette solo contenitori Linux
- Windows ammette contenitori
- Windows, su Pro e Server, non su Home
- Linux, con lo strato Windows Subsystem for Linux (WSL)
- Non si possono avere simultaneamente sulla stessa macchina ospite
- I contenitori Windows sono molto più grossi dei contenitori Linux e non ne hanno tutte le possibilità
Docker e Kubernetes sono tecnologie native Linux. Sviluppare applicativi in contenitori Windows è cercarsi dei problemi.
Alternative a Kubernetes
Kubernetes nel 2023 è di gran lunga la soluzione più gettonata per la gestione di applicativi in ambiente cloud, ma non l'unica. Alcuna altre offerte open source sono:
- Docker Swarm - l'alternativa più popolare, adatta quando l'applicativo già usa tecnologie Docker: Docker Engine, Docker Compose, Docker Hub
- Marathon - creato dalla Università di California, Berkeley, per l'ambiente DC/OS di Mesosphere e Apache Mesos.
- Nomad - semplice piattaforma di orchestrazione contenitori della Hashicorp