Los problemas de balanceo de cargas en Google Kubernetes Engine (GKE) pueden provocar interrupciones del servicio, como errores HTTP 502, o impedir el acceso a las aplicaciones.
Usa este documento para aprender a solucionar problemas de errores 502 de Ingress externo y cómo usar los registros del balanceador de cargas y las herramientas de diagnóstico, como check-gke-ingress, para identificar problemas.
Esta información es importante para los operadores y administradores de plataformas, y los desarrolladores de aplicaciones que configuran y mantienen servicios con balanceo de cargas en GKE. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de, consulta Roles y tareas comunes del usuario de GKE. Cloud de Confiance by S3NS
El Ingress externo produce errores HTTP 502
Usa la siguiente guía para solucionar errores HTTP 502 con recursos externos de Ingress:
- Habilita los registros para cada servicio de backend asociado a cada Service de GKE al que hace referencia el Ingress.
- Usa los detalles del estado para identificar las causas de las respuestas HTTP 502. Los detalles de estado que indican la respuesta HTTP 502 que se originó en el backend requieren la solución de problemas dentro de los Pods de entrega, no del balanceador de cargas.
Grupos de instancias no administrados
Es posible que experimentes errores HTTP 502 con recursos de Ingress externos si el Ingress externo usa backends de grupos de instancias no administrados. Este problema se produce cuando se cumplen todas las siguientes condiciones:
- El clúster tiene una gran cantidad total de nodos entre todos los grupos de nodos.
- Los Pods de entrega para uno o más servicios a los que hace referencia el Ingress se encuentran en unos pocos nodos.
- Los servicios a los que se hace referencia en el Ingress usan
externalTrafficPolicy: Local.
Para determinar si tu Ingress externo usa backends de grupo de instancias no administrados, haz lo siguiente:
Ve a la Ingress página en la Cloud de Confiance consola.
Haz clic en el nombre de tu Ingress externo.
Haz clic en el nombre del balanceador de cargas. Aparecerá la página Detalles del balanceo de cargas.
Verifica la tabla en la sección Servicios de backend para determinar si el Ingress externo usa NEG o grupos de instancias.
Para resolver este problema, usa una de las siguientes soluciones:
- Usa un clúster nativo de la VPC.
- Usa
externalTrafficPolicy: Clusterpara cada servicio al que se hace referencia en el Ingress externo. Esta solución hace que pierdas la dirección IP de cliente original en las fuentes del paquete. - Usa la anotación
node.kubernetes.io/exclude-from-external-load-balancers=true. Agrega la anotación a los nodos o grupos de nodos que no ejecutan ningún Pod de entrega para ningún Service al que haga referencia cualquier Ingress externo o ServiceLoadBalanceren el clúster.
Configuración de registro del balanceador de cargas de capa 4
En esta sección, se proporciona información para solucionar problemas si habilitaste el registro para tu balanceador de cargas de red de transferencia externo o balanceador de cargas de red de transferencia interno.
Supervisa el estado de la configuración de registro
El controlador L4LB de GKE proporciona comentarios sobre el estado de conciliación de registro a través del tipo status.conditions del Service. Para verificar este estado, ejecuta el siguiente comando:
kubectl get svc SERVICE_NAME -o yaml
Reemplaza lo siguiente:
SERVICE_NAME: el nombre del clúster
En el resultado, busca el tipo de condición LoggingConfigManaged. En la siguiente tabla, se describen los posibles motivos de la condición:
| Estado de la condición | Motivo | Descripción |
|---|---|---|
| Verdadero | Conciliado | El controlador aplica de forma activa la configuración de registro definida en la CRD de L4LBConfig. |
| Falso | No administrado | Falta la sección logging en la CRD de L4LBConfig o se quitó la anotación. El
controlador detuvo la administración y dejó el servicio de backend en su último
estado conocido. |
| Falso | Faltante | No se puede encontrar el recurso L4LBConfig al que se hace referencia en la anotación del Service. |
| Falso | No válida | El recurso L4LBConfig no pasó la
validación cruzada del optionalFields parámetro. |
| Falso | Error | Se produjo un error durante la conciliación del servicio de backend. |
Comprende el comportamiento de la costa
Si se quita la anotación networking.gke.io/l4lb-config del manifiesto del Service o se borra el recurso L4LBConfig al que se hace referencia, la configuración ingresa en un estado Coast.
En este estado, el controlador de GKE deja de administrar la configuración de registro , pero no restablece el servicio de backend Cloud de Confiance by S3NS a su configuración predeterminada. En cambio, el servicio de backend permanece en su último estado correcto conocido. Por lo general, se emite un evento de advertencia para notificarte que Kubernetes ya no controla la configuración.
Usa los registros del balanceador de cargas para solucionar problemas
Puedes usar los registros del balanceador de cargas de red de transferencia interno y los registros del balanceador de cargas de red de transferencia externo para solucionar problemas relacionados con los balanceadores de cargas y correlacionar el tráfico de los balanceadores de cargas con los recursos de GKE.
Los registros se agregan por conexión y se exportan casi en tiempo real. Los registros se generan para cada nodo de GKE involucrado en la ruta de datos de un Service LoadBalancer, para el tráfico de entrada y 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 Service
- Nombre del Pod
- Espacio de nombres del Pod
Usa herramientas de diagnóstico para solucionar problemas
La herramienta de diagnóstico check-gke-ingress inspecciona los recursos de Ingress en busca de opciones de configuración incorrectas comunes. Puedes usar la herramienta de check-gke-ingress de las siguientes maneras:
- Ejecuta la herramienta de línea de comandos de
gcpdiagen tu clúster. Los resultados de Ingress aparecen en la seccióngke/ERR/2023_004de la regla de verificación. - Usa la herramienta de
check-gke-ingresssola o como un complemento de kubectl mediante las instrucciones en check-gke-ingress.