Kubernetes esegue applicazioni in contenitori in un cluster di macchine e le mantiene nello stato che descrivi. Lo fa assegnando il lavoro alle macchine giuste, indirizzando il traffico verso le destinazioni corrette e controllando errori e modifiche.
Il flusso di base
1. Descrivi ciò che vuoi eseguire
La maggior parte dei carichi di lavoro Kubernetes inizia come uno "stato desiderato" dichiarato (cosa deve essere in esecuzione, quante copie e come devono essere esposti). Kubernetes si basa su configurazione dichiarativa e automazione.
2. Kubernetes decide dove deve essere eseguito
Kubernetes pianifica i contenitori sulle macchine del cluster in base alle risorse di calcolo disponibili e a ciò di cui ha bisogno ogni contenitore. I contenitori vengono eseguiti all'interno dei Pod, che sono l'unità che Kubernetes colloca su una macchina.
3. Kubernetes controlla continuamente la realtà rispetto allo stato desiderato
I controller osservano il cluster e lavorano per avvicinare lo stato corrente allo stato desiderato, usando il server API per apportare modifiche.
Pianificazione dei contenitori e gestione quotidiana
La pianificazione consiste nella decisione "Dove deve essere eseguito?" ".
1. Si pianificano i Pod, non i singoli contenitori
Kubernetes raggruppa i contenitori in Pod e poi colloca quei Pod sulle macchine.
2. L'utilità di pianificazione i Pod a un nodo adatto
kube-scheduler cerca i Pod che non sono ancora assegnati e seleziona un nodo per loro.
3. Gli agenti del nodo mantengono in esecuzione i Pod
Su ogni nodo, kubelet si assicura che i Pod siano in esecuzione (compresi i relativi contenitori).
Bilanciamento del carico e individuazione dei servizi
I contenitori e i Pod possono essere creati, spostati o sostituiti, quindi le applicazioni hanno bisogno di modi stabili per trovarsi tra loro.
L'individuazione dei servizi e il bilanciamento del carico sono comportamenti integrati
Kubernetes gestisce l'individuazione dei servizi e usa il bilanciamento del carico per fare in modo che il traffico venga instradato anche quando i Pod cambiano nel tempo.
I servizi forniscono un indirizzo stabile per un insieme di Pod che cambia
L'API Service fornisce un indirizzo IP o un nome host stabile per un servizio supportato da uno o più Pod e Kubernetes tiene traccia dei Pod di supporto tramite oggetti EndpointSlice.
Aggiornamenti dell'instradamento del traffico quando i Pod cambiano
Quando i Pod dietro un servizio cambiano, l'instradamento del servizio si adatta in modo che il traffico continui a raggiungere i back-end correnti.
Rendere scalabili le applicazioni (e perché lo "stato desiderato" è importante)
Kubernetes può rendere scalabili i carichi di lavoro verso lo stato impostato, incluso il ridimensionamento in base all'utilizzo del calcolo.
Le idee di scalabilità più comuni includono:
Più repliche (più Pod) per gestire una domanda più elevata.
Meno repliche quando la domanda diminuisce.
Monitoraggio delle risorse in modo che le decisioni di posizionamento riflettano le esigenze di CPU e memoria.
Questo si collega al modello di "stato desiderato": specifichi il target e i controller continuano a lavorarci.
Auto-riparazione: cosa succede quando qualcosa si rompe
Kubernetes include comportamenti di auto-riparazione che mirano a mantenere l'integrità e la disponibilità dei carichi di lavoro. Sono inclusi:
Riavvio dei contenitori non riusciti (riavvii a livello di contenitore).
Sostituzione dei Pod non riusciti per mantenere il numero richiesto di repliche (sostituzione delle repliche).
Riassegnazione dei carichi di lavoro quando i nodi diventano non disponibili.
Rimozione dei Pod non riusciti dagli endpoint servizio in modo che il traffico vada solo ai Pod integri (bilanciamento del carico per i servizi).
L'auto-riparazione controlla l'integrità dei contenitori e li riavvia o li replica quando si verificano problemi.
Il ruolo dei KPI di Kubernetes
Gli indicatori di prestazioni chiave (KPI o metriche) vengono usati per comprendere lo stato del cluster e il comportamento dei carichi di lavoro.
Da dove provengono i KPI
I componenti di sistema di Kubernetes emettono metriche (formato Prometheus) utili per dashboard e avvisi.
Le metriche in genere sono disponibili nell'endpoint HTTP /metrics di un componente, inclusi componenti come kube-apiserver, kube-scheduler, kubelet, kube-proxy e kube-controller-manager.
Esempi di ciò che i KPI aiutano a individuare
Indicatori di integrità del cluster (metriche a livello di componente e modelli di errore)
Stabilità del carico di lavoro (ad esempio, riavvii o sostituzioni frequenti)
Pressione sulla capacità (allocazione delle risorse rispetto alla domanda, collegata alle decisioni di scalabilità)
Perché è importante nelle operazioni quotidiane
Il monitoraggio offre ai team una visione più completa delle risorse del cluster, dell'API di Kubernetes, dei contenitori e dei log, riducendo il ciclo di feedback tra problemi e correzioni.