Résoudre les problèmes liés à l'équilibrage de charge dans GKE

Cette page explique comment résoudre les problèmes liés à l'équilibrage de charge dans les clusters Google Kubernetes Engine (GKE) à l'aide de ressources Service, Ingress ou Gateway.

Ingress externe génère des erreurs HTTP 502

Suivez les conseils ci-dessous pour résoudre les erreurs HTTP 502 avec des ressources Ingress externes :

  1. Activez les journaux pour chaque service de backend associé à chaque service GKE référencé par l'objet Ingress.
  2. Utilisez les détails de l'état pour identifier les causes des réponses HTTP 502. Les détails de l'état indiquant que la réponse HTTP 502 provient du backend nécessitent un dépannage dans les pods actifs, et non dans l'équilibreur de charge.

Groupes d'instances non gérés

Vous pouvez rencontrer des erreurs HTTP 502 avec des ressources Ingress externes si votre entrée externe utilise des backends de groupes d'instances non gérés. Ce problème se produit lorsque toutes les conditions suivantes sont remplies :

  • Le cluster comporte un grand nombre total de nœuds parmi tous les pools de nœuds.
  • Les pods actifs d'un ou de plusieurs services référencés par Ingress sont situés sur seulement quelques nœuds.
  • Les services référencés par Ingress utilisent externalTrafficPolicy: Local.

Pour déterminer si votre entrée externe utilise des backends de groupes d'instances non gérés, procédez comme suit :

  1. Accédez à la page Ingress de la console Cloud de Confiance .

    Accéder à la page Ingress

  2. Cliquez sur le nom de votre Ingress externe.

  3. Cliquez sur le nom de l'équilibreur de charge. La page Détails de l'équilibrage de charge s'affiche.

  4. Consultez le tableau de la section Services de backend pour déterminer si votre Ingress externe utilise des NEG ou des groupes d'instances.

Pour résoudre ce problème, utilisez l'une des méthodes suivantes :

  • Utilisez un cluster de VPC natif.
  • Utilisez externalTrafficPolicy: Cluster pour chaque service référencé par l'objet Ingress externe. Cette solution vous fait perdre l'adresse IP du client d'origine dans les sources du paquet.
  • Utilisez l'annotation node.kubernetes.io/exclude-from-external-load-balancers=true. Ajoutez l'annotation aux nœuds ou aux pools de nœuds qui n'exécutent aucun pod actif pour un service référencé par un objet Ingress externe ou un service LoadBalancer dans votre cluster.

Résoudre les problèmes à l'aide des journaux de l'équilibreur de charge

Vous pouvez utiliser les journaux de l'équilibreur de charge réseau passthrough interne et les journaux de l'équilibreur de charge réseau passthrough externe pour résoudre les problèmes liés aux équilibreurs de charge et corréler le trafic des équilibreurs de charge vers les ressources GKE.

Les journaux sont agrégés par connexion et exportés en quasi-temps réel. Les journaux sont générés pour chaque nœud GKE impliqué dans le chemin de données d'un service LoadBalancer, pour le trafic entrant et sortant. Les entrées de journal incluent des champs supplémentaires pour les ressources GKE, par exemple :

  • Nom du cluster
  • Emplacement du cluster
  • Nom du service
  • Espace de noms du service
  • Nom du pod
  • Espace de noms du pod

Utiliser des outils de diagnostic pour résoudre les problèmes

L'outil de diagnostic check-gke-ingress inspecte les ressources Ingress afin de détecter les erreurs de configuration courantes. Vous pouvez utiliser l'outil check-gke-ingress de différentes manières :

  • Exécutez l'outil de ligne de commande gcpdiag sur votre cluster. Les résultats de la ressource Ingress s'affichent dans la section gke/ERR/2023_004 de la règle de vérification.
  • Utilisez l'outil check-gke-ingress seul ou en tant que plug-in kubectl en suivant les instructions de la section check-gke-ingress.