Carichi di lavoro Kubernetes per l'alta disponibilità

Questo documento consiglia le strategie per i carichi di lavoro con container Kubernetes per rendere le applicazioni più tolleranti agli errori in un universo multi-zona con air gap di Google Distributed Cloud (GDC). GDC supporta le applicazioni container native di Kubernetes ampiamente utilizzate e supportate su Google Kubernetes Engine (GKE).

Le strategie descritte in questo documento sono destinate agli sviluppatori di applicazioni che sono responsabili della creazione di carichi di lavoro resilienti.

Per saperne di più, consulta la sezione Pubblico della documentazione di GDC con air gap.

Considerazioni su Kubernetes per le app ad alta disponibilità

Per ottenere l'alta disponibilità (HA) in Kubernetes, non è sufficiente il piano di controllo. Devi anche progettare ed eseguire il deployment dei carichi di lavoro con container nel tuo universo con air gap di Google Distributed Cloud (GDC) in modo resiliente. Kubernetes offre diversi meccanismi potenti per ridurre al minimo i tempi di inattività e fornire servizi ad alta disponibilità anche in caso di problemi di infrastruttura o durante la manutenzione di routine. I seguenti argomenti sono strategie chiave da considerare per l'alta disponibilità:

  • Mantenere la disponibilità con le repliche e la scalabilità automatica: assicurati che la tua applicazione abbia un numero sufficiente di istanze in esecuzione per gestire la richiesta di latenza e sopravvivere ai singoli errori dei pod.

    • Repliche dei pod: mantieni un insieme stabile di repliche di pod identici. Se un pod non funziona, il controller ReplicaSet crea automaticamente un nuovo pod per sostituirlo. Per saperne di più, consulta la documentazione ReplicaSetdi Kubernetes.

    • Horizontal Pod Autoscaler (HPA): regola automaticamente il numero di repliche in base a metriche come l'utilizzo della CPU, consentendo all' applicazione di gestire i picchi di traffico. Per saperne di più, consulta la documentazione di HPA di Kubernetes.

  • Ridurre al minimo i tempi di inattività con PodDisruptionBudget (PDB): utilizza un PDB per limitare il numero di pod che possono essere inattivi contemporaneamente durante le interruzioni volontarie, ad esempio la manutenzione dei nodi. Questa strategia garantisce un livello minimo di disponibilità. Per saperne di più, consulta la documentazione di PDB di Kubernetes.

  • Diffondere il rischio con le regole di anti-affinità: utilizza l'anti-affinità dei pod per assicurarti che più repliche della stessa applicazione non siano pianificate sullo stesso nodo. Questa strategia impedisce che un singolo errore dell'infrastruttura metta offline tutte le repliche. Per saperne di più, consulta la documentazione sull'affinità di Kubernetes.

  • Controlli di integrità con i probe: implementa i probe di attività, idoneità e avvio per aiutare Kubernetes a rilevare e ripristinare i pod non integri. I probe assicurano che il traffico raggiunga solo i pod in grado di gestirlo. Per saperne di più, consulta la documentazione sui probe di Kubernetes.

  • Endpoint stabili con i servizi: utilizza gli oggetti Service di Kubernetes per fornire un indirizzo IP stabile e un nome DNS per i tuoi pod, disaccoppiando i client dai singoli cicli di vita dei pod e fornendo il bilanciamento del carico interno. Per saperne di più, consulta la documentazione sui servizi di Kubernetes.

  • Aggiornamenti e rollback graduali con i deployment: utilizza gli oggetti Kubernetes Deployment per fornire aggiornamenti e rollback graduali per i carichi di lavoro con container. Per saperne di più, consulta la documentazione sui deployment di Kubernetes.

  • Impostare richieste e limiti delle risorse: definisci le risorse CPU e di memoria richieste per i container. Queste specifiche aiutano lo scheduler di Kubernetes a posizionare efficacemente i pod per impedire che la contesa delle risorse influisca sulla disponibilità. Per saperne di più, consulta la documentazione sulla gestione delle risorse di Kubernetes.

Passaggi successivi