Risoluzione dei problemi relativi alla 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 relativi alla configurazione di App Mesh

Importante

Avviso di fine del supporto: il 30 settembre 2026, AWS verrà interrotto 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 potrebbero verificarsi con la configurazione di App Mesh.

Impossibile recuperare l'immagine del contenitore Envoy

Caratteristiche

Riceverai il seguente messaggio di errore in un'ECSattività Amazon. L'Amazon ECR account ID e Region nel messaggio seguente potrebbe essere diverso, a seconda del ECR repository Amazon 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 dispone dell'autorizzazione per comunicare con Amazon ECR e non può estrarre l'immagine del contenitore Envoy dal repository. Il ruolo di esecuzione dell'attività assegnato alla tua ECS attività Amazon richiede una IAM politica 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 di contattare l'AWS assistenza.

Impossibile connettersi al servizio di gestione App Mesh Envoy

Caratteristiche

Il 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

  • g errori RPC

Risoluzione

Assicurati che il tuo proxy Envoy abbia accesso a Internet o a un VPCendpoint privato e che i tuoi gruppi di sicurezza consentano il traffico in uscita sulla porta 443. Gli endpoint del servizio di gestione Envoy pubblico 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

Puoi eseguire il debug della tua connessione EMS utilizzando il comando seguente. Questo invia una RPC richiesta g 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 all'Envoy Management Service è funzionante. Per il debug degli errori RPC relativi a g, 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 di contattare l'AWS assistenza.

Envoy disconnesso dal servizio di gestione App Mesh Envoy con 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 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 relativa ai messaggi dovrebbe indicare il problema. La tabella seguente elenca i codici di RPC stato g più comuni che è possibile visualizzare, le relative cause e le relative risoluzioni.

g) codice RPC di stato Causa Risoluzione
0 Graceful disconnect dal servizio di gestione Envoy. Non c'è nessun problema. App Mesh disconnette occasionalmente 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 ACM certificati, assicurati che tali risorse esistano.
7 Il proxy Envoy non è autorizzato a eseguire un'azione, come connettersi al servizio di gestione Envoy o recuperare le risorse associate. Assicurati di creare una IAM politica che contenga le dichiarazioni politiche appropriate per App Mesh e altri servizi e di allegare tale politica all'IAMutente o al ruolo che il proxy Envoy utilizza per connettersi al servizio di gestione di Envoy.
8 Il numero di proxy Envoy per una determinata risorsa App Mesh supera la quota di servizio a livello di account. Vedi Quote del servizio App Mesh per informazioni sulle quote predefinite degli account e su come richiedere un aumento della quota.
16 Il proxy Envoy non dispone di credenziali di autenticazione valide per. AWS Assicurati che l'Envoy disponga delle credenziali appropriate per connettersi ai AWS servizi tramite un utente o un ruolo. IAM Un problema noto, #24136, in Envoy per le versioni v1.24 e precedenti 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 mitigare questo problema, esegui l'aggiornamento alla versione di 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 persiste, valuta la possibilità di aprire un GitHub problema.

Controllo dello stato del container Envoy, sonda di prontezza o sonda di vivacità guasto

Caratteristiche

Il tuo proxy Envoy non supera i controlli di integrità in un'attività AmazonECS, un'EC2istanza Amazon 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_INITIALIZINGoppure INITIALIZING — Il proxy Envoy non ha ancora ricevuto la configurazione o non può connettersi e recuperare la configurazione dal servizio di gestione App Mesh Envoy. È possibile che Envoy riceva un errore dal servizio di gestione di Envoy durante il tentativo di connessione. Per ulteriori informazioni, consulta gli errori in. Envoy disconnesso dal servizio di gestione App Mesh Envoy con testo di errore

  • DRAINING— Il proxy Envoy ha iniziato a prosciugare le connessioni in risposta a una /drain_listeners richiesta /healthcheck/fail or sull'interfaccia di amministrazione di Envoy. Non consigliamo di richiamare questi percorsi sull'interfaccia di amministrazione a meno che tu non stia per terminare l'ECSattività Amazon, l'EC2istanza Amazon o il pod Kubernetes.

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

Il controllo dell'integrità dal load balancer all'endpoint mesh non riesce

Caratteristiche

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

Risoluzione

Per risolvere il problema, completa 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 di integrità abbia esito positivo in modo costante quando richiesto manualmente, ad esempio da un host bastion interno al 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 for. HTTP Ciò garantisce che sia il proxy Envoy che l'applicazione siano instradabili dal sistema di bilanciamento del carico.

  • È 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 salute per un gateway virtuale, ti consigliamo di utilizzare un sistema di bilanciamento del carico di rete con un TCP controllo dello TLS stato della 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 GitHub o di contattare l'AWS assistenza.

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 maggiore di 1024. Ad esempio, si interrogano le statistiche di Envoy con il seguente comando e si riceve un valore diverso da zero.

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

Nei log potresti visualizzare un testo simile al seguente che descrive un errore di associazione 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 in Parametri di definizione delle ECS attività 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 aprirne uno GitHub o di contattare l'AWS assistenza.