1.22. Dépannage de votre maillage de services
Cette section décrit comment identifier et résoudre les problèmes courants dans Red Hat OpenShift Service Mesh. Utilisez les sections suivantes pour vous aider à dépanner et à déboguer les problèmes lors du déploiement de Red Hat OpenShift Service Mesh sur OpenShift Container Platform.
1.22.1. Comprendre les versions de Service Mesh
Afin de comprendre quelle version de Red Hat OpenShift Service Mesh vous avez déployée sur votre système, vous devez comprendre comment chacune des versions des composants est gérée.
Operator version - La version la plus récente de l'opérateur est 2.3.3. Le numéro de version de l'opérateur indique uniquement la version de l'opérateur actuellement installé. Étant donné que l'Opérateur Red Hat OpenShift Service Mesh prend en charge plusieurs versions du plan de contrôle Service Mesh, la version de l'Opérateur ne détermine pas la version de vos ressources
ServiceMeshControlPlane
déployées.ImportantLa mise à niveau vers la dernière version de l'opérateur applique automatiquement les mises à jour des correctifs, mais ne met pas automatiquement à niveau votre plan de contrôle Service Mesh vers la dernière version mineure.
ServiceMeshControlPlane version - La version
ServiceMeshControlPlane
détermine la version de Red Hat OpenShift Service Mesh que vous utilisez. La valeur du champspec.version
dans la ressourceServiceMeshControlPlane
contrôle l'architecture et les paramètres de configuration utilisés pour installer et déployer Red Hat OpenShift Service Mesh. Lorsque vous créez le plan de contrôle Service Mesh, vous pouvez définir la version de deux manières :- Pour configurer la vue formulaire, sélectionnez la version dans le menu Control Plane Version.
-
Pour configurer la vue YAML, définissez la valeur de
spec.version
dans le fichier YAML.
Operator Lifecycle Manager (OLM) ne gère pas les mises à niveau du plan de contrôle de Service Mesh, de sorte que le numéro de version de votre opérateur et de ServiceMeshControlPlane
(SMCP) peut ne pas correspondre, à moins que vous n'ayez mis à niveau manuellement votre SMCP.
1.22.2. Dépannage Installation de l'opérateur
En plus des informations contenues dans cette section, veillez à consulter les rubriques suivantes :
1.22.2.1. Validation de l'installation de l'opérateur
Lorsque vous installez les opérateurs Red Hat OpenShift Service Mesh, OpenShift crée automatiquement les objets suivants dans le cadre d'une installation réussie de l'opérateur :
- cartes de configuration
- définitions de ressources personnalisées
- déploiements
- gousses
- ensembles de répliques
- rôles
- liaisons de rôles
- secrets
- comptes de service
- services
Depuis la console OpenShift Container Platform
Vous pouvez vérifier que les pods de l'opérateur sont disponibles et fonctionnent en utilisant la console OpenShift Container Platform.
-
Navigate to Workloads
Pods. -
Sélectionnez l'espace de noms
openshift-operators
. Vérifiez que les pods suivants existent et ont un statut de
running
:-
istio-operator
-
jaeger-operator
-
kiali-operator
-
-
Sélectionnez l'espace de noms
openshift-operators-redhat
. -
Vérifiez que le module
elasticsearch-operator
existe et qu'il a le statutrunning
.
A partir de la ligne de commande
Vérifiez que les pods Operator sont disponibles et en cours d'exécution dans l'espace de noms
openshift-operators
à l'aide de la commande suivante :$ oc get pods -n openshift-operators
Exemple de sortie
NAME READY STATUS RESTARTS AGE istio-operator-bb49787db-zgr87 1/1 Running 0 15s jaeger-operator-7d5c4f57d8-9xphf 1/1 Running 0 2m42s kiali-operator-f9c8d84f4-7xh2v 1/1 Running 0 64s
Vérifiez l'opérateur Elasticsearch à l'aide de la commande suivante :
$ oc get pods -n openshift-operators-redhat
Exemple de sortie
NAME READY STATUS RESTARTS AGE elasticsearch-operator-d4f59b968-796vq 1/1 Running 0 15s
1.22.2.2. Dépannage des mailles du filet Opérateurs
Si vous rencontrez des problèmes avec l'opérateur :
- Vérifiez l'état de votre abonnement à l'opérateur.
- Vérifiez que vous n'avez pas installé une version communautaire de l'opérateur au lieu de la version Red Hat prise en charge.
-
Vérifiez que vous avez le rôle
cluster-admin
pour installer Red Hat OpenShift Service Mesh. - Si le problème est lié à l'installation des opérateurs, vérifiez s'il n'y a pas d'erreurs dans les journaux des pods des opérateurs.
Vous ne pouvez installer les opérateurs qu'à travers la console OpenShift, l'OperatorHub n'est pas accessible depuis la ligne de commande.
1.22.2.2.1. Visualisation des journaux de pods de l'opérateur
Vous pouvez afficher les journaux de l'opérateur en utilisant la commande oc logs
. Red Hat peut demander des journaux pour aider à résoudre des cas d'assistance.
Procédure
Pour afficher les journaux du pod de l'opérateur, entrez la commande :
$ oc logs -n openshift-operators <podName>
Par exemple,
$ oc logs -n openshift-operators istio-operator-bb49787db-zgr87
1.22.3. Dépannage du plan de contrôle
Le Service Mesh control plane est composé d'Istiod, qui consolide plusieurs composants de plan de contrôle précédents (Citadel, Galley, Pilot) en un seul binaire. Le déploiement de ServiceMeshControlPlane
crée également les autres composants qui constituent Red Hat OpenShift Service Mesh, comme décrit dans la rubrique sur l'architecture.
1.22.3.1. Validation de l'installation du plan de contrôle Service Mesh
Lorsque vous créez le plan de contrôle Service Mesh, l'opérateur Service Mesh utilise les paramètres que vous avez spécifiés dans le fichier de ressources ServiceMeshControlPlane
pour effectuer les opérations suivantes :
Crée les composants Istio et déploie les pods suivants :
-
istiod
-
istio-ingressgateway
-
istio-egressgateway
-
grafana
-
prometheus
-
Appelle l'opérateur Kiali pour créer un déploiement Kaili basé sur la configuration du SMCP ou de la ressource personnalisée Kiali.
NoteLes composants de Kiali sont affichés par l'opérateur Kiali, et non par l'opérateur Service Mesh.
Appelle l'opérateur de plateforme de traçage distribuée Red Hat OpenShift pour créer des composants de plateforme de traçage distribuée basés sur la configuration dans la ressource personnalisée SMCP ou Jaeger.
NoteVous visualisez les composants Jaeger sous l'Opérateur de plateforme de traçage distribuée Red Hat OpenShift et les composants Elasticsearch sous l'Opérateur Red Hat Elasticsearch, et non sous l'Opérateur Service Mesh.
Depuis la console OpenShift Container Platform
Vous pouvez vérifier l'installation du plan de contrôle Service Mesh dans la console web OpenShift Container Platform.
-
Naviguez jusqu'à Operators
Installed Operators. -
Sélectionnez l'espace de noms
<istio-system>
. Sélectionnez l'opérateur Red Hat OpenShift Service Mesh.
- Cliquez sur l'onglet Istio Service Mesh Control Plane.
-
Cliquez sur le nom de votre plan de contrôle, par exemple
basic
. -
Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources. Vous pouvez utiliser le filtre pour restreindre votre vue, par exemple, pour vérifier que tous les Pods ont un statut de
running
. -
Si l'état du SMCP indique un problème, consultez la sortie
status:
dans le fichier YAML pour plus d'informations. -
Retournez à Operators
Installed Operators.
Sélectionnez l'opérateur OpenShift Elasticsearch.
- Cliquez sur l'onglet Elasticsearch.
-
Cliquez sur le nom du déploiement, par exemple
elasticsearch
. - Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources. .
-
Si la colonne
Status
pose des problèmes, consultez la sortiestatus:
sur l'onglet YAML pour plus d'informations. -
Retournez à Operators
Installed Operators.
Sélectionnez l'opérateur de la plateforme de traçage distribuée Red Hat OpenShift.
- Cliquez sur l'onglet Jaeger.
-
Cliquez sur le nom de votre déploiement, par exemple
jaeger
. - Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources.
-
Si la colonne
Status
indique des problèmes, vérifiez la sortiestatus:
sur l'onglet YAML pour plus d'informations. -
Naviguez jusqu'à Operators
Installed Operators.
Sélectionnez l'opérateur Kiali.
- Cliquez sur l'onglet Istio Service Mesh Control Plane.
-
Cliquez sur le nom de votre déploiement, par exemple
kiali
. - Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources.
-
Si la colonne
Status
pose des problèmes, consultez la sortiestatus:
sur l'onglet YAML pour plus d'informations.
-
Naviguez jusqu'à Operators
A partir de la ligne de commande
Exécutez la commande suivante pour vérifier si les pods du plan de contrôle Service Mesh sont disponibles et en cours d'exécution, où
istio-system
est l'espace de noms dans lequel vous avez installé le SMCP.$ oc get pods -n istio-system
Exemple de sortie
NAME READY STATUS RESTARTS AGE grafana-6776785cfc-6fz7t 2/2 Running 0 102s istio-egressgateway-5f49dd99-l9ppq 1/1 Running 0 103s istio-ingressgateway-6dc885c48-jjd8r 1/1 Running 0 103s istiod-basic-6c9cc55998-wg4zq 1/1 Running 0 2m14s jaeger-6865d5d8bf-zrfss 2/2 Running 0 100s kiali-579799fbb7-8mwc8 1/1 Running 0 46s prometheus-5c579dfb-6qhjk 2/2 Running 0 115s
Vérifiez l'état du déploiement du plan de contrôle Service Mesh à l'aide de la commande suivante. Remplacez
istio-system
par l'espace de noms dans lequel vous avez déployé le SMCP.$ oc get smcp -n <istio-system>
L'installation est terminée avec succès lorsque la colonne STATUS est
ComponentsReady
.Exemple de sortie
NAME READY STATUS PROFILES VERSION AGE basic 10/10 ComponentsReady ["default"] 2.1.3 4m2s
Si vous avez modifié et redéployé votre plan de contrôle Service Mesh, le statut devrait être
UpdateSuccessful
.Exemple de sortie
NAME READY STATUS TEMPLATE VERSION AGE basic-install 10/10 UpdateSuccessful default v1.1 3d16h
Si l'état du SMCP indique autre chose que
ComponentsReady
, vérifiez la sortiestatus:
dans la ressource SCMP pour plus d'informations.$ oc describe smcp <smcp-name> -n <controlplane-namespace>
Exemple de sortie
$ oc describe smcp basic -n istio-system
Vérifiez l'état du déploiement de Jaeger à l'aide de la commande suivante, où
istio-system
est l'espace de noms dans lequel vous avez déployé le SMCP.$ oc get jaeger -n <istio-system>
Exemple de sortie
NAME STATUS VERSION STRATEGY STORAGE AGE jaeger Running 1.30.0 allinone memory 15m
Vérifiez l'état du déploiement de Kiali à l'aide de la commande suivante, où
istio-system
est l'espace de noms dans lequel vous avez déployé le SMCP.$ oc get kiali -n <istio-system>
Exemple de sortie
NAME AGE kiali 15m
1.22.3.1.1. Accès à la console Kiali
Vous pouvez visualiser la topologie, la santé et les métriques de votre application dans la console Kiali. Si votre service rencontre des problèmes, la console Kiali vous permet de visualiser le flux de données à travers votre service. Vous pouvez obtenir des informations sur les composants du maillage à différents niveaux, y compris les applications abstraites, les services et les charges de travail. Kiali fournit également une vue graphique interactive de votre espace de noms en temps réel.
Pour accéder à la console Kiali, vous devez avoir Red Hat OpenShift Service Mesh installé, Kiali installé et configuré.
Le processus d'installation crée une route pour accéder à la console Kiali.
Si vous connaissez l'URL de la console Kiali, vous pouvez y accéder directement. Si vous ne connaissez pas l'URL, utilisez les instructions suivantes.
Procédure pour les administrateurs
- Connectez-vous à la console web de OpenShift Container Platform avec un rôle d'administrateur.
-
Cliquez sur Home
Projects. - Sur la page Projects, si nécessaire, utilisez le filtre pour trouver le nom de votre projet.
-
Cliquez sur le nom de votre projet, par exemple
info
. - Sur la page Project details, dans la section Launcher, cliquez sur le lien Kiali.
Connectez-vous à la console Kiali avec le même nom d'utilisateur et le même mot de passe que ceux utilisés pour accéder à la console OpenShift Container Platform.
Lorsque vous vous connectez pour la première fois à la console Kiali, vous voyez la page Overview qui affiche tous les espaces de noms de votre maillage de services que vous avez le droit de voir.
Si vous validez l'installation de la console et que les espaces de noms n'ont pas encore été ajoutés au maillage, il se peut qu'il n'y ait pas d'autres données à afficher que
istio-system
.
Procédure pour les développeurs
- Connectez-vous à la console web de OpenShift Container Platform avec un rôle de développeur.
- Cliquez sur Project.
- Sur la page Project Details, si nécessaire, utilisez le filtre pour trouver le nom de votre projet.
-
Cliquez sur le nom de votre projet, par exemple
info
. - Sur la page Project, dans la section Launcher, cliquez sur le lien Kiali.
- Cliquez sur Log In With OpenShift.
1.22.3.1.2. Accéder à la console Jaeger
Pour accéder à la console Jaeger, vous devez avoir installé Red Hat OpenShift Service Mesh, Red Hat OpenShift distributed tracing platform installé et configuré.
Le processus d'installation crée une route pour accéder à la console Jaeger.
Si vous connaissez l'URL de la console Jaeger, vous pouvez y accéder directement. Si vous ne connaissez pas l'URL, suivez les instructions suivantes.
Procédure à partir de la console OpenShift
-
Connectez-vous à la console web de OpenShift Container Platform en tant qu'utilisateur disposant des droits cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôle
dedicated-admin
. -
Naviguez jusqu'à Networking
Routes. Sur la page Routes, sélectionnez le projet de plan de contrôle Service Mesh, par exemple
istio-system
, dans le menu Namespace.La colonne Location affiche l'adresse liée à chaque itinéraire.
-
Si nécessaire, utilisez le filtre pour trouver la route
jaeger
. Cliquez sur la route Location pour lancer la console. - Cliquez sur Log In With OpenShift.
Procédure à partir de la console Kiali
- Lancer la console Kiali.
- Cliquez sur Distributed Tracing dans le volet de navigation gauche.
- Cliquez sur Log In With OpenShift.
Procédure à partir du CLI
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôlededicated-admin
.$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
Pour demander des détails sur l'itinéraire à l'aide de la ligne de commande, entrez la commande suivante. Dans cet exemple,
istio-system
est l'espace de noms du plan de contrôle Service Mesh.$ export JAEGER_URL=$(oc get route -n istio-system jaeger -o jsonpath='{.spec.host}')
-
Lancez un navigateur et accédez à
https://<JAEGER_URL>
, où<JAEGER_URL>
est l'itinéraire que vous avez découvert à l'étape précédente. - Connectez-vous en utilisant le même nom d'utilisateur et le même mot de passe que ceux utilisés pour accéder à la console OpenShift Container Platform.
Si vous avez ajouté des services au maillage de services et généré des traces, vous pouvez utiliser les filtres et le bouton Find Traces pour rechercher vos données de traces.
Si vous validez l'installation de la console, il n'y a pas de données de trace à afficher.
1.22.3.2. Dépannage du plan de contrôle du Service Mesh
Si vous rencontrez des problèmes lors du déploiement du plan de contrôle Service Mesh,
-
Assurez-vous que la ressource
ServiceMeshControlPlane
est installée dans un projet distinct de vos services et opérateurs. Cette documentation utilise le projetistio-system
comme exemple, mais vous pouvez déployer votre plan de contrôle dans n'importe quel projet tant qu'il est séparé du projet qui contient vos opérateurs et vos services. -
Assurez-vous que les ressources personnalisées
ServiceMeshControlPlane
etJaeger
sont déployées dans le même projet. Par exemple, utilisez le projetistio-system
pour les deux.
1.22.4. Dépannage du plan de données
Le site data plane est un ensemble de serveurs mandataires intelligents qui interceptent et contrôlent toutes les communications réseau entrantes et sortantes entre les services du maillage de services.
Red Hat OpenShift Service Mesh s'appuie sur un sidecar proxy dans le pod de l'application pour fournir des capacités de maillage de services à l'application.
1.22.4.1. Dépannage de l'injection du side-car
Red Hat OpenShift Service Mesh n'injecte pas automatiquement les sidecars de proxy aux pods. Vous devez opter pour l'injection de sidecars.
1.22.4.1.1. Dépannage de l'injection du sidecar d'Istio
Vérifiez si l'injection automatique est activée dans le déploiement de votre application. Si l'injection automatique pour le proxy Envoy est activée, il devrait y avoir une annotation sidecar.istio.io/inject:"true"
dans la ressource Deployment
sous spec.template.metadata.annotations
.
1.22.4.1.2. Dépannage de l'injection du side-car de l'agent Jaeger
Vérifiez si l'injection automatique est activée dans le déploiement de votre application. Si l'injection automatique pour l'agent Jaeger est activée, il devrait y avoir une annotation sidecar.jaegertracing.io/inject:"true"
dans la ressource Deployment
.
Pour plus d'informations sur l'injection de sidecar, voir Activation de l'injection automatique