Version 1.9

Probleme mit der VM-Unterstützung in Anthos Service Mesh beheben

Die folgenden Schritte und Logs sind hilfreich, um Probleme mit der VM-Unterstützung in Anthos Service Mesh zu beheben.

VM debuggen

Wenn Sie feststellen, dass VM-Instanzen ausgeführt, aber nicht über das Mesh-Netzwerk erreichbar sind, führen Sie die folgenden Schritte auf der VM-Instanz aus.

Agent prüfen

  1. Prüfen Sie den Status des Envoy-Proxys:

    curl localhost:15000/ready -v
    
  2. Prüfen Sie das Envoy-Fehlerlog.

    less /var/log/envoy/envoy.err.log
    
  3. Prüfen Sie, ob service-proxy-agent-Fehler vorliegen:

    journalctl -u service-proxy-agent
    
  4. Prüfen Sie das syslog in den Logs der Operations Suite von Google Cloud für die Instanz oder auf der VM unter /var/log/syslog.

Proxystatus prüfen

  1. Führen Sie den folgenden Befehl auf der VM aus, um Fehler in der Konfiguration des Proxys zu beheben:

    curl localhost:15000/config_dump > config.out
    
  2. Kopieren Sie diese Datei und führen Sie den folgenden Befehl aus:

    istioctl proxy-config [cluster|route|listener] --file config.out
    

Ungültiges Token – Fehler

Möglicherweise sehen Sie im Envoy-Fehlerlog einen Fehler wie diesen:

E0217 17:59:17.206995798    2411 oauth2_credentials.cc:152]  Call to http server ended with error 500 [{
  "error": "invalid_target",
  "error_description": "federated token response does not have access token. {\"error\":\"invalid_grant\",\"error_description\":\"JWT expired.\"}",
  "error_uri": ""
}].

Prüfen Sie in diesem Fall, ob das Token in /var/run/secrets/tokens/istio-token auf der VM abgelaufen ist und vergewissern Sie sich, dass der Wert für exp (Epochensekunden) nicht abgelaufen ist:

cat /var/run/secrets/tokens/istio-token | cut -d '.' -f2 | base64 -d | python -m json.tool
{
    ...
    "azp": "...",
    "email": "example-service-account@developer.gserviceaccount.com",
    "email_verified": true,
    "exp": 1613995395,
    "google": {
        "compute_engine": {
            "instance_creation_timestamp": 1613775765,
            "instance_id": "5678",
            "instance_name": "vm-instance-03-0mqh",
            "project_id": "...",
            "project_number": 1234,
            "zone": "us-central1-c"
        }
    },
    "iat": ...,
    "iss": "https://accounts.google.com",
    "sub": "..."
}

Cluster debuggen

Führen Sie die folgenden Schritte aus, um Probleme mit dem Cluster zu beheben.

Prüfen, ob die automatische Registrierung funktioniert

  1. Klicken Sie auf das Kästchen WorkloadEntry, das istiod automatisch generiert:

    kubectl get workloadentry -n WORKLOAD_NAMESPACE
    

    Darüber hinaus können Sie prüfen, ob der Kubernetes-Objektbrowser vorhanden ist.

  2. Ist er nicht vorhanden ist, suchen Sie in den istiod-Logs nach Fehlern, die Ihnen in der Operations-Suite von Google Cloud zur Verfügung stehen sollten. Alternativ können Sie sie direkt abrufen:

    kubectl -n istio-system get pods -l app=istiod
    

    Die erwartete Ausgabe sieht in etwa so aus:

    NAME                                       READY   STATUS    RESTARTS   AGE
    istiod-asm-190-1-7f6699cfb-5mzxw           1/1     Running   0          5d13h
    istiod-asm-190-1-7f6699cfb-pgvpf           1/1     Running   0          5d13h
    
  3. Legen Sie die Pod-Umgebungsvariable fest und verwenden Sie sie zum Exportieren der Logs:

    export ISTIO_POD=istiod-asm-190-1-7f6699cfb-5mzxw
    kubectl logs -n istio-system {ISTIO_POD} | grep -i 'auto-register\|WorkloadEntry
    

Verbundene Proxys prüfen

Mit dem Befehl proxy-status können Sie alle verbundenen Proxys auflisten, einschließlich derjenigen für VMs:

istioctl proxy-status

Die Ausgabe sollte verbundene Proxys ähnlich den folgenden enthalten:

NAME                                                    CDS        LDS        EDS        RDS          ISTIOD                               VERSION
details-v1-5f449bdbb9-bhl8d.default                     SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-5mzxw     1.9.0-asm.1
httpbin-779c54bf49-647vd.default                        SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-pgvpf     1.9.0-asm.1
istio-eastwestgateway-5b6d4ddd9d-5rzx2.istio-system     SYNCED     SYNCED     SYNCED     NOT SENT     istiod-asm-190-1-7f6699cfb-pgvpf     1.9.0-asm.1
istio-ingressgateway-66b6ddd7cb-ctb6b.istio-system      SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-pgvpf     1.9.0-asm.1
istio-ingressgateway-66b6ddd7cb-vk4bb.istio-system      SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-5mzxw     1.9.0-asm.1
vm-instance-03-39b3.496270428946                        SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-pgvpf     1.9.0
vm-instance-03-nh5k.496270428946                        SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-pgvpf     1.9.0
vm-instance-03-s4nl.496270428946                        SYNCED     SYNCED     SYNCED     SYNCED       istiod-asm-190-1-7f6699cfb-5mzxw     1.9.0

Weitere Informationen zu den Befehlsoptionen finden Sie unter istioctl proxy-config.

Anleitung zur Fehlerbehebung bei Istio-VMs

Weitere Schritte zur Fehlerbehebung finden Sie unter Virtuelle Maschinen debuggen.