En esta página se explica cómo resolver problemas relacionados con el balanceo de carga en clústeres de Google Kubernetes Engine (GKE) mediante recursos de Service, Ingress o Gateway.
Ingress externo genera errores HTTP 502
Sigue estas instrucciones para solucionar los errores HTTP 502 con recursos de Ingress externos:
- Habilita los registros de cada servicio de backend asociado a cada servicio de GKE al que haga referencia el Ingress.
- Usa los detalles del estado para identificar las causas de las respuestas HTTP 502. Los detalles de estado que indican que la respuesta HTTP 502 procede del backend requieren que se resuelvan los problemas en los pods de servicio, no en el balanceador de carga.
Grupos de instancias sin gestionar
Es posible que se produzcan errores HTTP 502 con recursos Ingress externos si tu Ingress externo usa back-ends de grupos de instancias no gestionados. Este problema se produce cuando se cumplen todas las condiciones siguientes:
- El clúster tiene un número total de nodos elevado entre todos los grupos de nodos.
- Los pods de servicio de uno o varios servicios a los que hace referencia el Ingress se encuentran en solo unos pocos nodos.
- Los servicios a los que hace referencia Ingress usan
externalTrafficPolicy: Local
.
Para determinar si tu Ingress externo usa back-ends de grupos de instancias no gestionados, haz lo siguiente:
Ve a la página Entrada de la Trusted Cloud consola.
Haz clic en el nombre de tu Ingress externo.
Haz clic en el nombre del balanceador de carga. Se muestra la página Detalles del balanceo de carga.
Consulta la tabla de la sección Servicios de backend para determinar si tu Ingress externo usa NEGs o grupos de instancias.
Para solucionar este problema, utiliza una de las siguientes soluciones:
- Usa un clúster nativo de VPC.
- Usa
externalTrafficPolicy: Cluster
para cada servicio al que haga referencia el Ingress externo. Con esta solución, se pierde la dirección IP del cliente original en los orígenes del paquete. - Usa la anotación
node.kubernetes.io/exclude-from-external-load-balancers=true
. Añade la anotación a los nodos o grupos de nodos que no ejecuten ningún pod de servicio para ningún servicio al que haga referencia ningún Ingress externo oLoadBalancer
servicio de tu clúster.
Usar registros de balanceadores de carga para solucionar problemas
Puede usar los registros de balanceadores de carga de red de paso a través internos y los registros de balanceadores de carga de red de paso a través externos para solucionar problemas con los balanceadores de carga y correlacionar el tráfico de los balanceadores de carga con los recursos de GKE.
Los registros se agregan por conexión y se exportan casi en tiempo real. Se generan registros para cada nodo de GKE que participa en la ruta de datos de un servicio LoadBalancer, tanto para el tráfico de entrada como para el de salida. Las entradas de registro incluyen campos adicionales para los recursos de GKE, como los siguientes:
- Nombre del clúster
- Ubicación del clúster
- Nombre del servicio
- Espacio de nombres del servicio
- Nombre del pod
- Espacio de nombres de pod
Usar herramientas de diagnóstico para solucionar problemas
La herramienta de diagnóstico check-gke-ingress
inspecciona los recursos de entrada para detectar errores de configuración habituales. Puedes usar la herramienta check-gke-ingress
de las siguientes formas:
- Ejecuta la
gcpdiag
herramienta de línea de comandos en tu clúster. Los resultados de entrada aparecen en la seccióngke/ERR/2023_004
de comprobación de reglas. - Usa la herramienta
check-gke-ingress
sola o como complemento de kubectl siguiendo las instrucciones de check-gke-ingress.