Risoluzione dei problemi di Anthos Service Mesh gestito

Questo documento spiega i problemi comuni di Anthos Service Mesh e come risolverli, ad esempio quando un pod viene inserito in istio.istio-system, lo strumento di installazione genera errori come codici di stato HTTP 400 ed errori di appartenenza al cluster.

Se hai bisogno di ulteriore assistenza per la risoluzione dei problemi di Anthos Service Mesh, consulta Richiedere assistenza.

Il pod viene inserito con istiod.istio-system

Questo può accadere se non hai sostituito l'etichetta istio-injection: enabled.

Inoltre, verifica la configurazione dei webhook di modifica utilizzando il comando seguente:

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

Lo strumento di installazione genera errori HTTP 400

Lo strumento di installazione potrebbe generare errori HTTP 400 come il seguente:

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.

L'errore può verificarsi se non hai abilitato Workload Identity nel tuo cluster Kubernetes, utilizzando il seguente comando:

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

Stato del piano dati gestito

Il seguente comando mostra lo stato del piano dati gestito:

gcloud alpha container fleet mesh describe --project PROJECT_ID

La tabella seguente elenca tutti i possibili stati del piano dati gestito:

Stato Codice Descrizione
ACTIVE OK Il piano dati gestito è in esecuzione normalmente.
DISABLED DISABLED Il piano dati gestito sarà in questo stato se non è configurato alcun spazio dei nomi per utilizzarlo. Segui le istruzioni per attivare il piano dati gestito. Tieni presente che i rapporti sullo stato del piano dati gestito sono disponibili solo se hai abilitato il piano dati gestito annotando uno spazio dei nomi. L'annotazione di singoli pod determina la gestione di tali pod, ma lo stato di funzionalità DISABLED è privo di spazi dei nomi.
FAILED_PRECONDITION MANAGED_CONTROL_PLANE_REQUIRED Il piano dati gestito richiede un piano di controllo gestito di Anthos Service Mesh.
PROVISIONING PROVISIONING È in corso il provisioning del piano dati gestito. Se questo stato persiste per più di 10 minuti, è probabile che si sia verificato un errore e devi contattare l'assistenza.
STALLED INTERNAL_ERROR Il piano dati gestito non è operativo a causa di una condizione di errore interno. Se il problema persiste, contatta l'assistenza.
NEEDS_ATTENTION UPGRADE_FAILURES Il piano dati gestito richiede l'intervento manuale per ripristinare lo stato normale del servizio. Per maggiori informazioni e su come risolvere questo problema, consulta Stato NEEDS_ATTENTION.

Stato NEEDS_ATTENTION

Se il comando gcloud alpha container fleet mesh describe mostra che lo stato del piano dati gestito è in stato NEEDS_ATTENTION e il codice è UPGRADE_FAILURES, significa che il piano dati gestito non è riuscito a eseguire l'upgrade di determinati carichi di lavoro. Questi carichi di lavoro saranno etichettati con dataplane-upgrade: failed dal servizio piano dati gestito per ulteriori analisi. I proxy devono essere riavviati manualmente per poter eseguire l'upgrade. Per ottenere l'elenco dei pod che richiedono attenzione, esegui il comando seguente:

kubectl get pods --all-namespaces -l dataplane-upgrade=failed

Errore di appartenenza al cluster (nessun provider di identità specificato)

Lo strumento di installazione potrebbe non riuscire con errori di appartenenza al cluster come riportato di seguito:

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.

L'errore può verificarsi se non hai attivato l'identità del carico di lavoro GKE prima di registrare il cluster. Puoi registrare di nuovo il cluster sulla riga di comando con il seguente comando: gcloud container hub memberships register --enable-workload-identity