Cette page présente l'équilibrage de charge basé sur l'utilisation pour les services Google Kubernetes Engine (GKE). Il évalue l'utilisation des ressources de vos pods de backend et utilise la capacité réelle de la charge de travail pour rééquilibrer intelligemment le trafic afin d'accroître la disponibilité des applications et d'offrir un routage flexible.
Cette page est destinée aux architectes cloud et aux spécialistes de la mise en réseau qui gèrent des services sur GKE et souhaitent optimiser la répartition du trafic en fonction de l'utilisation des ressources en temps réel.
Avant de lire cette page, assurez-vous de bien connaître les éléments suivants :
- Concepts GKE: y compris les clusters, les nœuds et les pods GKE.
- Services Kubernetes: comment les applications sont exposées dans Kubernetes.
- Cloud Load Balancing: compréhension générale de Cloud Load Balancing, en particulier du fonctionnement des Cloud de Confiance équilibreurs de charge.
- API Kubernetes Gateway: méthode recommandée pour exposer des services et gérer le trafic dans GKE.
- Groupes de points de terminaison du réseau (NEG) : comment les services GKE utilisent les NEG pour s'intégrer à Cloud Load Balancing.
- Métriques de base de l'utilisation des ressources: par exemple, l'utilisation du processeur, qui est la métrique actuellement utilisée pour l'équilibrage de charge basé sur l'utilisation.
Présentation
L'infrastructure Cloud Load Balancing achemine le trafic vers les services GKE en fonction de métriques d'accessibilité standards, y compris HTTP, HTTPS, HTTP/2 et gRPC, qui déterminent l'état et l'éligibilité des pods. Par défaut, elle transfère le trafic vers tous les pods de backend opérationnels en tenant compte de la disponibilité des pods et des stratégies de répartition du trafic éventuellement définies, telles que GCPTrafficDistributionPolicy.
Les applications modernes suivent l'utilisation du processeur pour vous permettre de comprendre les coûts, de surveiller les performances et de gérer efficacement la capacité. Pour répondre à ce besoin, les équilibreurs de charge utilisent des données d'utilisation des ressources en temps réel comme métrique, ce qui leur permet de déterminer le volume de trafic optimal que chaque pod de backend peut traiter pour une répartition intelligente du trafic.
L'équilibrage de charge basé sur l'utilisation pour les services GKE évalue l'utilisation des ressources comme métrique afin de déterminer la capacité des pods de backend à traiter le trafic des applications. Il rééquilibre ensuite le trafic vers d'autres backends si un ou plusieurs pods sont surutilisés.
Fonctionnalités et avantages
L'équilibrage de charge basé sur l'utilisation offre les avantages suivants :
Augmente la disponibilité des applications : donne la priorité au trafic vers les pods dont l'utilisation des ressources est plus faible lorsque les backends sont sous pression, ce qui permet de maintenir les performances des applications, d'éviter les ralentissements et les pannes, et de garantir une expérience fiable aux utilisateurs.
Offre un routage flexible : fournit un ensemble supplémentaire de métriques qui vous permettent de définir des stratégies de répartition du trafic qui correspondent précisément à vos cas d'utilisation professionnels.
Fonctionnement de l'équilibrage de charge basé sur l'utilisation
L'équilibrage de charge basé sur l'utilisation pour les services GKE améliore la gestion du trafic pour vos applications exécutées dans GKE en rendant le processus plus réactif à la charge des ressources. Votre application s'exécute dans GKE à l'aide de nombreuses instances (pods) sur différentes machines. Elle reçoit le trafic de deux manières principales :
De l'extérieur de votre cluster (trafic nord-sud) : votre cluster reçoit du trafic provenant d'Internet ou d'autres sources externes, ce que l'on appelle le trafic nord-sud. Un équilibreur de charge (passerelle) géré par GKE dirige ce trafic depuis l'extérieur de votre cluster.
De l'intérieur de votre cluster (trafic est-ouest) : votre cluster reçoit des flux de trafic entre différentes parties de votre application, provenant d'autres services de votre cluster GKE ou de plusieurs clusters. Ce flux de trafic interne est appelé trafic est-ouest.
L'équilibrage de charge basé sur l'utilisation pour les services GKE implique un processus continu, dans lequel les agents GKE collectent des métriques d'utilisation des pods qui permettent à l'infrastructure Cloud Load Balancing de distribuer intelligemment le trafic. Les étapes suivantes résument comment l'équilibrage de charge basé sur l'utilisation pour les services GKE gère le trafic de votre application en fonction de l'utilisation des ressources en temps réel :
Lorsque vous configurez votre service GKE avec un équilibreur de charge d'application (passerelle), GKE crée automatiquement des NEG pour chaque zone et attribue les pods de votre application à ces NEG. Initialement, la répartition du trafic repose sur des vérifications de l'état de base et vos paramètres par défaut.
Vous configurez votre service GKE pour qu'il utilise l'utilisation des ressources, comme le processeur, comme métrique clé pour l'équilibrage de charge.
En plus de la métrique d'utilisation du processeur par défaut, vous pouvez exposer des métriques personnalisées de votre application pour que l'équilibreur de charge les utilise. L'utilisation de métriques provenant de votre application vous permet de définir vos propres signaux spécifiques à votre charge de travail. Par exemple, vous pouvez utiliser le
gpu_cache_usage_perc metricd'une charge de travail vLLM pour aider l'équilibreur de charge à diriger le trafic vers la région disposant de plus de ressources disponibles. Pour savoir comment exposer des métriques personnalisées pour votre équilibreur de charge, consultez la page Exposer des métriques personnalisées pour les équilibreurs de charge.Un agent GKE spécial surveille en permanence l'utilisation des ressources de vos pods (par exemple, le processeur) et envoie régulièrement ces données à l'infrastructure Cloud Load Balancing. Si un pod comporte plusieurs conteneurs, l'agent calcule leur utilisation combinée.
L'infrastructure Cloud Load Balancing analyse les données d'utilisation en temps réel pour ajuster dynamiquement la répartition du trafic. Elle détermine la quantité de trafic à envoyer à chaque groupe de pods (chaque NEG zonal) en évaluant leur utilisation moyenne des ressources (telle que la charge du processeur) et d'autres facteurs tels que la latence du réseau. Ce processus déplace automatiquement le trafic des pods à charge plus élevée vers ceux à charge plus faible, ce qui garantit une utilisation efficace des ressources dans votre région la plus proche.
L'exemple suivant montre comment fonctionne l'équilibrage de charge basé sur l'utilisation.
Exemple : Gestion des pods surutilisés
Lorsque votre service exécute plusieurs conteneurs dans le même pod, l'agent de métriques GKE signale l'utilisation des ressources de chaque conteneur séparément. L'infrastructure Cloud Load Balancing calcule ensuite une moyenne pondérée de leur utilisation pour obtenir la capacité totale du pod.
La figure 1 montre comment Cloud Load Balancing utilise les métriques d'utilisation du processeur en temps réel de GKE pour optimiser la répartition du trafic entre les pods déployés dans plusieurs zones. La requête client est acheminée via la passerelle GKE vers les pods de backend regroupés dans des NEG sur trois zones.
Dans la zone 1, le pod signale une utilisation du processeur de 90 %. L'équilibreur de charge réduit le trafic vers ce pod pour éviter la surcharge.
Dans la zone 2, le pod est modérément utilisé à 60% du processeur et continue de recevoir du trafic.
Dans la zone 3, le pod signale une faible utilisation du processeur (40 %) et peut recevoir plus de trafic. GKE envoie en permanence des métadonnées et des métriques d'utilisation à l'infrastructure Cloud Load Balancing, qui ajuste intelligemment le routage du trafic pour maintenir les performances et la disponibilité des applications.
Prenons l'exemple d'un service configuré pour une utilisation maximale du processeur de 80%. Si les pods de la zone 1 signalent une utilisation du processeur de 90 %, ce qui dépasse le seuil, les événements suivants se produisent :
- L'infrastructure Cloud Load Balancing détecte cette surutilisation.
- Elle rééquilibre ensuite intelligemment le trafic et réduit la quantité de trafic qu'elle envoie aux pods de la zone 1. Ce rééquilibrage se poursuit jusqu'à ce que l'utilisation moyenne du processeur pour les pods de cette zone repasse en dessous du seuil d'utilisation de 80 %.
- Lorsque les pods de la zone 1 signalent une utilisation du processeur plus faible (inférieure au seuil de 80 %), l'infrastructure Cloud Load Balancing réévalue la répartition du trafic. Elle rééquilibre ensuite progressivement le trafic sur tous les pods qui prennent en charge le service et continue de distribuer le trafic efficacement en fonction de l'utilisation.