En esta página, se describe cómo solucionar problemas en las páginas de Anthos Service Mesh en la consola de Google Cloud.
Falta un servicio específico en la lista de servicios
Si falta un servicio de la lista, verifica que exista una configuración del servicio de Kubernetes en tu clúster.
Para obtener una lista de todos los servicios de Kubernetes, ingresa este comando:
kubectl get services --all-namespaces
Para obtener una lista de los servicios de Kubernetes en un espacio de nombres específico, ingresa este comando:
kubectl get services -n YOUR_NAMESPACE
Faltan datos de telemetría de los servicios o los datos son incorrectos
De forma predeterminada, Cloud Monitoring y Cloud Logging están habilitados en tu proyecto de Google Cloud cuando instalas Anthos Service Mesh. Para informar datos de telemetría, cada proxy de sidecar que se incorpora en tus pods de servicio llama a la API de Cloud Monitoring y a la API de Cloud Logging. Después de implementar las cargas de trabajo, se necesitan alrededor de uno o dos minutos para que los datos de telemetría se muestren en la consola de Google Cloud. Anthos Service Mesh mantiene los paneles del servicio actualizados de forma automática:
Para las métricas, los proxies de sidecar llaman a la API de Cloud Monitoring cada alrededor de un minuto.
Para actualizar el gráfico de topología, los proxies de sidecar envían informes incrementales cada alrededor de un minuto e informes completos cada diez minutos.
Para el registro, los proxies de sidecar llaman a la API de Cloud Logging cada alrededor de diez segundos.
Para el seguimiento, debes habilitar Cloud Trace. Los seguimientos se informan según la frecuencia de muestreo configurada (en general, en una de cada 100 solicitudes).
Las métricas se muestran solo para los servicios HTTP en la página Métricas de Anthos Service Mesh. Si no ves ninguna métrica, revisa los siguientes aspectos:
Verifica que se hayan insertado proxies de sidecar
Verifica que todos los pods en el espacio de nombres de los servicios de tu aplicación tengan proxies de sidecar incorporados:
kubectl get pod -n YOUR_NAMESPACE --all
En el siguiente resultado de ejemplo del comando anterior, observa que la columna READY
indica que hay dos contenedores para cada una de tus cargas de trabajo: el contenedor principal y el contenedor del proxy de sidecar.
NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Si no ves dos contenedores, verifica si tu espacio de nombres tiene la etiqueta istio-injection=enabled
, que indica que la inserción automática de sidecar está habilitada:
kubectl get ns --show-labels
Resultado de ejemplo:
NAME STATUS AGE LABELS default Active 35m istio-injection=enabled istio-system Active 34m istio-injection=disabled,istio-operator-managed=Reconcile
Si no ves la etiqueta
istio-injection=enabled
, ejecuta el siguiente comando para habilitar la inserción automática de sidecar:kubectl label namespace YOUR_NAMESPACE istio-injection=enabled --overwrite
Si ves la etiqueta
istio-injection=enabled
e instalaste Anthos Service Mesh en un clúster existente de Google Kubernetes Engine que tenía cargas de trabajo, debes reiniciar cualquier pod en ejecución para que se inserte o actualice el proxy de sidecar con la versión actual de Anthos Service Mesh. Consulta Actualiza sidecars para pods existentes a fin de obtener más información.
Verifica los nombres de los puertos del servicio de Kubernetes
Comprueba los nombres de los puertos del servicio de Kubernetes para verificar que Anthos Service Mesh considere el servicio como HTTP. Para que se los incluya en Anthos Service Mesh, los puertos del servicio deben tener un nombre, y este debe incluir el protocolo del puerto, por ejemplo:
apiVersion: v1 kind: Service metadata: name: ratings labels: app: ratings service: ratings spec: ports: - port: 9080 name: http
El nombre del puerto del servicio puede incluir un sufijo en la sintaxis name: protocol[-suffix]
, en la que los corchetes indican un sufijo opcional que debe comenzar con un guion, por ejemplo:
kind: Service metadata: name: myservice spec: ports: - number: 3306 name: mysql - number: 80 name: http-web
Para que las métricas se muestren en la consola de Google Cloud, los puertos del servicio deben tener nombres con alguno de los siguientes protocolos: http
, http2
o grpc
.
Los puertos del servicio con el protocolo https
se tratan como tcp
, y no se muestran las métricas de esos servicios.
Verifica que las API necesarias estén habilitadas
Anthos Service Mesh requiere varias API para informar y mostrar telemetría.
Puedes ver qué API están habilitadas para tu proyecto mediante el comando gcloud services list
, o bien puedes habilitar todas las API requeridas con el fin de asegurarte de que tienes todas.
Configura el proyecto predeterminado para Google Cloud CLI:
gcloud config set project
YOUR_PROJECT_ID
Habilita todas las API requeridas:
gcloud services enable \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ anthos.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ cloudresourcemanager.googleapis.com
Verifica que exista cuenta de servicio del plano de datos de la malla ASM
En la consola de Google Cloud, abre la página IAM:
Selecciona tu proyecto.
En la lista de miembros, busca una cuenta de servicio con el nombre Cuenta de servicio del plano de datos de la malla ASM.
Si falta la cuenta de servicio, créala:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ https://meshconfig.googleapis.com/v1alpha1/projects/YOUR_PROJECT_ID:initialize
Verifica que las cargas de trabajo estén en ejecución
En la consola de Google Cloud, abre la página Cargas de trabajo de GKE:
Selecciona tu proyecto.
Agrega un filtro para tu clúster. Verifica que todas las cargas de trabajo de tu aplicación y Anthos Service Mesh funcionen de forma correcta con el estado
OK
. Una carga de trabajo puede fallar debido a recursos limitados (CPU, memoria, etc.), en cuyo caso debes actualizar tu clúster con más recursos. Consulta Cambia el tamaño de un clúster para obtener más información.
Verifica que la aplicación esté entregando solicitudes
Verifica que la aplicación esté entregando solicitudes de manera activa. Es posible que el valor de QPS sea bajo, pero la aplicación debe recibir tráfico.
El gráfico de topología está vacío
Si el gráfico de topología no muestra tus servicios y muestra el mensaje de error No data available to graph. Check your filters and try again
, verifica lo siguiente:
Verifica el ID de la malla
Verifica que el clúster tenga la etiqueta mesh_id
correcta:
Obtén el número de proyecto, que es un número único que se genera de forma automática cuando creas tu proyecto.
Asegúrate de que el clúster tenga una etiqueta
mesh_id
en el siguiente formato:mesh_id: proj-PROJECT_NUMBER
Corrige la etiqueta
mesh_id
si falta o es incorrecta. Si deseas obtener más información, consulta Agrega o actualiza etiquetas en clústeres existentes.Configura las siguientes variables de entorno:
Configura el nombre del clúster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Establece
CLUSTER_LOCATION
en la zona o en la región del clúster:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Vuelve a implementar Anthos Service Mesh con las mismas opciones que usaste antes.
Cualquier carga de trabajo que ya estaba en ejecución en tu clúster antes de instalar Anthos Service Mesh debe tener el proxy de sidecar actualizado, de modo que tenga la versión actual de Anthos Service Mesh.
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE