Torna al blog
InfrastrutturaKubernetesDevOps

Kubernetes e orchestrazione dei container

MUSTNODE SRL11 min di lettura

Il problema che Kubernetes risolve

Containerizzare un'applicazione con Docker e semplice. Gestire decine o centinaia di container in produzione, distribuiti su piu macchine, con aggiornamenti senza downtime, scalabilita automatica e auto-riparazione, e tutta un'altra storia. Kubernetes e il sistema che orchestra questa complessita.

I concetti fondamentali

Pod

Il pod e l'unita base di deployment: uno o piu container che condividono rete e storage. Di norma un pod contiene un singolo container applicativo.

Deployment

Un Deployment descrive lo stato desiderato: quante repliche di un pod devono essere attive. Kubernetes lavora per mantenere costantemente quello stato.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: telemetry-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: telemetry
  template:
    metadata:
      labels:
        app: telemetry
    spec:
      containers:
        - name: telemetry
          image: registry.mustnode.it/telemetry:1.4.2
          ports:
            - containerPort: 8080

Service

Un Service fornisce un punto di accesso stabile a un insieme di pod, distribuendo il traffico tra le repliche, anche quando i pod vengono ricreati e cambiano indirizzo.

Le capacita chiave

  • Self-healing: se un container va in crash, Kubernetes lo riavvia; se un nodo muore, ricolloca i pod altrove.
  • Scaling: si aumentano o diminuiscono le repliche manualmente o automaticamente in base al carico (Horizontal Pod Autoscaler).
  • Rolling update: gli aggiornamenti avvengono progressivamente, senza downtime, con rollback automatico in caso di errore.
  • Dichiarativita: si descrive lo stato desiderato in YAML e il sistema lo realizza e lo mantiene.

Il principio dichiarativo

La filosofia di Kubernetes e dichiarativa: non si danno comandi imperativi ("avvia questo container"), ma si descrive il risultato voluto ("voglio 3 repliche sempre attive"). Un loop di controllo confronta continuamente lo stato reale con quello desiderato e agisce per colmare la differenza.

Quando (non) usarlo

Kubernetes e potente ma complesso. Introdurlo ha senso quando:

  • si gestiscono molti servizi che devono scalare in modo indipendente;
  • servono alta disponibilita e aggiornamenti frequenti;
  • il team ha le competenze per operarlo.

Per applicazioni piccole o monolitiche, una semplice configurazione Docker o un servizio gestito sono spesso la scelta piu saggia. La complessita va adottata solo quando porta valore reale.

Conclusione

Kubernetes e lo standard per orchestrare container su larga scala, on-premise o in cloud Azure e AWS. In MUSTNODE valutiamo caso per caso se la sua adozione e giustificata, evitando di introdurre complessita non necessaria e privilegiando soluzioni proporzionate alle esigenze reali.

Articoli correlati

Altri approfondimenti dalla categoria Cloud & DevOps.