View a markdown version of this page

Risoluzione dei problemi di configurazione di App Mesh - AWS App Mesh

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di configurazione di App Mesh

Importante

Avviso di fine del supporto: il 30 settembre 2026, AWS interromperà il supporto per. AWS App Mesh Dopo il 30 settembre 2026, non potrai più accedere alla AWS App Mesh console o alle risorse. AWS App Mesh Per ulteriori informazioni, consulta questo post del blog Migrazione da AWS App Mesh ad Amazon ECS Service Connect.

Questo argomento descrive i problemi più comuni che potresti riscontrare con la configurazione di App Mesh.

Impossibile estrarre l'immagine del contenitore Envoy

Caratteristiche

Riceverai il seguente messaggio di errore in un'attività Amazon ECS. L'Amazon ECR account ID e Region il messaggio seguente potrebbero essere diversi, a seconda del repository Amazon ECR da cui hai estratto l'immagine del contenitore.

CannotPullContainerError: Error response from daemon: pull access denied for 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy, repository does not exist or may require 'docker login'
Risoluzione

Questo errore indica che il ruolo di esecuzione dell'attività utilizzato non è autorizzato a comunicare con Amazon ECR e non può estrarre l'immagine del contenitore Envoy dal repository. Il ruolo di esecuzione dell'attività assegnato al tuo task Amazon ECS richiede una policy IAM con le seguenti dichiarazioni:

{ "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-west-2:111122223333:repository/aws-appmesh-envoy", "Effect": "Allow" }, { "Action": "ecr:GetAuthorizationToken", "Resource": "*", "Effect": "Allow" }

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o contatta l'AWS assistenza.

Impossibile connettersi al servizio di gestione App Mesh Envoy

Caratteristiche

Il tuo proxy Envoy non è in grado di connettersi al servizio di gestione App Mesh Envoy. Stai vedendo:

  • Errori di connessione rifiutata

  • Timeout di connessione.

  • Errori nella risoluzione dell'endpoint del servizio di gestione App Mesh Envoy

  • Errori gRPC

Risoluzione

Assicurati che il tuo proxy Envoy abbia accesso a Internet o a un endpoint VPC privato e che i tuoi gruppi di sicurezza consentano il traffico in uscita sulla porta 443. Gli endpoint pubblici del servizio di gestione Envoy di App Mesh seguono il formato del nome di dominio completo (FQDN).

# App Mesh Production Endpoint appmesh-envoy-management.Region-code.amazonaws.com # App Mesh Preview Endpoint appmesh-preview-envoy-management.Region-code.amazonaws.com

È possibile eseguire il debug della connessione a EMS utilizzando il comando seguente. In questo modo viene inviata una richiesta gRPC valida ma vuota all'Envoy Management Service.

curl -v -k -H 'Content-Type: application/grpc' -X POST https://appmesh-envoy-management.Region-code.amazonaws.com:443/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources

Se ricevi questi messaggi, la tua connessione a Envoy Management Service è funzionante. Per il debug degli errori relativi a gRPC, vedi gli errori in Envoy disconnesso dal servizio di gestione App Mesh Envoy con testo di errore.

grpc-status: 16 grpc-message: Missing Authentication Token

Se il problema persiste, valuta la possibilità di aprirne uno GitHub o contatta l'AWS assistenza.

Envoy si è disconnesso dal servizio di gestione App Mesh Envoy con un testo di errore

Caratteristiche

Il proxy Envoy non è in grado di connettersi al servizio di gestione App Mesh Envoy e di riceverne la configurazione. I log del tuo proxy Envoy contengono una voce di registro come la seguente.

gRPC config stream closed: gRPC status code, message
Risoluzione

Nella maggior parte dei casi, la parte del registro contenente i messaggi dovrebbe indicare il problema. La tabella seguente elenca i codici di stato gRPC più comuni che potresti vedere, le relative cause e le relative risoluzioni.

Codice di stato gRPC Causa Risoluzione
0 Disconnessione agevole dal servizio di gestione Envoy. Non ci sono problemi. App Mesh occasionalmente disconnette i proxy Envoy con questo codice di stato. Envoy si riconnetterà e continuerà a ricevere aggiornamenti.
3 L'endpoint mesh (nodo virtuale o gateway virtuale) o una delle risorse associate non è stato trovato. Ricontrolla la configurazione di Envoy per assicurarti che abbia il nome appropriato della risorsa App Mesh che rappresenta. Se la tua risorsa App Mesh è integrata con altre AWS risorse, come AWS Cloud Map namespace o certificati ACM, assicurati che tali risorse esistano.
7 Il proxy Envoy non è autorizzato a eseguire un'azione, ad esempio connettersi al servizio di gestione Envoy o recuperare le risorse associate. Assicurati di creare una policy IAM contenente le dichiarazioni politiche appropriate per App Mesh e altri servizi e di allegare tale policy all'utente o al ruolo IAM utilizzato dal proxy Envoy per connettersi al servizio di gestione Envoy.
8 Il numero di proxy Envoy per una determinata risorsa App Mesh supera la quota di servizio a livello di account. Quote del servizio App MeshPer informazioni sulle quote predefinite degli account e su come richiedere un aumento della quota, consulta.
16 Il proxy Envoy non dispone di credenziali di autenticazione valide per. AWS Assicurati che Envoy disponga delle credenziali appropriate per connettersi ai AWS servizi tramite un utente o un ruolo IAM. Un problema noto, #24136, nella versione precedente v1.24 di Envoy non riesce a recuperare le credenziali se il processo Envoy utilizza più descrittori di file. 1024 Ciò accade quando Envoy serve un volume di traffico elevato. Puoi confermare questo problema controllando i log di Envoy a livello di debug per il testo "». A libcurl function was given a bad argument Per ovviare a questo problema, esegui l'upgrade alla versione Envoy o successiva. v1.25.1.0-prod

Puoi osservare i codici di stato e i messaggi del tuo proxy Envoy con Amazon CloudWatch Insights utilizzando la seguente query:

filter @message like /gRPC config stream closed/ | parse @message "gRPC config stream closed: *, *" as StatusCode, Message

Se il messaggio di errore fornito non è stato utile o il problema non è stato ancora risolto, valuta la possibilità di aprirne uno GitHub .

Errore nella verifica dello stato di salute del container Envoy, nella sonda di disponibilità o nella sonda di vivacità

Caratteristiche

Il proxy Envoy non supera i controlli di integrità in un'attività Amazon ECS, un'istanza Amazon EC2 o un pod Kubernetes. Ad esempio, interroghi l'interfaccia di amministrazione di Envoy con il seguente comando e ricevi uno stato diverso da. LIVE

curl -s http://my-app.default.svc.cluster.local:9901/server_info | jq '.state'
Risoluzione

Di seguito è riportato un elenco di passaggi di riparazione in base allo stato restituito dal proxy Envoy.

  • PRE_INITIALIZINGoppureINITIALIZING: il proxy Envoy non ha ancora ricevuto la configurazione o non è in grado di connettersi e recuperare la configurazione dal servizio di gestione App Mesh Envoy. L'Envoy potrebbe ricevere un errore dal servizio di gestione Envoy durante il tentativo di connessione. Per ulteriori informazioni, consulta gli errori in. Envoy si è disconnesso dal servizio di gestione App Mesh Envoy con un testo di errore

  • DRAINING— Il proxy Envoy ha iniziato a consumare le connessioni in risposta a una /drain_listeners richiesta /healthcheck/fail o sull'interfaccia di amministrazione di Envoy. Non è consigliabile richiamare questi percorsi sull'interfaccia di amministrazione a meno che non si stia per terminare l'attività Amazon ECS, l'istanza Amazon EC2 o il pod Kubernetes.

Se il problema persiste, valuta la possibilità di aprirne uno o contatta l'assistenza. GitHub AWS

Il controllo dello stato dal load balancer all'endpoint mesh non è riuscito

Caratteristiche

L'endpoint mesh è considerato integro dal controllo dello stato del container o dalla sonda di prontezza, ma il controllo dello stato dal load balancer all'endpoint mesh non riesce.

Risoluzione

Per risolvere il problema, completate le seguenti attività.

  • Assicurati che il gruppo di sicurezza associato al tuo endpoint mesh accetti il traffico in entrata sulla porta che hai configurato per il controllo dello stato.

  • Assicurati che il controllo dello stato abbia esito positivo in modo coerente se richiesto manualmente, ad esempio da un bastion host all'interno del tuo VPC.

  • Se stai configurando un controllo dello stato di salute per un nodo virtuale, ti consigliamo di implementare un endpoint di controllo dello stato nella tua applicazione; ad esempio, /ping per HTTP. Ciò garantisce che sia il proxy Envoy che l'applicazione siano instradabili dal load balancer.

  • È possibile utilizzare qualsiasi tipo di bilanciamento del carico elastico per il nodo virtuale, a seconda delle funzionalità necessarie. Per ulteriori informazioni, consulta le funzionalità di Elastic Load Balancing.

  • Se stai configurando un controllo dello stato di un gateway virtuale, ti consigliamo di utilizzare un network load balancer con un controllo dello stato TCP o TLS sulla porta listener del gateway virtuale. Ciò garantisce che il listener del gateway virtuale sia avviato e pronto ad accettare connessioni.

Se il problema persiste, valuta la possibilità di aprirne uno o contatta l'GitHub assistenza. AWS

Il gateway virtuale non accetta traffico sulle porte 1024 o inferiori

Caratteristiche

Il gateway virtuale non accetta traffico sulla porta 1024 o inferiore, ma accetta traffico su un numero di porta superiore a 1024. Ad esempio, interroghi le statistiche di Envoy con il seguente comando e ricevi un valore diverso da zero.

curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "update_rejected"

Potresti vedere un testo simile al seguente nei tuoi log che descrive un errore nel collegamento a una porta privilegiata:

gRPC config for type.googleapis.com/envoy.api.v2.Listener rejected: Error adding/updating listener(s) lds_ingress_0.0.0.0_port_<port num>: cannot bind '0.0.0.0:<port num>': Permission denied
Risoluzione

Per risolvere il problema, l'utente specificato per il gateway deve disporre della funzionalità linux. CAP_NET_BIND_SERVICE Per ulteriori informazioni, consulta Funzionalità nel Manuale del programmatore Linux, Parametri Linux nei parametri di definizione delle attività ECS e Impostazione delle funzionalità per un contenitore nella documentazione di Kubernetes.

Importante

Fargate deve utilizzare un valore di porta maggiore di 1024.

Se il problema persiste, valuta la possibilità di aprirlo o contatta AWS l'assistenza. GitHub