Cette section explique les problèmes couramment rencontrés dans Anthos Service Mesh et indique comment les résoudre. Si vous avez besoin d'une aide supplémentaire, consultez la page Assistance.
Erreurs de connexion au serveur d'API dans les journaux Istiod
Istiod ne parvient pas à contacter apiserver
si vous rencontrez des erreurs semblables à celles-ci :
error k8s.io/client-go@v0.18.0/tools/cache/reflector.go:125: Failed to watch *crd.IstioSomeCustomResource`…dial tcp 10.43.240.1:443: connect: connection refused
Vous pouvez utiliser la chaîne d'expression régulière /error.*cannot list resource/
pour rechercher cette erreur dans les journaux.
Cette erreur est généralement temporaire. Si vous avez pu accéder aux journaux de proxy à l'aide de kubectl
, le problème est peut-être déjà être résolu. Cette erreur est généralement due à des événements qui rendent le serveur d'API temporairement indisponible, par exemple lorsqu'un serveur d'API ne figurant pas dans une configuration de haute disponibilité redémarre en raison d'une mise à niveau ou d'un autoscaling.
Le conteneur istio-init
plante
Ce problème peut se produire lorsque les règles iptables du pod ne sont pas appliquées à l'espace de noms réseau du pod. Cela peut être dû aux raisons suivantes :
- Règle de sécurité des pods trop restrictive
- Installation istio-cni incomplète
- Autorisations de pod de charge de travail insuffisantes (autorisation
CAP_NET_ADMIN
manquante)
Si vous utilisez une règle de sécurité des pods qui limite l'autorisation CAP_NET_ADMIN
, passez au plug-in CNI Istio.
Si vous utilisez le plug-in CNI Istio, vérifiez que vous avez bien suivi les instructions.
Vérifiez que le conteneur istio-cni-node
est prêt et vérifiez les journaux. Si le problème persiste, établissez une interface système sécurisée (SSH) dans le nœud hôte, puis recherchez les commandes nsenter
dans les journaux de nœud pour voir s'il existe des erreurs.
Si vous n'utilisez pas le plug-in CNI Istio ou une règle de sécurité des pods, vérifiez que le pod de la charge de travail dispose de l'autorisation CAP_NET_ADMIN
, qui est automatiquement définie par l'injecteur side-car.
Connexion refusée après le démarrage du pod
Lorsqu'un pod démarre et obtient une réponse connection refused
quand il tente de se connecter à un point de terminaison, le problème peut être dû au fait que le conteneur d'application a démarré avant le conteneur isto-proxy
. Dans ce cas, le conteneur d'application envoie la requête à istio-proxy
, mais la connexion est refusée, car istio-proxy
n'écoute pas encore sur le port.
Dans ce cas, vous pouvez effectuer les modifications suivantes :
Modifiez le code de démarrage de votre application afin d'envoyer des requêtes continues au point de terminaison d'état "health"
istio-proxy
jusqu'à ce que l'application reçoive un code 200. Le point de terminaison d'état "health"istio-proxy
est le suivant :http://localhost:15020/healthz/ready
Ajoutez un mécanisme de nouvelle tentative de requête à la charge de travail de votre application.