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 App Mesh
Questo argomento descrive i problemi più comuni che potresti riscontrare con la configurazione di App Mesh.
Impossibile estrarre l'immagine del contenitore Envoy
Sintomi
Riceverai il seguente messaggio di errore in un'attività Amazon ECS. L'Amazon ECRID account
eRegione
il messaggio seguente potrebbe essere diverso, 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 è in grado di estrarre l'immagine del contenitore Envoy dal repository. Il ruolo di esecuzione dell'attività assegnato alla tua attività Amazon ECS richiede una politica 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 aprire unGitHubproblema
Impossibile connettersi al servizio di gestione App Mesh Envoy
Sintomi
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 durante la 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 una rete privataEndpoint VPCe che il tuogruppi di sicurezzaconsentire 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. Questo invia 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, vedere gli errori inEnvoy si è disconnesso dal servizio di gestione App Mesh Envoy con un testo di errore.
grpc-status: 16 grpc-message: Missing Authentication Token
Se il problema persiste, valuta la possibilità di aprire unGitHubproblema
Envoy si è disconnesso dal servizio di gestione App Mesh Envoy con testo di errore
Sintomi
Il tuo 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 simile alla 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 stato gRPC più comuni che potresti vedere, le loro cause e le relative risoluzioni.
Codice di stato gRPC | Causa | Risoluzione |
---|---|---|
0 |
Graziosa disconnessione dal servizio di gestione Envoy. | Non c'è nessun problema. App Mesh di tanto in tanto disconnette i proxy Envoy con questo codice di stato. Envoy si ricollegherà e continuerà a ricevere aggiornamenti. |
3 |
Impossibile trovare l'endpoint mesh (nodo virtuale o gateway virtuale) o una delle risorse associate. | 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 altreAWSrisorse, ad esempioAWS Cloud Mapnamespace o certificati ACM, quindi 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 che tucreare una policy IAMche contiene le dichiarazioni politiche appropriate per App Mesh e altri servizi e allega tale politica 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. | VediQuotazioni di App Mesh Controllerper informazioni sulle quote predefinite dell'account e su come richiedere un aumento della quota. |
16 |
Il proxy Envoy non dispone di credenziali di autenticazione valide perAWS. | Assicurati che l'Envoy disponga delle credenziali appropriate a cui connettersiAWSservizi tramite un utente o un ruolo IAM. Un problema noto,#24136v1.24 e prima non riesce a recuperare le credenziali se il processo Envoy usa over1024 descrittori di file. Questo 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'upgrade alla versione Envoyv1.25.1.0-prod o più tardi. |
Puoi osservare i codici di stato e i messaggi del tuo proxy Envoy conAmazonCloudWatchapprofondimentiutilizzando la seguente interrogazione:
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 unGitHubproblema
Errore del controllo dello stato del container, della sonda di disponibilità o della sonda di vivacità dell'invio
Sintomi
Il tuo proxy Envoy non supera i controlli di integrità in un'attività Amazon ECS, in un'istanza Amazon EC2 o in un pod Kubernetes. Ad esempio, si interroga l'interfaccia di amministrazione di Envoy con il seguente comando e si riceve uno stato diverso daLIVE
.
curl -s http://my-app.default.svc.cluster.local
:9901
/server_info | jq '.state'
Risoluzione
Di seguito è riportato un elenco di passaggi di correzione a seconda dello stato restituito dal proxy Envoy.
-
PRE_INITIALIZING
oINITIALIZING
— 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, vedere gli errori inEnvoy si è disconnesso dal servizio di gestione App Mesh Envoy con testo di errore. -
DRAINING
— Il proxy Envoy ha iniziato a svuotare le connessioni in risposta a un/healthcheck/fail
o/drain_listeners
richiesta sull'interfaccia di amministrazione di Envoy. Ti consigliamo di non invocare questi percorsi nell'interfaccia di amministrazione a meno che tu non stia per terminare l'attività Amazon ECS, l'istanza Amazon EC2 o il pod Kubernetes.
Se il problema persiste, valuta la possibilità di aprire unGitHubproblema
Il controllo dello stato dal sistema di bilanciamento del carico all'endpoint mesh non è riuscito
Sintomi
L'endpoint mesh è considerato integro dal controllo dello stato del contenitore o dalla sonda di idoneità, ma il controllo dello stato dal sistema di bilanciamento del carico all'endpoint mesh ha esito negativo.
Risoluzione
Per risolvere il problema, completa le seguenti attività.
-
Assicurati chegruppo di sicurezzaassociato al tuo endpoint mesh accetta il traffico in entrata sulla porta che hai configurato per il controllo dello stato.
-
Assicurati che il controllo dello stato di salute abbia esito positivo in modo coerente quando richiesto manualmente; ad esempio, da unbastion host all'interno del tuo VPC
. -
Se stai configurando un controllo dello stato 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 indirizzabili dal load balancer.
-
È possibile utilizzare qualsiasi tipo di sistema di bilanciamento del carico elastico per il nodo virtuale, a seconda delle funzionalità necessarie. Per ulteriori informazioni, vedereFunzionalità di Elastic Load Balancing
. -
Se si sta configurando un controllo dello stato di salute per ungateway virtuale, quindi consigliamo di utilizzare unsistema di bilanciamento del carico di retecon 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 aprire unGitHubproblema
Il gateway virtuale non accetta traffico sulle porte 1024 o meno
Sintomi
Il gateway virtuale non accetta traffico sulla porta 1024 o inferiore, ma accetta traffico su un numero di porta maggiore di 1024. Ad esempio, interroghi Envoy stats 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 testo seguente nei tuoi log 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à linuxCAP_NET_BIND_SERVICE
. Per ulteriori informazioni, vedereCapacità
Importante
Fargate deve utilizzare un valore di porta superiore a 1024.
Se il problema persiste, valuta la possibilità di aprire unGitHubproblema