Version 1.9 :

Résoudre les problèmes d'assistance des VM dans Anthos Service Mesh

Les étapes et journaux suivants sont utiles pour résoudre les problèmes liés à la compatibilité des VM Anthos Service Mesh.

Déboguer la VM

Si vous constatez que des instances de VM sont en cours d'exécution, mais ne sont pas accessibles depuis le maillage, procédez comme suit sur l'instance de VM.

Vérifier l'agent

  1. Vérifiez l'état du proxy Envoy:

    curl localhost:15000/ready -v
    
  2. Consulter le journal d'erreurs d'envoy

    less /var/log/envoy/envoy.err.log
    
  3. Vérifiez si des erreurs service-proxy-agent se produisent :

    journalctl -u service-proxy-agent
    
  4. Vérifiez le syslog dans les journaux de la suite des opérations Google Cloud pour l'instance ou sur la VM sous /var/log/syslog.

Vérifier l'état du proxy

  1. Pour déboguer la configuration du proxy, exécutez la commande suivante sur la VM:

    curl localhost:15000/config_dump > config.out
    
  2. Copiez ce fichier et exécutez la commande suivante:

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

Erreurs de jeton non valides

Une erreur semblable à la suivante peut s'afficher dans le journal des erreurs d'envoy:

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": ""
}].

Dans ce cas, vérifiez si le jeton dans /var/run/secrets/tokens/istio-token sur la VM est arrivé à expiration et vérifiez que la valeur exp (secondes epoch) n'a pas expiré:

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": "..."
}

Déboguer le cluster

Procédez comme suit pour résoudre les problèmes de votre cluster.

Vérifier le bon fonctionnement de l'enregistrement automatique

  1. Vérifiez l'élément WorkloadEntry que istiod génère automatiquement:

    kubectl get workloadentry -n WORKLOAD_NAMESPACE
    

    En outre, vous pouvez vérifier l'existence du navigateur d'objets Kubernetes.

  2. Si ce n'est pas le cas, recherchez les erreurs dans les journaux istiod, qui devraient être disponibles dans la suite d'opérations de Google Cloud. Vous pouvez également les récupérer directement:

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

    Le résultat attendu est semblable à ceci :

    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. Définissez la variable d'environnement de pod et utilisez-la pour exporter les journaux:

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

Vérifier les proxys connectés

Vous pouvez utiliser la commande proxy-status pour répertorier tous les proxys connectés, y compris ceux des VM:

istioctl proxy-status

Le résultat doit afficher des proxys connectés semblables à:

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

Pour en savoir plus sur les options de la commande, consultez la page istioctl proxy-config.

Guide de dépannage de la VM Istio

Pour accéder à la procédure de dépannage supplémentaire, consultez la page Déboguer des machines virtuelles.