Solucionar problemas de Cloud Service Mesh paso a paso

En esta sección se explica cómo solucionar problemas al usar Cloud Service Mesh. Si necesitas más ayuda, consulta el artículo Obtener asistencia.

Pasos para solucionar el problema

Sigue estos pasos generales para solucionar problemas de Cloud Service Mesh:

  1. Utiliza las herramientas de validación de configuración automatizadas.
  2. Comprueba si tienes un problema habitual con una solución conocida.
  3. Acota el alcance del problema.
  4. Revisa los registros y la información pertinentes.
  5. Recopila los registros de diagnóstico y pide ayuda.

La herramienta de diagnóstico de Cloud Service Mesh puede detectar problemas de configuración habituales. Instala la herramienta para solucionar problemas siguiendo estas instrucciones.

Antes de empezar

  1. Asegúrate de que el contexto de kubeconfig de tu clúster esté disponible en tu archivo kubeconfig. Si no es así, ejecuta el siguiente comando:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CLUSTER_LOCATION --project=PROJECT_NAME
    

    Haz los cambios siguientes:

    • CLUSTER_NAME: el nombre de tu clúster.
    • CLUSTER_LOCATION: la zona o la región de tu clúster.
    • PROJECT_NAME: el nombre del proyecto.
  2. Comprueba que se hayan creado las credenciales predeterminadas de la aplicación. Si no lo son, ejecuta uno de los siguientes comandos:

    gcloud auth application-default login --billing-project=PROJECT_NAME
    
    gcloud auth application-default set-quota-project PROJECT_NAME
    

    Sustituye PROJECT_NAME por el nombre de tu proyecto.

Ver el estado del plano de control

Los siguientes comandos pueden ayudarte a conocer el estado del plano de control de Cloud Service Mesh:

gestionados

  • Obtén la lista de estados de conexión de los clientes al plano de control de Cloud Service Mesh:

    gcloud beta container fleet mesh debug proxy-status \
        --membership=MEMBERSHIP_NAME \
        --location=MEMBERSHIP_LOCATION \
        --project=PROJECT_NAME
    

    Haz los cambios siguientes:

    • MEMBERSHIP_NAME: el nombre de tu suscripción.
    • MEMBERSHIP_LOCATION: la región de tu suscripción. Puedes consultar la ubicación de tu suscripción con gcloud container fleet memberships list --project FLEET_PROJECT_ID sustituyendo FLEET_PROJECT_ID por el ID del proyecto de la flota.
    • PROJECT_NAME: el nombre del proyecto.

    En la siguiente tabla se describen las posibles respuestas.

    DESCONOCIDO (Valor predeterminado) ⁣La información de estado no está disponible o es desconocida.
    SYNCED El plano de control ha enviado la configuración al cliente y ha recibido una confirmación del cliente.
    ERROR ⁣El plano de control ha enviado la configuración al cliente y ha recibido un NACK del cliente.
    STALE El plano de control ha enviado la configuración al cliente, pero no ha recibido un ACK ni un NACK del cliente.
    NO ENVIADO La configuración no se ha enviado.
    N/A No aplicable
    No compatible Nuestra API para solucionar problemas no admite el estado de sincronización.

En el clúster

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • Para todos los pods de istio-system: kubectl logs -n istio-system -l istio --all-containers
  • istioctl version
  • istioctl proxy-status
  • kubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yaml
  • kubectl top pods -n istio-system

Usa los siguientes comandos para conocer la escala de la implementación:

  • kubectl get nodes
  • kubectl get services --all-namespaces
  • kubectl get pods --all-namespaces

Ver configuraciones de proxy

El siguiente comando puede ayudarte a entender las configuraciones del proxy de Cloud Service Mesh:

gestionados

gcloud beta container fleet mesh debug proxy-config POD_NAME.NAMESPACE \ 
    --type=TYPE \
    --membership=MEMBERSHIP_NAME \
    --location=MEMBERSHIP_LOCATION \
    --project=PROJECT_NAME
  • POD_NAME: el nombre de tu Pod.
  • NAMESPACE: el espacio de nombres de tu pod.
  • TYPE: uno de los siguientes: clúster, listeners, rutas, endpoints, bootstrap, log, secret o all.
  • MEMBERSHIP_NAME: el nombre de tu suscripción.
  • MEMBERSHIP_LOCATION: la región de tu suscripción. Puedes consultar la ubicación de tu suscripción con gcloud container fleet memberships list --project FLEET_PROJECT_ID sustituyendo FLEET_PROJECT_ID por el ID del proyecto de la flota.
  • PROJECT_NAME: el nombre del proyecto.

En el clúster

Usa istioctl proxy-config para ver las configuraciones de proxy de los planos de control del clúster. Para obtener más información, consulta Depurar Envoy e istiod.

Si el problema persiste, consulta la siguiente sección para comprobar si ya se ha detectado.

Buscar problemas habituales y sus soluciones

Puede ahorrar tiempo comprobando si sus síntomas coinciden con un problema en estas secciones de problemas y soluciones habituales, agrupadas por área funcional de Cloud Service Mesh:

Si el problema persiste, consulta la siguiente sección.

Acotar el alcance del problema

Cloud Service Mesh consta de varias tecnologías que funcionan conjuntamente, lo que significa que determinados tipos de problemas están asociados a áreas funcionales o componentes concretos. Cada uno de estos componentes genera sus propios registros útiles. Antes de intentar analizar manualmente el volumen de información que proporcionan, acota el ámbito de la solución de problemas respondiendo a las siguientes preguntas:

  • ¿El problema se produce en el plano de control o en el plano de datos (por ejemplo, istiod o proxies de Envoy)?
  • ¿En qué área funcional se produce el problema (por ejemplo, redes, telemetría, seguridad, etc.)?
  • ¿Se ha perdido tráfico en toda la malla de servicios o en una implementación específica?
  • ¿El problema aparece o empeora debido a la falta de capacidad para escalar el tráfico en la malla de servicios?
  • ¿El problema provoca latencia u otros problemas de rendimiento?
  • ¿Puedes reproducir el problema cuando quieras?
  • ¿El problema ha empezado después de un cambio reciente en la configuración de Istio, GKE, etc.?
  • ¿Hay un aumento o un pico de tráfico en la malla de servicios?
  • ¿Este clúster tiene alguna función notable habilitada o implementaciones atípicas?
  • ¿Observas un uso elevado de la CPU o la memoria? Si es así, ¿cuál es el uso previsto a gran escala?
  • ¿Hay restricciones de cuota que deba tener en cuenta?

Revisa registros e información útiles

Una vez que haya acotado el problema, podrá centrarse en determinados registros e información de forma más eficaz. Para obtener información sobre los registros que genera Cloud Service Mesh y cómo interpretar la información que contienen, consulta Interpretar los registros de Cloud Service Mesh.