Resuelve problemas administrados de Anthos Service Mesh

En esta sección, se explican los problemas comunes de Anthos Service Mesh y cómo solucionarlos. Si necesitas asistencia adicional, consulta Obtén asistencia.

El Pod se inyecta con istiod.istio-system

Esto puede suceder si no reemplazaste la etiqueta istio-injection: enabled.

Además, usa el siguiente comando para verificar la configuración de webhooks de mutación:

kubectl get mutatingwebhookconfiguration

...
istiod-asm-managed
…
# may include istio-sidecar-injector

kubectl get mutatingwebhookconfiguration   istio-sidecar-injector -o yaml

# Run debug commands
export T=$(echo '{"kind":"TokenRequest","apiVersion":"authentication.k8s.io/v1","spec":{"audiences":["istio-ca"], "expirationSeconds":2592000}}' | kubectl create --raw /api/v1/namespaces/default/serviceaccounts/default/token -f - | jq -j '.status.token')

export INJECT_URL=$(kubectl get mutatingwebhookconfiguration istiod-asmca -o json | jq -r .webhooks[0].clientConfig.url)
export ISTIOD_ADDR=$(echo $INJECT_URL | sed s/inject.*//)

curl -v -H"Authorization: Bearer $T" $ISTIOD_ADDR/debug/configz

La herramienta de instalación genera errores HTTP 400

La herramienta de instalación puede generar errores HTTP 400, como los siguientes:

HealthCheckContainerError, message: Cloud Run error: Container failed to start.
Failed to start and then listen on the port defined by the PORT environment
variable. Logs for this revision might contain more information.

Este error puede ocurrir si no habilitaste Workload Identity en tu clúster de Kubernetes, lo que puedes hacer con el siguiente comando:

export CLUSTER_NAME=...
export PROJECT_ID=...
export LOCATION=...
gcloud container clusters update $CLUSTER_NAME --zone $LOCATION \
    --workload-pool=$PROJECT_ID.svc.id.goog

Estado del plano de datos administrado

Con el siguiente comando, se muestra el estado del plano de datos administrado:

kubectl -n istio-system get dataplanecontrol -o custom-columns=REVISION:.spec.revision,STATE:status.state

Deberías ver lo siguiente aproximadamente diez minutos después de implementar el plano de datos administrado:

REVISION            STATE
Regular             Ready

Estado vacío

Si no ves ningún resultado, excepto los encabezados de columna REVISION y STATE, esto indica que el controlador del plano de datos no se implementó en el clúster. Para solucionar este problema, ejecuta el siguiente comando a fin de ver si el clúster está registrado en la flota:

gcloud container hub memberships list --project=PROJECT_ID
  • Si el resultado del comando gcloud está vacío, o si el resultado no tiene el nombre de tu clúster, esto significa que el clúster no está registrado en la flota. Para solucionar este problema, vuelve a ejecutar la herramienta de instalación y asegúrate de incluir --enable-registration en la línea de comandos. (Ten en cuenta que también debes incluir --option cni-managed cuando vuelvas a ejecutar la herramienta).

  • Si el resultado incluye el nombre de tu clúster, ejecuta el siguiente comando para habilitar Anthos Service Mesh en la flota:

    gcloud alpha container hub mesh enable --project=PROJECT_ID
    

Estado <nil>

Esto indica un problema con el DaemonSet de CNI. Ejecuta el siguiente comando para verificar si el DaemonSet de CNI está en buen estado y en ejecución:

kubectl get pods -n kube-system -l k8s-app=istio-cni-node

Si el DaemonSet de CNI está en buen estado y en ejecución, el resultado es similar al siguiente:

NAME                   READY   STATUS    RESTARTS   AGE
istio-cni-node-8w88v   3/3     Running   0          12h
istio-cni-node-c69mn   3/3     Running   0          12h
istio-cni-node-n9pnr   3/3     Running   0          12h
  • Si el Pod de CNI no está en el resultado, vuelve a ejecutar la herramienta de instalación y asegúrate de incluir --option cni-managed. (Ten en cuenta que también debes incluir --enable-registration para asegurarte de que el clúster esté registrado en la flota cuando vuelvas a ejecutar la herramienta).

  • Si el Pod de CNI no está en buen estado, obtén detalles sobre el Pod. En el siguiente comando, reemplaza CNI_POD por el nombre del Pod que está en mal estado:

    kubectl -n kube-system describe pod CNI_POD
    

    Comunícate con la Asistencia de Cloud y proporciónales los detalles sobre el Pod en mal estado.

Error de membresía del clúster (no se especificó ningún proveedor de identidad)

La herramienta de instalación puede fallar con errores de membresía del clúster como los siguientes:

asmcli: [ERROR]: Cluster has memberships.hub.gke.io CRD but no identity
provider specified. Please ensure that an identity provider is available for the
registered cluster.

El error puede ocurrir si no tienes Workload Identity de GKE habilitada antes de registrar el clúster. Puedes volver a registrar el clúster en la línea de comandos con el siguiente comando: gcloud container hub memberships register --enable-workload-identity.