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 :
- Activez les journaux pour chaque service de backend associé à chaque service GKE référencé par l'objet Ingress.
- 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 :
Accédez à la page Ingress de la console Cloud de Confiance .
Cliquez sur le nom de votre Ingress externe.
Cliquez sur le nom de l'équilibreur de charge. La page Détails de l'équilibrage de charge s'affiche.
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: Clusterpour 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 serviceLoadBalancerdans 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
gcpdiagsur votre cluster. Les résultats de la ressource Ingress s'affichent dans la sectiongke/ERR/2023_004de la règle de vérification. - Utilisez l'outil
check-gke-ingressseul ou en tant que plug-in kubectl en suivant les instructions de la section check-gke-ingress.