Origini, evoluzione e scopo di Kubernetes

Kubernetes

Kublogo

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

Kubstoria

Macchine Virtuali e Contenitori

Macchine Virtuali

Mvirt

Virtualizzazione dell'Hardware

  • Più sistemi operativi diversi
  • Più flessibile
  • Più maturo

Contenitori

Conts

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

Tipiconts

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