Questa pagina descrive come risolvere i problemi nelle pagine Anthos Service Mesh nella console Google Cloud.
Nell'elenco dei servizi manca un servizio specifico
Se un servizio non è presente nell'elenco, verifica che nel cluster esista una configurazione del servizio Kubernetes.
Per ottenere un elenco di tutti i servizi Kubernetes:
kubectl get services --all-namespaces
Per ottenere un elenco dei servizi Kubernetes in uno spazio dei nomi specifico:
kubectl get services -n YOUR_NAMESPACE
Dati di telemetria mancanti o errati per i servizi
Per impostazione predefinita, Cloud Monitoring e Cloud Logging sono abilitati nel progetto Google Cloud quando installi Anthos Service Mesh. Per segnalare i dati di telemetria, ogni proxy sidecar inserito nei pod di servizio chiama l'API Cloud Monitoring e l'API Cloud Logging. Dopo il deployment dei carichi di lavoro, sono necessari circa uno o due minuti per visualizzare i dati di telemetria nella console Google Cloud. Anthos Service Mesh mantiene automaticamente aggiornate le dashboard dei servizi:
Per le metriche, i proxy sidecar chiamano l'API Cloud Monitoring all'incirca ogni minuto.
Per aggiornare il grafico della topologia, i proxy sidecar inviano report incrementali circa ogni minuto e report completi ogni dieci minuti.
Per il logging, i proxy sidecar chiamano l'API Cloud Logging circa ogni dieci secondi.
Per il tracciamento, devi abilitare Cloud Trace. Le tracce vengono segnalate in base alla frequenza di campionamento configurata (in genere una su 100 richieste).
Le metriche vengono visualizzate solo per i servizi HTTP nella pagina Metriche di Anthos Service Mesh. Se non vedi metriche, verifica quanto segue:
Verifica che i proxy sidecar siano stati inseriti
Verifica che in tutti i pod nello spazio dei nomi per i servizi della tua applicazione siano stati inseriti proxy sidecar:
kubectl get pod -n YOUR_NAMESPACE --all
Nel seguente esempio di output del comando precedente, puoi notare che la colonna READY
indica che esistono due container per ciascuno dei tuoi carichi di lavoro: il container principale e il container per il proxy sidecar.
NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Se non vedi due container, controlla se lo spazio dei nomi ha l'etichetta istio-injection=enabled
, che indica che l'inserimento automatico di file collaterali è abilitato:
kubectl get ns --show-labels
Output di esempio:
NAME STATUS AGE LABELS default Active 35m istio-injection=enabled istio-system Active 34m istio-injection=disabled,istio-operator-managed=Reconcile
Se non vedi l'etichetta
istio-injection=enabled
, esegui questo comando per abilitare l'inserimento automatico di file collaterali:kubectl label namespace YOUR_NAMESPACE istio-injection=enabled --overwrite
Se vedi l'etichetta
istio-injection=enabled
e hai installato Anthos Service Mesh su un cluster Google Kubernetes Engine esistente su cui erano presenti carichi di lavoro, devi riavviare tutti i pod in esecuzione per inserire o aggiornare il proxy sidecar con la versione attuale di Anthos Service Mesh. Per ulteriori informazioni, consulta Aggiornamento di file collaterali per i pod esistenti.
Verificare i nomi delle porte di servizio Kubernetes
Controlla i nomi delle porte del servizio Kubernetes per verificare che Anthos Service Mesh consideri il servizio un servizio HTTP. Per essere incluse in Anthos Service Mesh, è necessario assegnare un nome alle porte dei servizi, che devono includere il protocollo della porta, ad esempio:
apiVersion: v1 kind: Service metadata: name: ratings labels: app: ratings service: ratings spec: ports: - port: 9080 name: http
Il nome della porta del servizio può includere un suffisso nella seguente sintassi:
name: protocol[-suffix]
dove le parentesi quadre indicano un suffisso facoltativo che deve iniziare con un
trattino, ad esempio:
kind: Service metadata: name: myservice spec: ports: - number: 3306 name: mysql - number: 80 name: http-web
Affinché le metriche vengano visualizzate nella console Google Cloud, le porte di servizio devono essere denominate con uno dei seguenti protocolli: http
, http2
o grpc
.
Le porte di servizio denominate con il protocollo https
vengono trattate come tcp
e le metriche per questi servizi non vengono visualizzate.
Verifica che le API richieste siano abilitate
Anthos Service Mesh richiede diverse API per la generazione di report e la visualizzazione della telemetria.
Puoi vedere quali API sono abilitate per il tuo progetto utilizzando il comando gcloud services list
oppure puoi semplicemente abilitare tutte le API richieste per assicurarti di riceverle tutte.
Imposta il progetto predefinito per Google Cloud CLI:
gcloud config set project
YOUR_PROJECT_ID
Abilita tutte le API richieste:
gcloud services enable \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ anthos.googleapis.com
Verifica che l'account di servizio del piano dati mesh ASM esista
Nella console Google Cloud, apri la pagina IAM:
Seleziona il progetto.
Nell'elenco dei membri, cerca un account di servizio con il nome ASM Mesh Data Plane Service Account.
Se manca l'account di servizio, crealo:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ https://meshconfig.googleapis.com/v1alpha1/projects/YOUR_PROJECT_ID:initialize
Verifica che i carichi di lavoro siano in esecuzione
Nella console Google Cloud, apri la pagina Carichi di lavoro di GKE:
Seleziona il progetto.
Aggiungi un filtro per il cluster. Verifica che tutti i carichi di lavoro per la tua applicazione e Anthos Service Mesh siano in esecuzione con stato
OK
. Un carico di lavoro potrebbe non riuscire a causa delle risorse limitate (CPU, memoria e così via), nel qual caso devi eseguire l'upgrade del cluster con più risorse. Consulta Ridimensionamento di un cluster per ulteriori informazioni.
Verificare che l'applicazione stia gestendo le richieste
Verifica che la tua applicazione stia gestendo effettivamente le richieste. Il valore QPS può essere basso, ma dovrebbe ricevere traffico.
Il grafico della topologia è vuoto
Se il grafico della topologia non mostra i tuoi servizi e mostra il messaggio di errore No data available to graph. Check your filters and try again
, verifica quanto segue:
Verificare l'ID mesh
Verifica che il cluster abbia l'etichetta mesh_id
corretta:
Recupera il numero di progetto, ovvero un numero univoco generato automaticamente quando crei il progetto.
Assicurati che il cluster abbia un'etichetta
mesh_id
nel seguente formato:mesh_id: proj-PROJECT_NUMBER
Correggi l'etichetta
mesh_id
se mancante o errata. Per maggiori informazioni, consulta Aggiunta o aggiornamento di etichette per i cluster esistenti.Imposta le seguenti variabili di ambiente:
Imposta l'ID progetto:
export PROJECT_ID=
YOUR_PROJECT_ID
Imposta il numero del progetto:
export PROJECT_NUMBER=YOUR_PROJECT_NUMBER
Imposta il nome del cluster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Imposta
CLUSTER_LOCATION
sulla zona o sulla regione del cluster:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Imposta il pool di carichi di lavoro:
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
Imposta l'ID mesh:
export MESH_ID="proj-${PROJECT_NUMBER}"
Esegui di nuovo il deployment di Anthos Service Mesh con le stesse opzioni che hai utilizzato in precedenza.
Tutti i carichi di lavoro in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh devono avere il proxy sidecar aggiornato in modo che abbiano l'attuale Anthos Service Mesh.
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE