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
.