Auf dieser Seite wird beschrieben, wie Sie Probleme auf den Anthos Service Mesh-Seiten in der Google Cloud Console beheben.
In der Dienstliste fehlt ein bestimmter Dienst.
Prüfen Sie, ob eine Kubernetes-Dienstkonfiguration in Ihrem Cluster vorhanden ist, wenn ein Dienst in der Liste fehlt.
So rufen Sie eine Liste aller Kubernetes-Dienste ab:
kubectl get services --all-namespaces
So rufen Sie eine Liste der Kubernetes-Dienste in einem bestimmten Namespace ab:
kubectl get services -n YOUR_NAMESPACE
Fehlende oder falsche Telemetriedaten für Dienste
Standardmäßig sind Cloud Monitoring und Cloud Logging in Ihrem Google Cloud-Projekt aktiviert, wenn Sie Anthos Service Mesh installieren. Zur Erhebung von Telemetriedaten ruft jeder in Ihre Dienst-Pods eingefügte Sidecar-Proxy die Cloud Monitoring API und die Cloud Logging API auf. Nach der Bereitstellung der Arbeitslasten dauert es etwa ein bis zwei Minuten, bis die Telemetriedaten in der Google Cloud Console angezeigt werden. Anthos Service Mesh hält die Dienst-Dashboards automatisch auf dem neuesten Stand:
Die Sidecar-Proxys rufen ungefähr jede Minute Messwerte von der Cloud Monitoring API ab.
Zur Aktualisierung des Topologiediagramms senden die Sidecar-Proxys etwa jede Minute inkrementelle Berichte und etwa alle 10 Minuten vollständige Berichte.
Für das Logging rufen die Sidecar-Proxys etwa alle 10 Sekunden die Cloud Logging API auf.
Für das Tracing müssen Sie Cloud Trace aktivieren. Traces werden gemäß der von Ihnen konfigurierten Stichprobenhäufigkeit (normalerweise eine Stichprobe alle 100 Anfragen) gemeldet.
Messwerte werden nur für HTTP-Dienste auf der Seite mit Anthos Service Mesh-Messwerten angezeigt. Wenn Sie keine Messwerte sehen, prüfen Sie Folgendes:
Prüfen Sie, ob Sidecar-Proxys eingefügt wurden.
Prüfen Sie, ob in alle Pods im Namespace für die Dienste Ihrer Anwendung Sidecar-Proxys eingefügt wurden:
kubectl get pod -n YOUR_NAMESPACE --all
In der folgenden Beispielausgabe des vorherigen Befehls sehen Sie, dass die Spalte READY
zwei Container für jede Ihrer Arbeitslasten enthält: den primären Container und den Container für den Sidecar-Proxy.
NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Wenn Sie keine zwei Container sehen, prüfen Sie, ob Ihr Namespace das Label istio-injection=enabled
hat. Das weist darauf hin, dass die automatische Sidecar-Einfügung aktiviert ist:
kubectl get ns --show-labels
Beispielausgabe:
NAME STATUS AGE LABELS default Active 35m istio-injection=enabled istio-system Active 34m istio-injection=disabled,istio-operator-managed=Reconcile
Wenn Sie das Label
istio-injection=enabled
nicht sehen, führen Sie den folgenden Befehl aus, um die automatische Sidecar-Einfügung zu aktivieren:kubectl label namespace YOUR_NAMESPACE istio-injection=enabled --overwrite
Wenn das Label
istio-injection=enabled
angezeigt wird und Anthos Service Mesh auf einem vorhandenen Google Kubernetes Engine-Cluster installiert wurde, in dem Arbeitslasten vorhanden waren, müssen Sie alle ausgeführten Pods neu starten, damit der Sidecar-Proxy eingefügt oder auf die aktuelle Anthos Service Mesh-Version aktualisiert wird. Weitere Informationen finden Sie unter Sidecar-Dateien für vorhandene Pods aktualisieren.
Prüfen Sie die Portnamen des Kubernetes-Diensts.
Prüfen Sie die Portnamen des Kubernetes-Diensts, um festzustellen, ob Anthos Service Mesh den Dienst als HTTP-Dienst betrachtet. Damit die Dienstports in Anthos Service Mesh enthalten sind, müssen sie benannt werden und der Name muss das Protokoll des Ports enthalten. Beispiel:
apiVersion: v1 kind: Service metadata: name: ratings labels: app: ratings service: ratings spec: ports: - port: 9080 name: http
Der Portname des Diensts kann ein Suffix in der Syntax name: protocol[-suffix]
enthalten, wobei mit den eckigen Klammern ein optionales Suffix angegeben wird, das mit einem Bindestrich beginnen muss. Beispiel:
kind: Service metadata: name: myservice spec: ports: - number: 3306 name: mysql - number: 80 name: http-web
Damit die Messwerte in der Google Cloud Console angezeigt werden, müssen die Dienstports mit einem der folgenden Protokolle benannt werden: http
, http2
oder grpc
.
Dienstports mit dem https
-Protokoll im Namen werden als tcp
behandelt. Für diese Dienste werden keine Messwerte angezeigt.
Prüfen Sie, ob die erforderlichen APIs aktiviert sind.
Anthos Service Mesh benötigt mehrere APIs für die Berichterstellung und Anzeige von Telemetrie.
Mit dem Befehl gcloud services list
können Sie sehen, welche APIs für Ihr Projekt aktiviert sind, oder Sie können einfach zur Sicherheit alle erforderlichen APIs aktivieren.
Legen Sie das Standardprojekt für die Google Cloud CLI fest:
gcloud config set project
YOUR_PROJECT_ID
Aktivieren Sie alle erforderlichen APIs:
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
Prüfen Sie, ob das ASM Mesh Data Plane-Dienstkonto vorhanden ist.
Öffnen Sie in der Google Cloud Console die Seite „IAM“:
Wählen Sie Ihr Projekt aus.
Suchen Sie in der Mitgliederliste nach einem Dienstkonto mit dem Namen ASM Mesh Data Plane-Dienstkonto.
Wenn das Dienstkonto fehlt, erstellen Sie es:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ https://meshconfig.googleapis.com/v1alpha1/projects/YOUR_PROJECT_ID:initialize
Prüfen, ob Ihre Arbeitslasten ausgeführt werden
Öffnen Sie die Seite GKE-Arbeitslasten in der Google Cloud Console:
Wählen Sie Ihr Projekt aus.
Fügen Sie Ihrem Cluster einen Filter hinzu. Prüfen Sie, ob alle Arbeitslasten für Ihre Anwendung und Anthos Service Mesh ausgeführt werden und den Status
OK
haben. Eine Arbeitslast kann aufgrund von begrenzten Ressourcen (CPU, Arbeitsspeicher usw.) fehlschlagen. In diesem Fall müssen Sie Ihren Cluster aktualisieren und ihm mehr Ressourcen zuteilen. Weitere Informationen finden Sie unter Größe eines Clusters anpassen.
Prüfen, ob die Anwendung Anfragen verarbeitet
Prüfen Sie, ob die Anwendung aktuell Anfragen verarbeitet. Der QPS-Wert kann niedrig sein, aber sie sollte Traffic empfangen.
Das Topologiediagramm ist leer.
Wenn Ihre Dienste nicht im Topologiediagramm angezeigt werden und dort die Fehlermeldung No data available to graph. Check your filters and try again
angezeigt wird, prüfen Sie Folgendes:
Prüfen Sie die Mesh-ID.
Prüfen Sie, ob der Cluster das richtige mesh_id
-Label hat:
Rufen Sie die Projektnummer ab. Dies ist eine eindeutige Nummer, die beim Erstellen eines Projekts automatisch generiert wird.
Achten Sie darauf, dass der Cluster das Label
mesh_id
im folgenden Format hat:mesh_id: proj-PROJECT_NUMBER
Ergänzen Sie das
mesh_id
-Label bzw. korrigieren Sie es, wenn es fehlt oder falsch ist. Weitere Informationen finden Sie unter Labels nachträglich Clustern hinzufügen oder aktualisieren.Legen Sie die folgenden Umgebungsvariablen fest:
Legen Sie die Projekt-ID fest:
export PROJECT_ID=
YOUR_PROJECT_ID
Legen Sie die Projektnummer fest:
export PROJECT_NUMBER=YOUR_PROJECT_NUMBER
Legen Sie den Clusternamen fest:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Legen Sie
CLUSTER_LOCATION
entweder auf Ihre Clusterzone oder Clusterregion fest:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Legen Sie den Arbeitslastpool fest:
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
Legen Sie die Mesh-ID fest:
export MESH_ID="proj-${PROJECT_NUMBER}"
Stellen Sie Anthos Service Mesh noch einmal bereit und verwenden Sie dabei dieselben Optionen wie zuvor.
Für alle Arbeitslasten, die vor der Installation von Anthos Service Mesh auf Ihrem Cluster ausgeführt wurden, muss der Sidecar-Proxy aktualisiert werden, damit sie die aktuelle Anthos Service Mesh-Version haben.
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE