Charges de travail Kubernetes pour la haute disponibilité

Cette page recommande des stratégies de charge de travail de conteneur Kubernetes qui rendent votre application plus tolérante aux pannes dans un univers Google Distributed Cloud (GDC) multizone isolé. GDC est compatible avec les applications de conteneurs natifs Kubernetes qui sont largement utilisées et compatibles avec Google Kubernetes Engine (GKE).

Cette page s'adresse aux développeurs du groupe des opérateurs d'applications, qui sont chargés de créer des charges de travail d'application pour leur organisation. Pour en savoir plus, consultez la documentation sur les audiences pour GDC en mode air-gapped.

Considérations Kubernetes pour les applications à haute disponibilité

Dans Kubernetes, la haute disponibilité ne se limite pas au plan de contrôle. Vous devez également concevoir et déployer des charges de travail de conteneurs de manière résiliente dans votre univers Google Distributed Cloud (GDC) sous air gap. Kubernetes propose plusieurs mécanismes puissants pour minimiser les temps d'arrêt et fournir des services à disponibilité élevée, même en cas de problèmes d'infrastructure ou lors d'une maintenance de routine. Voici les principales stratégies à prendre en compte pour la haute disponibilité :

  • Maintenir la disponibilité avec des répliques et l'autoscaling : vous devez disposer d'un nombre suffisant d'instances en cours d'exécution de votre application pour assurer la haute disponibilité.

    • ReplicaSet : une ressource ReplicaSet maintient un ensemble stable de répliques de pods identiques en cours d'exécution à tout moment. Si un pod échoue ou est arrêté, le contrôleur ReplicaSet en crée automatiquement un nouveau pour le remplacer. Pour en savoir plus, consultez la documentation Kubernetes sur ReplicaSet.

    • Autoscaler horizontal de pods (AHP) : alors qu'un ReplicaSet maintient un nombre fixe de répliques, le AHP ajuste automatiquement ce nombre en fonction des métriques observées, comme l'utilisation du processeur ou de la mémoire. Cela permet à votre application de gérer les pics de charge. Pour en savoir plus, consultez la documentation Kubernetes sur l'autoscaling horizontal des pods.

  • Réduisez les temps d'arrêt avec PodDisruptionBudget (PDB) : pour en savoir plus, consultez la documentation Kubernetes sur la spécification d'un budget d'interruption pour votre application.

  • Répartissez vos risques avec des règles d'anti-affinité : pour en savoir plus, consultez la documentation Kubernetes sur l'affinité et l'anti-affinité.

  • Vérifications de l'état avec des vérifications d'activité, d'aptitude et de démarrage : pour en savoir plus, consultez la section Configurer des vérifications d'activité, d'aptitude et de démarrage dans la documentation de Kubernetes.

  • Points de terminaison stables et équilibrage de charge avec les services : pour en savoir plus, consultez la documentation Kubernetes sur les services.

  • Mises à jour et rollbacks progressifs avec les déploiements : pour en savoir plus, consultez la documentation Kubernetes sur le rollback d'un déploiement.

  • Définissez des requêtes et des limites pour les ressources : pour en savoir plus, consultez la documentation Kubernetes sur la gestion des ressources pour les pods et les conteneurs.

Étapes suivantes