Serie · 2 articoli

Come funziona Kubernetes sotto

Dall'Ingress che sostituisce il port-forward al reconciliation loop dei controller

Due pezzi sui meccanismi che stanno sotto l'uso quotidiano di Kubernetes: come si smette di raggiungere i servizi con un port-forward, e cosa succede davvero fra un kubectl apply e lo stato che cambia. Servono a chi usa il cluster e vuole smettere di considerarlo una scatola nera.

2
Articoli pubblicati
31
Minuti di lettura
Intermedio
Livello
KubernetesIngressNGINXControllerCRD

Smettere di trattare il cluster come una scatola nera

Si può usare Kubernetes per mesi senza sapere cosa succede fra un kubectl apply e lo stato che cambia. Funziona, finché non si blocca: e a quel punto la differenza fra chi ha un modello mentale e chi no è mezza giornata di tentativi.

Questi due pezzi guardano sotto. Il primo sostituisce il port-forward con un Ingress Controller. Il port-forward va benissimo per una prova e diventa insostenibile quando i servizi sono più di uno; l'Ingress è un indirizzo che smette di dipendere da chi lo esegue.

Il secondo apre il meccanismo che sta sotto tutto il resto: informer, work queue e reconciliation loop. Serve a capire perché un controller non ha una fine ma un punto di equilibrio, e perché la stessa riconciliazione verra' chiamata di nuovo. È il motivo per cui deve essere idempotente.

Cosa imparerai

  • Esporre i servizi con un Ingress invece che con un port-forward per ogni prova
  • Capire il reconciliation loop, e perché un controller non ha una fine ma un equilibrio

Articoli della serie

  1. 01
    Da port-forward a Ingress: Come configurare un ambiente Kubernetes locale professionale con NGINX 16 min

    Guida completa alla configurazione di un Ingress Controller NGINX su un cluster Kubernetes locale (kind) per esporre servizi in modo stabile e professionale.

  2. 02
    Controller Kubernetes: Come Funziona il Cuore di K8s 15 min

    Guida al funzionamento dei controller Kubernetes, dal reconciliation loop alla costruzione di un controller custom con controller-runtime