Soutien

OpenShift Container Platform 4.12

Obtenir la prise en charge d'OpenShift Container Platform

Red Hat OpenShift Documentation Team

Résumé

Ce document fournit des informations sur l'obtention du support de Red Hat pour OpenShift Container Platform. Il contient également des informations sur la surveillance de la santé à distance via Telemetry et Insights Operator. Le document détaille également les avantages qu'offre la surveillance de la santé à distance.

Chapitre 1. Vue d'ensemble du soutien

Red Hat propose aux administrateurs de clusters des outils permettant de collecter des données pour votre cluster, de le surveiller et de le dépanner.

1.1. Obtenir de l'aide

Obtenir de l'aide: Visitez le portail client de Red Hat pour consulter les articles de la base de connaissances, soumettre un cas d'assistance et consulter la documentation et les ressources supplémentaires sur les produits.

1.2. Questions relatives à la télésurveillance médicale

Problèmes de surveillance de la santé à distance: OpenShift Container Platform collecte des données de télémétrie et de configuration sur votre cluster et les rapporte à Red Hat en utilisant le Telemeter Client et l'Insights Operator. Red Hat utilise ces données pour comprendre et résoudre les problèmes sur connected cluster. Comme pour les clusters connectés, vous pouvez utiliser la surveillance de la santé à distance dans un réseau restreint. OpenShift Container Platform collecte des données et surveille la santé à l'aide des éléments suivants :

  • Telemetry: Le client de télémétrie rassemble et télécharge les valeurs des métriques vers Red Hat toutes les quatre minutes et trente secondes. Red Hat utilise ces données pour :

    • Surveiller les grappes d'entreprises.
    • Déployer les mises à jour d'OpenShift Container Platform.
    • Améliorer l'expérience de mise à niveau.
  • Insight Operator: Par défaut, OpenShift Container Platform installe et active l'Insight Operator, qui signale toutes les deux heures l'état de la configuration et des défaillances des composants. L'Insight Operator aide à :

    • Identifier de manière proactive les problèmes potentiels liés aux grappes d'entreprises.
    • Fournir une solution et une action préventive dans Red Hat OpenShift Cluster Manager.

Vous pouvez examiner les informations de télémétrie.

Si vous avez activé les rapports de santé à distance, utilisez Insights pour identifier les problèmes. Vous pouvez, si vous le souhaitez, désactiver les rapports de santé à distance.

1.3. Recueillir des données sur votre cluster

Rassemblez des données sur votre cluster: Red Hat recommande de rassembler vos informations de débogage lors de l'ouverture d'un dossier d'assistance. Cela permet à l'équipe d'assistance de Red Hat d'effectuer une analyse des causes profondes. Un administrateur de cluster peut utiliser les éléments suivants pour collecter des données sur votre cluster :

  • The must-gather tool: Utilisez l'outil must-gather pour collecter des informations sur votre cluster et pour déboguer les problèmes.
  • sosreport: Utilisez l'outil sosreport pour collecter des détails de configuration, des informations sur le système et des données de diagnostic à des fins de débogage.
  • Cluster ID: Obtenez l'identifiant unique de votre cluster lorsque vous fournissez des informations à l'assistance Red Hat.
  • Bootstrap node journal logs: Rassembler bootkube.service journald les journaux des unités et des conteneurs du nœud d'amorçage pour résoudre les problèmes liés à l'amorçage.
  • Cluster node journal logs: Rassembler les journaux de l'unité journald et les journaux de /var/log sur les différents nœuds du cluster afin de résoudre les problèmes liés aux nœuds.
  • A network trace: Fournir un tracé de paquets réseau à partir d'un nœud de cluster OpenShift Container Platform spécifique ou d'un conteneur à l'assistance Red Hat pour aider à dépanner les problèmes liés au réseau.
  • Diagnostic data: Utilisez la commande redhat-support-tool pour recueillir ( ?) des données de diagnostic sur votre cluster.

1.4. Résolution des problèmes

Un administrateur de cluster peut surveiller et dépanner les problèmes suivants liés aux composants d'OpenShift Container Platform :

  • Problèmes d'installation: L'installation d'OpenShift Container Platform se déroule en plusieurs étapes. Vous pouvez effectuer les opérations suivantes :

    • Contrôler les étapes de l'installation.
    • Déterminer à quel stade les problèmes d'installation surviennent.
    • Examiner les problèmes liés à l'installation multiple.
    • Rassembler les journaux d'une installation qui a échoué.
  • Problèmes liés aux nœuds : Un administrateur de cluster peut vérifier et dépanner les problèmes liés aux nœuds en examinant l'état, l'utilisation des ressources et la configuration d'un nœud. Vous pouvez interroger les éléments suivants :

    • Statut du Kubelet sur un nœud.
    • Journaux des nœuds de cluster.
  • Problèmes liés à Crio: Un administrateur de cluster peut vérifier l'état du moteur d'exécution des conteneurs CRI-O sur chaque nœud du cluster. Si vous rencontrez des problèmes d'exécution de conteneurs, procédez comme suit :

    • Rassembler les journaux des unités du CRI-O.
    • Nettoyage de l'entrepôt CRI-O.
  • Problèmes liés au système d'exploitation: OpenShift Container Platform fonctionne sous Red Hat Enterprise Linux CoreOS. Si vous rencontrez des problèmes liés au système d'exploitation, vous pouvez étudier les procédures de crash du noyau. Assurez-vous de ce qui suit :

    • Activer kdump.
    • Testez la configuration de kdump.
    • Analyser un core dump.
  • Problèmes de réseau: Pour résoudre les problèmes liés à l'Open vSwitch, un administrateur de cluster peut effectuer les opérations suivantes :

    • Configurez temporairement le niveau de log d'Open vSwitch.
    • Configurer le niveau de log d'Open vSwitch de manière permanente.
    • Afficher les journaux d'Open vSwitch.
  • Problèmes liés à l'opérateur: Un administrateur de cluster peut procéder comme suit pour résoudre les problèmes de l'opérateur :

    • Vérifier l'état de l'abonnement de l'opérateur.
    • Vérifier l'état de santé de la capsule de l'opérateur.
    • Rassembler les registres de l'opérateur.
  • Problèmes liés aux modules : Un administrateur de cluster peut résoudre les problèmes liés aux pods en examinant l'état d'un pod et en effectuant les opérations suivantes :

    • Examiner les journaux des cosses et des conteneurs.
    • Démarrer les pods de débogage avec un accès root.
  • Problèmes source-image: Un administrateur de cluster peut observer les étapes du processus S2I pour déterminer à quel moment du processus S2I une défaillance s'est produite. Rassemblez les éléments suivants pour résoudre les problèmes Source-to-Image (S2I) :

    • Données de diagnostic source-image.
    • Données de diagnostic de l'application permettant d'enquêter sur les défaillances de l'application.
  • Problèmes de stockage: Une erreur de stockage multi-attaches se produit lorsque le montage d'un volume sur un nouveau nœud n'est pas possible parce que le nœud défaillant ne peut pas démonter le volume attaché. Un administrateur de cluster peut procéder comme suit pour résoudre les problèmes de stockage multi-attaches :

    • Permettre des pièces jointes multiples en utilisant des volumes RWX.
    • Récupérer ou supprimer le nœud défaillant lors de l'utilisation d'un volume RWO.
  • Problèmes de surveillance: Un administrateur de cluster peut suivre les procédures de la page de dépannage pour la surveillance. Si les métriques de vos projets définis par l'utilisateur ne sont pas disponibles ou si Prometheus consomme beaucoup d'espace disque, vérifiez les points suivants :

    • Cherchez à savoir pourquoi les mesures définies par l'utilisateur ne sont pas disponibles.
    • Déterminer pourquoi Prometheus consomme beaucoup d'espace disque.
  • Problèmes de journalisation: Un administrateur de cluster peut suivre les procédures de la page de dépannage pour les problèmes de journalisation d'OpenShift. Vérifiez les points suivants pour résoudre les problèmes de journalisation :

  • Problèmes liés à OpenShift CLI (oc) : Examinez les problèmes liés à OpenShift CLI (oc) en augmentant le niveau de journalisation.

Chapitre 2. Gestion des ressources de la grappe

Vous pouvez appliquer des options de configuration globales dans OpenShift Container Platform. Les opérateurs appliquent ces paramètres de configuration à l'ensemble du cluster.

2.1. Interagir avec les ressources de votre cluster

Vous pouvez interagir avec les ressources du cluster en utilisant l'outil OpenShift CLI (oc) dans OpenShift Container Platform. Les ressources de cluster que vous voyez après avoir exécuté la commande oc api-resources peuvent être modifiées.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez accès à la console web ou vous avez installé l'outil CLI oc.

Procédure

  1. Pour voir quels opérateurs de configuration ont été appliqués, exécutez la commande suivante :

    $ oc api-resources -o name | grep config.openshift.io
  2. Pour voir quelles ressources de cluster vous pouvez configurer, exécutez la commande suivante :

    oc explain <nom_de_la_ressource>.config.openshift.io
  3. Pour voir la configuration des objets de définition des ressources personnalisées (CRD) dans le cluster, exécutez la commande suivante :

    oc get <resource_name>.config -o yaml
  4. Pour modifier la configuration des ressources de la grappe, exécutez la commande suivante :

    oc edit <resource_name>.config -o yaml

Chapitre 3. Obtenir de l'aide

3.1. Obtenir de l'aide

Si vous rencontrez des difficultés avec une procédure décrite dans cette documentation, ou avec OpenShift Container Platform en général, visitez le portail client de Red Hat. À partir du portail client, vous pouvez :

  • Recherchez ou parcourez la base de connaissances de Red Hat qui contient des articles et des solutions relatifs aux produits Red Hat.
  • Soumettre un cas d'assistance à Red Hat Support.
  • Accéder à d'autres documents sur les produits.

Pour identifier les problèmes liés à votre cluster, vous pouvez utiliser Insights dans OpenShift Cluster Manager Hybrid Cloud Console. Insights fournit des détails sur les problèmes et, le cas échéant, des informations sur la manière de les résoudre.

Si vous avez une suggestion pour améliorer cette documentation ou si vous avez trouvé une erreur, soumettez un problème Jira pour le composant de documentation le plus pertinent. Veuillez fournir des détails spécifiques, tels que le nom de la section et la version d'OpenShift Container Platform.

3.2. À propos de la base de connaissances de Red Hat

La base de connaissances de Red Hat fournit un contenu riche destiné à vous aider à tirer le meilleur parti des produits et des technologies de Red Hat. La base de connaissances de Red Hat comprend des articles, de la documentation sur les produits et des vidéos décrivant les meilleures pratiques en matière d'installation, de configuration et d'utilisation des produits Red Hat. En outre, vous pouvez rechercher des solutions à des problèmes connus, chacune d'entre elles fournissant des descriptions concises de la cause première et des mesures correctives.

3.3. Recherche dans la base de connaissances de Red Hat

En cas de problème lié à OpenShift Container Platform, vous pouvez effectuer une recherche initiale pour déterminer si une solution existe déjà dans la base de connaissances de Red Hat.

Conditions préalables

  • Vous disposez d'un compte Red Hat Customer Portal.

Procédure

  1. Connectez-vous au portail client de Red Hat.
  2. Dans le champ de recherche principal du portail client de Red Hat, saisissez des mots-clés et des chaînes de caractères relatifs au problème, y compris :

    • Composants de la plateforme OpenShift Container (tels que etcd)
    • Procédure connexe (telle que installation)
    • Avertissements, messages d'erreur et autres résultats liés à des défaillances explicites
  3. Cliquez sur Search.
  4. Sélectionnez le filtre de produit OpenShift Container Platform.
  5. Sélectionnez le filtre de type de contenu Knowledgebase.

3.4. Soumettre un dossier d'assistance

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous disposez d'un compte Red Hat Customer Portal.
  • Vous avez un abonnement standard ou premium Red Hat.

Procédure

  1. Connectez-vous au portail client de Red Hat et sélectionnez SUPPORT CASESOpen a case.
  2. Sélectionnez la catégorie appropriée pour votre problème (telle que Defect / Bug), le produit (OpenShift Container Platform) et la version du produit (4.12, si elle n'est pas déjà remplie automatiquement).
  3. Examinez la liste des solutions suggérées dans la base de connaissances de Red Hat afin de trouver une correspondance potentielle avec le problème signalé. Si les articles suggérés ne répondent pas au problème, cliquez sur Continue.
  4. Saisissez un résumé concis mais descriptif du problème et des détails supplémentaires sur les symptômes ressentis, ainsi que vos attentes.
  5. Examinez la liste mise à jour des solutions suggérées dans la base de connaissances de Red Hat afin de trouver une correspondance potentielle avec le problème signalé. La liste est affinée au fur et à mesure que vous fournissez des informations supplémentaires au cours du processus de création du cas. Si les articles suggérés ne répondent pas au problème, cliquez sur Continue.
  6. S'assurer que les informations sur le compte présentées sont conformes aux attentes et, si ce n'est pas le cas, les modifier en conséquence.
  7. Vérifiez que l'identifiant de cluster OpenShift Container Platform rempli automatiquement est correct. Si ce n'est pas le cas, obtenez manuellement votre ID de cluster.

    • Pour obtenir manuellement votre ID de cluster à l'aide de la console web d'OpenShift Container Platform :

      1. Naviguez vers HomeDashboardsOverview.
      2. Trouvez la valeur dans le champ Cluster ID de la section Details.
    • Il est également possible d'ouvrir un nouveau dossier de support via la console web d'OpenShift Container Platform et de faire en sorte que l'identifiant de votre cluster soit rempli automatiquement.

      1. Dans la barre d'outils, naviguez vers (?) HelpOpen Support Case.
      2. La valeur Cluster ID est remplie automatiquement.
    • Pour obtenir l'ID de votre cluster à l'aide de l'OpenShift CLI (oc), exécutez la commande suivante :

      $ oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}'
  8. Répondez aux questions suivantes lorsque vous y êtes invité, puis cliquez sur Continue:

    • Où expérimentez-vous ce comportement ? Dans quel environnement ?
    • Quand le comportement se produit-il ? A quelle fréquence ? De manière répétée ? A certains moments ?
    • Quelles informations pouvez-vous fournir sur les délais et l'impact commercial ?
  9. Téléchargez les fichiers de données de diagnostic pertinents et cliquez sur Continue. Il est recommandé d'inclure les données recueillies à l'aide de la commande oc adm must-gather comme point de départ, ainsi que toutes les données spécifiques au problème qui ne sont pas recueillies par cette commande.
  10. Saisissez les informations relatives à la gestion du dossier et cliquez sur Continue.
  11. Prévisualisez les détails du cas et cliquez sur Submit.

3.5. Ressources supplémentaires

Chapitre 4. Surveillance de la santé à distance avec des grappes connectées

4.1. À propos de la télésurveillance médicale

OpenShift Container Platform collecte des données de télémétrie et de configuration sur votre cluster et les rapporte à Red Hat en utilisant le Telemeter Client et l'Insights Operator. Les données fournies à Red Hat permettent de bénéficier des avantages décrits dans ce document.

Un cluster qui rapporte des données à Red Hat via Telemetry et Insights Operator est considéré comme connected cluster.

Telemetry est le terme utilisé par Red Hat pour décrire les informations envoyées à Red Hat par le client Telemeter d'OpenShift Container Platform. Des attributs légers sont envoyés par les clusters connectés à Red Hat pour permettre l'automatisation de la gestion des abonnements, surveiller la santé des clusters, aider au support et améliorer l'expérience client.

Le site Insights Operator rassemble les données de configuration d'OpenShift Container Platform et les envoie à Red Hat. Les données sont utilisées pour produire des informations sur les problèmes potentiels auxquels un cluster peut être exposé. Ces informations sont communiquées aux administrateurs de clusters sur OpenShift Cluster Manager Hybrid Cloud Console.

Le présent document fournit de plus amples informations sur ces deux processus.

Avantages pour l'opérateur de télémétrie et d'analyse

La télémétrie et l'opérateur Insights offrent les avantages suivants aux utilisateurs finaux :

  • Enhanced identification and resolution of issues. Les événements qui peuvent sembler normaux pour un utilisateur final peuvent être observés par Red Hat d'un point de vue plus large à travers une flotte de clusters. Certains problèmes peuvent être identifiés plus rapidement de ce point de vue et résolus sans qu'un utilisateur final n'ait besoin d'ouvrir un dossier d'assistance ou de déposer une question Jira.
  • Advanced release management. OpenShift Container Platform propose les canaux de diffusion candidate, fast, et stable, qui vous permettent de choisir une stratégie de mise à jour. La graduation d'une version de fast à stable dépend du taux de réussite des mises à jour et des événements observés pendant les mises à niveau. Grâce aux informations fournies par les clusters connectés, Red Hat peut améliorer la qualité des versions des canaux stable et réagir plus rapidement aux problèmes trouvés dans les canaux fast.
  • Targeted prioritization of new features and functionality. Les données collectées permettent de savoir quelles zones d'OpenShift Container Platform sont les plus utilisées. Grâce à ces informations, Red Hat peut se concentrer sur le développement des nouvelles caractéristiques et fonctionnalités qui ont le plus d'impact pour nos clients.
  • A streamlined support experience. Vous pouvez fournir un ID de cluster pour un cluster connecté lorsque vous créez un ticket d'assistance sur le portail client de Red Hat. Cela permet à Red Hat de fournir une expérience d'assistance rationalisée qui est spécifique à votre cluster, en utilisant les informations connectées. Ce document fournit plus d'informations sur cette expérience d'assistance améliorée.
  • Predictive analytics. Les informations affichées pour votre cluster sur OpenShift Cluster Manager Hybrid Cloud Console sont activées par les informations collectées à partir des clusters connectés. Red Hat investit dans l'application de l'apprentissage profond, de l'apprentissage automatique et de l'automatisation de l'intelligence artificielle pour aider à identifier les problèmes auxquels les clusters OpenShift Container Platform sont exposés.

4.1.1. À propos de la télémétrie

Telemetry envoie à Red Hat un sous-ensemble soigneusement choisi de métriques de surveillance du cluster. Le client Telemeter récupère les valeurs des métriques toutes les quatre minutes et trente secondes et télécharge les données vers Red Hat. Ces mesures sont décrites dans ce document.

Ce flux de données est utilisé par Red Hat pour surveiller les clusters en temps réel et pour réagir si nécessaire aux problèmes qui ont un impact sur nos clients. Il permet également à Red Hat de déployer les mises à niveau d'OpenShift Container Platform auprès des clients afin de minimiser l'impact sur le service et d'améliorer continuellement l'expérience de mise à niveau.

Ces informations de débogage sont disponibles pour les équipes d'assistance et d'ingénierie de Red Hat avec les mêmes restrictions que l'accès aux données signalées par les cas d'assistance. Toutes les informations sur les clusters connectés sont utilisées par Red Hat pour améliorer OpenShift Container Platform et rendre son utilisation plus intuitive.

Ressources supplémentaires

4.1.1.1. Informations collectées par la télémétrie

Les informations suivantes sont collectées par Telemetry :

4.1.1.1.1. Informations sur le système
  • Informations sur la version, y compris la version du cluster OpenShift Container Platform et les détails de la mise à jour installée qui sont utilisés pour déterminer la disponibilité de la version de la mise à jour
  • Informations sur les mises à jour, y compris le nombre de mises à jour disponibles par cluster, le canal et le référentiel d'images utilisés pour une mise à jour, les informations sur la progression de la mise à jour et le nombre d'erreurs survenues lors d'une mise à jour
  • L'identifiant aléatoire unique qui est généré lors d'une installation
  • Détails de configuration qui aident le support Red Hat à fournir une assistance bénéfique aux clients, y compris la configuration des nœuds au niveau de l'infrastructure cloud, les noms d'hôtes, les adresses IP, les noms de pods Kubernetes, les espaces de noms et les services
  • Les composants du framework OpenShift Container Platform installés dans un cluster, ainsi que leur état et leur statut
  • Événements pour tous les espaces de noms répertoriés comme "objets apparentés" pour un opérateur dégradé
  • Informations sur les logiciels dégradés
  • Informations sur la validité des certificats
  • Le nom de la plateforme du fournisseur sur laquelle OpenShift Container Platform est déployée et l'emplacement du centre de données
4.1.1.1.2. Information sur la taille
  • Informations sur le dimensionnement des grappes, des types de machines et des machines, y compris le nombre de cœurs de CPU et la quantité de RAM utilisée pour chacun d'entre eux
  • Le nombre de membres etcd et le nombre d'objets stockés dans le cluster etcd
  • Nombre d'applications construites par type de stratégie de construction
4.1.1.1.3. Informations sur l'utilisation
  • Informations sur l'utilisation des composants, des fonctionnalités et des extensions
  • Détails d'utilisation des aperçus technologiques et des configurations non prises en charge

La télémétrie ne collecte pas d'informations d'identification telles que les noms d'utilisateur ou les mots de passe. Le Chapeau Rouge n'a pas l'intention de collecter des informations personnelles. Si Red Hat découvre que des informations personnelles ont été reçues par inadvertance, Red Hat supprimera ces informations. Dans la mesure où les données de télémétrie constituent des données personnelles, veuillez vous référer à la Déclaration de confidentialité de Red Hat pour plus d'informations sur les pratiques de confidentialité de Red Hat.

Ressources supplémentaires

4.1.2. À propos de l'opérateur Insights

L'opérateur Insights recueille périodiquement l'état de la configuration et des défaillances des composants et, par défaut, rapporte ces données toutes les deux heures à Red Hat. Ces informations permettent à Red Hat d'évaluer la configuration et les données de défaillance plus profondes que celles rapportées par la télémétrie.

Les utilisateurs d'OpenShift Container Platform peuvent afficher le rapport de chaque cluster dans le service Insights Advisor sur Red Hat Hybrid Cloud Console. Si des problèmes ont été identifiés, Insights fournit des détails supplémentaires et, le cas échéant, des étapes pour résoudre un problème.

L'opérateur Insights ne collecte pas d'informations d'identification, telles que les noms d'utilisateur, les mots de passe ou les certificats. Voir Red Hat Insights Data & Application Security pour plus d'informations sur la collecte et les contrôles des données de Red Hat Insights.

Red Hat utilise toutes les informations de cluster connectées pour :

  • Identifier les problèmes potentiels des clusters et fournir une solution et des actions préventives dans le service Insights Advisor sur Red Hat Hybrid Cloud Console
  • Améliorer OpenShift Container Platform en fournissant des informations agrégées et critiques aux équipes produit et support
  • Rendre OpenShift Container Platform plus intuitive

Ressources supplémentaires

4.1.2.1. Informations collectées par l'opérateur Insights

Les informations suivantes sont collectées par l'opérateur Insights :

  • Informations générales sur votre cluster et ses composants pour identifier les problèmes spécifiques à votre version et à votre environnement OpenShift Container Platform
  • Les fichiers de configuration, tels que la configuration du registre d'images, de votre cluster afin de déterminer les paramètres incorrects et les problèmes spécifiques aux paramètres que vous avez définis
  • Erreurs survenant dans les composants de la grappe
  • Informations sur l'état d'avancement des mises à jour en cours et sur l'état des mises à niveau des composants
  • Détails de la plateforme sur laquelle OpenShift Container Platform est déployée, comme Amazon Web Services, et la région dans laquelle le cluster est situé
  • Les informations relatives à la charge de travail du cluster sont transformées en valeurs SHA (Secure Hash Algorithm) discrètes, ce qui permet à Red Hat d'évaluer les charges de travail en termes de sécurité et de vulnérabilités de version sans divulguer de détails sensibles
  • Si un opérateur signale un problème, des informations sont collectées sur les pods de la plate-forme OpenShift Container dans les projets openshift-* et kube-*. Cela inclut l'état, la ressource, le contexte de sécurité, les informations sur le volume, et plus encore.

Ressources supplémentaires

4.1.3. Comprendre le flux de données des opérateurs Telemetry et Insights

Le client Telemeter collecte des données de séries temporelles sélectionnées à partir de l'API Prometheus. Les données de la série temporelle sont téléchargées vers api.openshift.com toutes les quatre minutes et trente secondes pour être traitées.

L'opérateur Insights rassemble des données sélectionnées à partir de l'API Kubernetes et de l'API Prometheus dans une archive. L'archive est téléchargée vers OpenShift Cluster Manager Hybrid Cloud Console toutes les deux heures pour être traitée. L'opérateur Insights télécharge également la dernière analyse Insights depuis OpenShift Cluster Manager Hybrid Cloud Console. Cette analyse est utilisée pour remplir la fenêtre contextuelle Insights status qui est incluse dans la page Overview de la console Web d'OpenShift Container Platform.

Toutes les communications avec Red Hat se font sur des canaux cryptés en utilisant Transport Layer Security (TLS) et l'authentification mutuelle par certificat. Toutes les données sont cryptées en transit et au repos.

L'accès aux systèmes qui traitent les données des clients est contrôlé par une authentification multifactorielle et des contrôles d'autorisation stricts. L'accès est accordé en fonction du besoin d'en connaître et est limité aux opérations nécessaires.

Télémétrie et informations Flux de données de l'opérateur

Ressources supplémentaires

4.1.4. Détails supplémentaires sur l'utilisation des données de télésurveillance de la santé

Les informations collectées pour permettre la surveillance de la santé à distance sont détaillées dans les sections Informations collectées par télémétrie et Informations collectées par l'opérateur Insights.

Comme décrit dans les sections précédentes de ce document, Red Hat recueille des données sur votre utilisation des produits Red Hat à des fins telles que la fourniture d'une assistance et de mises à jour, l'optimisation des performances ou de la configuration, la minimisation des impacts sur le service, l'identification et la correction des menaces, le dépannage, l'amélioration des offres et de l'expérience de l'utilisateur, la réponse aux problèmes et, le cas échéant, à des fins de facturation.

Sauvegarde de la collection

Red Hat utilise des mesures techniques et organisationnelles conçues pour protéger les données de télémétrie et de configuration.

Partage

Red Hat peut partager les données collectées par le biais de la télémétrie et de l'opérateur Insights en interne au sein de Red Hat afin d'améliorer votre expérience d'utilisateur. Red Hat peut partager les données de télémétrie et de configuration avec ses partenaires commerciaux sous une forme agrégée qui n'identifie pas les clients afin d'aider les partenaires à mieux comprendre leurs marchés et l'utilisation des offres Red Hat par leurs clients ou pour assurer l'intégration réussie des produits pris en charge conjointement par ces partenaires.

Tiers

Red Hat peut engager certains tiers pour aider à la collecte, à l'analyse et au stockage des données de télémétrie et de configuration.

Contrôle de l'utilisateur / activation et désactivation de la collecte des données de télémétrie et de configuration

Vous pouvez désactiver la télémétrie de OpenShift Container Platform et l'opérateur Insights en suivant les instructions de la section Désactiver les rapports de santé à distance.

4.2. Présentation des données collectées par la télésurveillance médicale

En tant qu'administrateur, vous pouvez examiner les mesures collectées par la télémétrie et l'opérateur Insights.

4.2.1. Afficher les données collectées par la télémétrie

Vous pouvez visualiser les données de séries temporelles du cluster et des composants capturées par Telemetry.

Conditions préalables

  • Vous avez installé le CLI OpenShift Container Platform (oc).
  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin ou cluster-monitoring-view.

Procédure

  1. Se connecter à un cluster.
  2. Exécutez la commande suivante, qui interroge le service Prometheus d'un cluster et renvoie l'ensemble des données de séries temporelles capturées par Telemetry :

    $ curl -G -k -H "Authorization: Bearer $(oc whoami -t)" \
    https://$(oc get route prometheus-k8s-federate -n \
    openshift-monitoring -o jsonpath="{.spec.host}")/federate \
    --data-urlencode 'match[]={__name__=~"cluster:usage:.*"}' \
    --data-urlencode 'match[]={__name__="count:up0"}' \
    --data-urlencode 'match[]={__name__="count:up1"}' \
    --data-urlencode 'match[]={__name__="cluster_version"}' \
    --data-urlencode 'match[]={__name__="cluster_version_available_updates"}' \
    --data-urlencode 'match[]={__name__="cluster_version_capability"}' \
    --data-urlencode 'match[]={__name__="cluster_operator_up"}' \
    --data-urlencode 'match[]={__name__="cluster_operator_conditions"}' \
    --data-urlencode 'match[]={__name__="cluster_version_payload"}' \
    --data-urlencode 'match[]={__name__="cluster_installer"}' \
    --data-urlencode 'match[]={__name__="cluster_infrastructure_provider"}' \
    --data-urlencode 'match[]={__name__="cluster_feature_set"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_object_counts:sum"}' \
    --data-urlencode 'match[]={__name__="ALERTS",alertstate="firing"}' \
    --data-urlencode 'match[]={__name__="code:apiserver_request_total:rate:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:capacity_cpu_cores:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:capacity_memory_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:cpu_usage_cores:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:memory_usage_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="openshift:cpu_usage_cores:sum"}' \
    --data-urlencode 'match[]={__name__="openshift:memory_usage_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="workload:cpu_usage_cores:sum"}' \
    --data-urlencode 'match[]={__name__="workload:memory_usage_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:virt_platform_nodes:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:node_instance_type_count:sum"}' \
    --data-urlencode 'match[]={__name__="cnv:vmi_status_running:count"}' \
    --data-urlencode 'match[]={__name__="cluster:vmi_request_cpu_cores:sum"}' \
    --data-urlencode 'match[]={__name__="node_role_os_version_machine:cpu_capacity_cores:sum"}' \
    --data-urlencode 'match[]={__name__="node_role_os_version_machine:cpu_capacity_sockets:sum"}' \
    --data-urlencode 'match[]={__name__="subscription_sync_total"}' \
    --data-urlencode 'match[]={__name__="olm_resolution_duration_seconds"}' \
    --data-urlencode 'match[]={__name__="csv_succeeded"}' \
    --data-urlencode 'match[]={__name__="csv_abnormal"}' \
    --data-urlencode 'match[]={__name__="cluster:kube_persistentvolumeclaim_resource_requests_storage_bytes:provisioner:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:kubelet_volume_stats_used_bytes:provisioner:sum"}' \
    --data-urlencode 'match[]={__name__="ceph_cluster_total_bytes"}' \
    --data-urlencode 'match[]={__name__="ceph_cluster_total_used_raw_bytes"}' \
    --data-urlencode 'match[]={__name__="ceph_health_status"}' \
    --data-urlencode 'match[]={__name__="odf_system_raw_capacity_total_bytes"}' \
    --data-urlencode 'match[]={__name__="odf_system_raw_capacity_used_bytes"}' \
    --data-urlencode 'match[]={__name__="odf_system_health_status"}' \
    --data-urlencode 'match[]={__name__="job:ceph_osd_metadata:count"}' \
    --data-urlencode 'match[]={__name__="job:kube_pv:count"}' \
    --data-urlencode 'match[]={__name__="job:odf_system_pvs:count"}' \
    --data-urlencode 'match[]={__name__="job:ceph_pools_iops:total"}' \
    --data-urlencode 'match[]={__name__="job:ceph_pools_iops_bytes:total"}' \
    --data-urlencode 'match[]={__name__="job:ceph_versions_running:count"}' \
    --data-urlencode 'match[]={__name__="job:noobaa_total_unhealthy_buckets:sum"}' \
    --data-urlencode 'match[]={__name__="job:noobaa_bucket_count:sum"}' \
    --data-urlencode 'match[]={__name__="job:noobaa_total_object_count:sum"}' \
    --data-urlencode 'match[]={__name__="odf_system_bucket_count", system_type="OCS", system_vendor="Red Hat"}' \
    --data-urlencode 'match[]={__name__="odf_system_objects_total", system_type="OCS", system_vendor="Red Hat"}' \
    --data-urlencode 'match[]={__name__="noobaa_accounts_num"}' \
    --data-urlencode 'match[]={__name__="noobaa_total_usage"}' \
    --data-urlencode 'match[]={__name__="console_url"}' \
    --data-urlencode 'match[]={__name__="cluster:ovnkube_master_egress_routing_via_host:max"}' \
    --data-urlencode 'match[]={__name__="cluster:network_attachment_definition_instances:max"}' \
    --data-urlencode 'match[]={__name__="cluster:network_attachment_definition_enabled_instance_up:max"}' \
    --data-urlencode 'match[]={__name__="cluster:ingress_controller_aws_nlb_active:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:route_metrics_controller_routes_per_shard:min"}' \
    --data-urlencode 'match[]={__name__="cluster:route_metrics_controller_routes_per_shard:max"}' \
    --data-urlencode 'match[]={__name__="cluster:route_metrics_controller_routes_per_shard:avg"}' \
    --data-urlencode 'match[]={__name__="cluster:route_metrics_controller_routes_per_shard:median"}' \
    --data-urlencode 'match[]={__name__="cluster:openshift_route_info:tls_termination:sum"}' \
    --data-urlencode 'match[]={__name__="insightsclient_request_send_total"}' \
    --data-urlencode 'match[]={__name__="cam_app_workload_migrations"}' \
    --data-urlencode 'match[]={__name__="cluster:apiserver_current_inflight_requests:sum:max_over_time:2m"}' \
    --data-urlencode 'match[]={__name__="cluster:alertmanager_integrations:max"}' \
    --data-urlencode 'match[]={__name__="cluster:telemetry_selected_series:count"}' \
    --data-urlencode 'match[]={__name__="openshift:prometheus_tsdb_head_series:sum"}' \
    --data-urlencode 'match[]={__name__="openshift:prometheus_tsdb_head_samples_appended_total:sum"}' \
    --data-urlencode 'match[]={__name__="monitoring:container_memory_working_set_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="namespace_job:scrape_series_added:topk3_sum1h"}' \
    --data-urlencode 'match[]={__name__="namespace_job:scrape_samples_post_metric_relabeling:topk3"}' \
    --data-urlencode 'match[]={__name__="monitoring:haproxy_server_http_responses_total:sum"}' \
    --data-urlencode 'match[]={__name__="rhmi_status"}' \
    --data-urlencode 'match[]={__name__="status:upgrading:version:rhoam_state:max"}' \
    --data-urlencode 'match[]={__name__="state:rhoam_critical_alerts:max"}' \
    --data-urlencode 'match[]={__name__="state:rhoam_warning_alerts:max"}' \
    --data-urlencode 'match[]={__name__="rhoam_7d_slo_percentile:max"}' \
    --data-urlencode 'match[]={__name__="rhoam_7d_slo_remaining_error_budget:max"}' \
    --data-urlencode 'match[]={__name__="cluster_legacy_scheduler_policy"}' \
    --data-urlencode 'match[]={__name__="cluster_master_schedulable"}' \
    --data-urlencode 'match[]={__name__="che_workspace_status"}' \
    --data-urlencode 'match[]={__name__="che_workspace_started_total"}' \
    --data-urlencode 'match[]={__name__="che_workspace_failure_total"}' \
    --data-urlencode 'match[]={__name__="che_workspace_start_time_seconds_sum"}' \
    --data-urlencode 'match[]={__name__="che_workspace_start_time_seconds_count"}' \
    --data-urlencode 'match[]={__name__="cco_credentials_mode"}' \
    --data-urlencode 'match[]={__name__="cluster:kube_persistentvolume_plugin_type_counts:sum"}' \
    --data-urlencode 'match[]={__name__="visual_web_terminal_sessions_total"}' \
    --data-urlencode 'match[]={__name__="acm_managed_cluster_info"}' \
    --data-urlencode 'match[]={__name__="cluster:vsphere_vcenter_info:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:vsphere_esxi_version_total:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:vsphere_node_hw_version_total:sum"}' \
    --data-urlencode 'match[]={__name__="openshift:build_by_strategy:sum"}' \
    --data-urlencode 'match[]={__name__="rhods_aggregate_availability"}' \
    --data-urlencode 'match[]={__name__="rhods_total_users"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_disk_wal_fsync_duration_seconds:histogram_quantile",quantile="0.99"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_mvcc_db_total_size_in_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_network_peer_round_trip_time_seconds:histogram_quantile",quantile="0.99"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_mvcc_db_total_size_in_use_in_bytes:sum"}' \
    --data-urlencode 'match[]={__name__="instance:etcd_disk_backend_commit_duration_seconds:histogram_quantile",quantile="0.99"}' \
    --data-urlencode 'match[]={__name__="jaeger_operator_instances_storage_types"}' \
    --data-urlencode 'match[]={__name__="jaeger_operator_instances_strategies"}' \
    --data-urlencode 'match[]={__name__="jaeger_operator_instances_agent_strategies"}' \
    --data-urlencode 'match[]={__name__="appsvcs:cores_by_product:sum"}' \
    --data-urlencode 'match[]={__name__="nto_custom_profiles:count"}' \
    --data-urlencode 'match[]={__name__="openshift_csi_share_configmap"}' \
    --data-urlencode 'match[]={__name__="openshift_csi_share_secret"}' \
    --data-urlencode 'match[]={__name__="openshift_csi_share_mount_failures_total"}' \
    --data-urlencode 'match[]={__name__="openshift_csi_share_mount_requests_total"}' \
    --data-urlencode 'match[]={__name__="cluster:velero_backup_total:max"}' \
    --data-urlencode 'match[]={__name__="cluster:velero_restore_total:max"}' \
    --data-urlencode 'match[]={__name__="eo_es_storage_info"}' \
    --data-urlencode 'match[]={__name__="eo_es_redundancy_policy_info"}' \
    --data-urlencode 'match[]={__name__="eo_es_defined_delete_namespaces_total"}' \
    --data-urlencode 'match[]={__name__="eo_es_misconfigured_memory_resources_info"}' \
    --data-urlencode 'match[]={__name__="cluster:eo_es_data_nodes_total:max"}' \
    --data-urlencode 'match[]={__name__="cluster:eo_es_documents_created_total:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:eo_es_documents_deleted_total:sum"}' \
    --data-urlencode 'match[]={__name__="pod:eo_es_shards_total:max"}' \
    --data-urlencode 'match[]={__name__="eo_es_cluster_management_state_info"}' \
    --data-urlencode 'match[]={__name__="imageregistry:imagestreamtags_count:sum"}' \
    --data-urlencode 'match[]={__name__="imageregistry:operations_count:sum"}' \
    --data-urlencode 'match[]={__name__="log_logging_info"}' \
    --data-urlencode 'match[]={__name__="log_collector_error_count_total"}' \
    --data-urlencode 'match[]={__name__="log_forwarder_pipeline_info"}' \
    --data-urlencode 'match[]={__name__="log_forwarder_input_info"}' \
    --data-urlencode 'match[]={__name__="log_forwarder_output_info"}' \
    --data-urlencode 'match[]={__name__="cluster:log_collected_bytes_total:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:log_logged_bytes_total:sum"}' \
    --data-urlencode 'match[]={__name__="cluster:kata_monitor_running_shim_count:sum"}' \
    --data-urlencode 'match[]={__name__="platform:hypershift_hostedclusters:max"}' \
    --data-urlencode 'match[]={__name__="platform:hypershift_nodepools:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_unhealthy_bucket_claims:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_buckets_claims:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_unhealthy_namespace_resources:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_namespace_resources:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_unhealthy_namespace_buckets:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_namespace_buckets:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_accounts:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_usage:max"}' \
    --data-urlencode 'match[]={__name__="namespace:noobaa_system_health_status:max"}' \
    --data-urlencode 'match[]={__name__="ocs_advanced_feature_usage"}' \
    --data-urlencode 'match[]={__name__="os_image_url_override:sum"}'

4.2.2. Affichage des données collectées par l'opérateur Insights

Vous pouvez consulter les données collectées par l'opérateur Insights.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  1. Rechercher le nom du module en cours d'exécution pour l'opérateur Insights :

    $ INSIGHTS_OPERATOR_POD=$(oc get pods --namespace=openshift-insights -o custom-columns=:metadata.name --no-headers  --field-selector=status.phase=Running)
  2. Copier les archives de données récentes collectées par l'opérateur Insights :

    $ oc cp openshift-insights/$INSIGHTS_OPERATOR_POD:/var/lib/insights-operator ./insights-data

Les archives récentes d'Insights Operator sont désormais disponibles dans le répertoire insights-data.

4.3. Refuser les rapports de santé à distance

Vous pouvez choisir de ne pas communiquer les données relatives à l'état de santé et à l'utilisation de votre cluster.

Pour ne plus recevoir de rapports sur la santé à distance, vous devez

  1. Modifiez le secret d'extraction global du cluster pour désactiver les rapports de santé à distance.
  2. Mettre à jour le cluster pour utiliser ce secret modifié.

4.3.1. Conséquences de la désactivation des rapports de santé à distance

Dans OpenShift Container Platform, les clients peuvent choisir de ne pas communiquer d'informations sur l'utilisation. Cependant, les clusters connectés permettent à Red Hat de réagir plus rapidement aux problèmes et de mieux soutenir nos clients, ainsi que de mieux comprendre l'impact des mises à niveau de produits sur les clusters. Les clusters connectés contribuent également à simplifier le processus d'abonnement et d'attribution des droits et permettent au service OpenShift Cluster Manager de fournir une vue d'ensemble de vos clusters et de leur statut d'abonnement.

Red Hat recommande fortement de laisser les rapports de santé et d'utilisation activés pour les clusters de pré-production et de test, même s'il est nécessaire de les désactiver pour les clusters de production. Cela permet à Red Hat de participer à la qualification d'OpenShift Container Platform dans vos environnements et de réagir plus rapidement aux problèmes liés au produit.

Voici quelques-unes des conséquences du choix de ne pas disposer d'un groupe connecté :

  • Red Hat ne sera pas en mesure de contrôler le succès des mises à jour du produit ou la santé de vos clusters sans l'ouverture d'un dossier d'assistance.
  • Red Hat ne sera pas en mesure d'utiliser les données de configuration pour mieux trier les cas d'assistance à la clientèle et identifier les configurations que nos clients jugent importantes.
  • OpenShift Cluster Manager n'affichera pas de données sur vos clusters, y compris des informations sur l'état de santé et l'utilisation.
  • Les informations relatives à votre abonnement doivent être saisies manuellement via console.redhat.com, sans que vous puissiez bénéficier d'un rapport d'utilisation automatique.

Dans les réseaux restreints, les données Telemetry et Insights peuvent toujours être rapportées par le biais d'une configuration appropriée de votre proxy.

4.3.2. Modification du secret d'extraction du cluster global pour désactiver les rapports de santé à distance

Vous pouvez modifier le secret d'extraction de votre cluster global existant pour désactiver les rapports de santé à distance. Cela désactive à la fois la télémétrie et l'opérateur Insights.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  1. Téléchargez le secret d'extraction du cluster global sur votre système de fichiers local.

    $ oc extract secret/pull-secret -n openshift-config --to=.
  2. Dans un éditeur de texte, modifiez le fichier .dockerconfigjson qui a été téléchargé.
  3. Supprimer l'entrée JSON cloud.openshift.com, par exemple :

    \N- "cloud.openshift.com":{"auth":\N"<hash>\N",\N "email":\N"<email_address>\N"}
  4. Enregistrer le fichier.

Vous pouvez maintenant mettre à jour votre cluster pour utiliser ce secret modifié.

4.3.3. Mise à jour du secret d'extraction du cluster global

Vous pouvez mettre à jour le secret d'extraction global pour votre cluster en remplaçant le secret d'extraction actuel ou en ajoutant un nouveau secret d'extraction.

Cette procédure est nécessaire lorsque les utilisateurs utilisent, pour stocker les images, un registre différent de celui utilisé lors de l'installation.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  1. Facultatif : Pour ajouter un nouveau secret d'extraction au secret d'extraction existant, procédez comme suit :

    1. Entrez la commande suivante pour télécharger le secret d'extraction :

      $ oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' ><pull_secret_location> 1
      1
      Indiquer le chemin d'accès au fichier de secret d'extraction.
    2. Entrez la commande suivante pour ajouter le nouveau secret d'extraction :

      $ oc registry login --registry="<registry>" \ 1
      --auth-basic="<username>:<password>" \ 2
      --to=<pull_secret_location> 3
      1
      Indiquez le nouveau registre. Vous pouvez inclure plusieurs référentiels dans le même registre, par exemple : --registry="<registry/my-namespace/my-repository>".
      2
      Fournir les informations d'identification du nouveau registre.
      3
      Indiquer le chemin d'accès au fichier de secret d'extraction.

      Vous pouvez également procéder à une mise à jour manuelle du fichier "pull secret".

  2. Entrez la commande suivante pour mettre à jour le secret d'extraction global pour votre cluster :

    oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location> 1
    1
    Indiquez le chemin d'accès au nouveau fichier de secret d'extraction.

    Cette mise à jour est déployée sur tous les nœuds, ce qui peut prendre un certain temps en fonction de la taille de votre cluster.

    Note

    Depuis OpenShift Container Platform 4.7.4, les modifications apportées au secret de tirage global ne déclenchent plus la vidange ou le redémarrage d'un nœud.

4.4. Permettre l'établissement de rapports de santé à distance

Si vous ou votre organisation avez désactivé les rapports de santé à distance, vous pouvez réactiver cette fonctionnalité. Vous pouvez voir que les rapports de santé à distance sont désactivés à partir du message "Insights not available" dans la tuile Status sur la page OpenShift Container Platform Web Console Overview (Aperçu de la console Web OpenShift Container Platform).

Pour activer les rapports de santé à distance, vous devez modifier le secret d'extraction global du cluster avec un nouveau jeton d'autorisation.

Note

L'activation des rapports de santé à distance permet à l'opérateur Insights et à la télémétrie de fonctionner.

4.4.1. Modifier le secret d'extraction de votre cluster global pour activer les rapports de santé à distance

Vous pouvez modifier votre secret d'extraction de cluster global existant pour activer les rapports de santé à distance. Si vous avez précédemment désactivé la surveillance de la santé à distance, vous devez d'abord télécharger un nouveau secret d'extraction avec votre jeton d'accès console.openshift.com à partir de Red Hat OpenShift Cluster Manager.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Accès à OpenShift Cluster Manager.

Procédure

  1. Naviguez jusqu'à https://console.redhat.com/openshift/downloads.
  2. Dans TokensPull Secret, cliquez sur Download.

    Le fichier pull-secret.txt contenant votre jeton d'accès cloud.openshift.com au format JSON se télécharge :

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "<your_token>",
          "email": "<email_address>"
        }
    }
  3. Téléchargez le secret d'extraction du cluster global sur votre système de fichiers local.

    $ oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' > pull-secret
  4. Faites une copie de sauvegarde de votre secret de fabrication.

    $ cp pull-secret pull-secret-backup
  5. Ouvrez le fichier pull-secret dans un éditeur de texte.
  6. Ajouter l'entrée JSON cloud.openshift.com de pull-secret.txt à auths.
  7. Enregistrer le fichier.
  8. Mettez à jour le secret dans votre cluster.

    oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=pull-secret

La mise à jour du secret peut prendre quelques minutes et votre cluster peut commencer à émettre des rapports.

Vérification

  1. Naviguez jusqu'à la page OpenShift Container Platform Web Console Overview (Aperçu de la console Web OpenShift Container Platform).
  2. Insights dans la tuile Status indique le nombre de problèmes trouvés.

4.5. Utiliser Insights pour identifier les problèmes de votre cluster

Insights analyse de manière répétée les données envoyées par Insights Operator. Les utilisateurs d'OpenShift Container Platform peuvent afficher le rapport dans le service Insights Advisor sur Red Hat Hybrid Cloud Console.

4.5.1. À propos de Red Hat Insights Advisor pour OpenShift Container Platform

Vous pouvez utiliser Insights Advisor pour évaluer et surveiller la santé de vos clusters OpenShift Container Platform. Que vous vous préoccupiez de clusters individuels ou de l'ensemble de votre infrastructure, il est important de connaître votre exposition aux problèmes qui peuvent affecter la disponibilité des services, la tolérance aux pannes, les performances ou la sécurité.

Insights analyse de manière répétée les données envoyées par Insights Operator à l'aide d'une base de données de recommendations, qui sont des ensembles de conditions pouvant mettre en danger vos clusters OpenShift Container Platform. Vos données sont ensuite téléchargées vers le service Insights Advisor sur Red Hat Hybrid Cloud Console où vous pouvez effectuer les actions suivantes :

  • Voir les groupes concernés par une recommandation spécifique.
  • Utilisez des fonctions de filtrage performantes pour affiner vos résultats en fonction de ces recommandations.
  • Apprenez-en plus sur les recommandations individuelles, les détails sur les risques qu'elles présentent et obtenez des résolutions adaptées à vos groupes individuels.
  • Partager les résultats avec les autres parties prenantes.

4.5.2. Comprendre Insights Recommandations du conseiller

Insights Advisor regroupe des informations sur les différents états des clusters et les configurations des composants qui peuvent avoir un impact négatif sur la disponibilité des services, la tolérance aux pannes, les performances ou la sécurité de vos clusters. Cet ensemble d'informations est appelé recommandation dans Insights Advisor et comprend les informations suivantes :

  • Name: Une description concise de la recommandation
  • Added: Date de publication de la recommandation dans les archives d'Insights Advisor
  • Category: Si le problème est susceptible d'avoir une incidence négative sur la disponibilité des services, la tolérance aux pannes, les performances ou la sécurité
  • Total risk: Une valeur dérivée de likelihood que la condition affectera négativement votre infrastructure, et de impact sur les opérations si cela devait se produire
  • Clusters: Une liste de grappes sur lesquelles une recommandation est détectée
  • Description: Un bref résumé de la question, y compris la manière dont elle affecte vos clusters
  • Link to associated topics: Plus d'informations de la part de Red Hat sur ce problème

4.5.3. Affichage des problèmes potentiels de votre cluster

Cette section décrit comment afficher le rapport Insights à l'adresse Insights Advisor sur OpenShift Cluster Manager Hybrid Cloud Console.

Notez qu'Insights analyse votre cluster à plusieurs reprises et affiche les derniers résultats. Ces résultats peuvent changer, par exemple, si vous corrigez un problème ou si un nouveau problème a été détecté.

Conditions préalables

Procédure

  1. Naviguez vers AdvisorRecommendations sur OpenShift Cluster Manager Hybrid Cloud Console.

    En fonction du résultat, Insights Advisor affiche l'un des éléments suivants :

    • No matching recommendations foundsi Insights n'a pas identifié de problèmes.
    • Liste des problèmes détectés par Insights, classés par risque (faible, modéré, important et critique).
    • No clusters yetsi Insights n'a pas encore analysé le cluster. L'analyse commence peu après l'installation, l'enregistrement et la connexion à Internet de la grappe.
  2. Si des problèmes sont affichés, cliquez sur l'icône > en face de l'entrée pour obtenir plus de détails.

    En fonction du problème, les détails peuvent également contenir un lien vers plus d'informations de Red Hat sur le problème.

4.5.4. Affichage de toutes les recommandations du conseiller Insights

Par défaut, la vue Recommandations n'affiche que les recommandations détectées sur vos clusters. Cependant, vous pouvez visualiser toutes les recommandations dans l'archive des conseillers.

Conditions préalables

Procédure

  1. Naviguez vers AdvisorRecommendations sur OpenShift Cluster Manager Hybrid Cloud Console.
  2. Cliquez sur les icônes X à côté des filtres Clusters Impacted et Status.

    Vous pouvez maintenant parcourir toutes les recommandations potentielles pour votre cluster.

4.5.5. Désactiver les recommandations du conseiller Insights

Vous pouvez désactiver des recommandations spécifiques qui affectent vos clusters, afin qu'elles n'apparaissent plus dans vos rapports. Il est possible de désactiver une recommandation pour un seul cluster ou pour l'ensemble de vos clusters.

Note

La désactivation d'une recommandation pour l'ensemble de vos clusters s'applique également à tous les clusters futurs.

Conditions préalables

Procédure

  1. Naviguez vers AdvisorRecommendations sur OpenShift Cluster Manager Hybrid Cloud Console.
  2. Cliquez sur le nom de la recommandation à désactiver. Vous êtes redirigé vers la page de la recommandation unique.
  3. Pour désactiver la recommandation pour un seul cluster :

    1. Cliquez sur le menu Options kebab pour ce cluster, puis cliquez sur Disable recommendation for cluster.
    2. Saisissez une note de justification et cliquez sur Save.
  4. Pour désactiver la recommandation pour tous vos clusters :

    1. Cliquez sur ActionsDisable recommendation.
    2. Saisissez une note de justification et cliquez sur Save.

4.5.6. Activation d'une recommandation du conseiller Insights précédemment désactivée

Lorsqu'une recommandation est désactivée pour tous les clusters, vous ne verrez plus la recommandation dans Insights Advisor. Vous pouvez modifier ce comportement.

Conditions préalables

Procédure

  1. Naviguez vers AdvisorRecommendations sur OpenShift Cluster Manager Hybrid Cloud Console.
  2. Filtrer les recommandations par StatusDisabled.
  3. Localisez la recommandation à activer.
  4. Cliquez sur le menu Options kebab puis cliquez sur Enable recommendation.

4.5.7. Affichage de l'état d'Insights dans la console web

Insights analyse de manière répétée votre cluster et vous pouvez afficher le statut des problèmes potentiels identifiés de votre cluster dans la console web d'OpenShift Container Platform. Ce statut indique le nombre de problèmes dans les différentes catégories et, pour plus de détails, des liens vers les rapports dans OpenShift Cluster Manager Hybrid Cloud Console.

Conditions préalables

  • Votre cluster est enregistré dans OpenShift Cluster Manager Hybrid Cloud Console.
  • Les rapports de santé à distance sont activés, ce qui est la valeur par défaut.
  • Vous êtes connecté à la console web de OpenShift Container Platform.

Procédure

  1. Naviguez vers HomeOverview dans la console web de OpenShift Container Platform.
  2. Cliquez sur Insights sur la carte Status.

    La fenêtre contextuelle répertorie les problèmes potentiels regroupés par risque. Cliquez sur les catégories individuelles ou sur View all recommendations in Insights Advisor pour afficher plus de détails.

4.6. Utilisation de l'opérateur Insights

L'opérateur Insights recueille périodiquement l'état de la configuration et des défaillances des composants et, par défaut, rapporte ces données toutes les deux heures à Red Hat. Ces informations permettent à Red Hat d'évaluer la configuration et les données de défaillance plus profondes que celles rapportées par Telemetry. Les utilisateurs d'OpenShift Container Platform peuvent afficher le rapport dans le service Insights Advisor sur Red Hat Hybrid Cloud Console.

Ressources supplémentaires

4.6.1. Comprendre Insights Alertes de l'opérateur

Insights Operator déclare des alertes à Alertmanager via le système de surveillance Prometheus. Vous pouvez visualiser ces alertes dans l'interface utilisateur Alerting accessible via la perspective Administrator et la perspective Developer dans la console web OpenShift Container Platform.

Actuellement, Insights Operator envoie les alertes suivantes lorsque les conditions sont remplies :

Tableau 4.1. Alertes de l'opérateur Insights

AlerteDescription

InsightsDisabled

L'opérateur Insights est désactivé.

SimpleContentAccessNotAvailable

L'accès simple au contenu n'est pas activé dans Red Hat Subscription Management.

InsightsRecommendationActive

Insights a une recommandation active pour le cluster.

4.6.2. Désactivation des alertes de l'opérateur Insights

Vous pouvez empêcher Insights Operator d'envoyer des alertes à l'instance Prometheus du cluster.

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sur la page Secrets, sélectionnez All Projects dans la liste Project, puis activez Show default projects.
  3. Sélectionnez le projet openshift-config dans la liste Projects.
  4. Recherchez le secret support dans le champ Search by name. Si le secret n'existe pas, cliquez sur CreateKey/value secret pour le créer.
  5. Cliquez sur le menu Options kebab puis cliquez sur Edit Secret.
  6. Cliquez sur Add Key/Value.
  7. Saisissez disableInsightsAlerts comme clé avec la valeur True, et cliquez sur Save.

Une fois les modifications enregistrées, Insights Operator n'enverra plus d'alertes à l'instance Prometheus du cluster.

4.6.3. Téléchargement de l'archive d'Insights Operator

Insights Operator stocke les données recueillies dans une archive située dans l'espace de noms openshift-insights de votre cluster. Vous pouvez télécharger et consulter les données collectées par Insights Operator.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  1. Recherchez le nom du module en cours d'exécution pour l'opérateur Insights :

    $ oc get pods --namespace=openshift-insights -o custom-columns=:metadata.name --no-headers  --field-selector=status.phase=Running
  2. Copier les archives de données récentes collectées par l'opérateur Insights :

    oc cp openshift-insights/<insights_operator_pod_name>:/var/lib/insights-operator ./insights-data 1
    1
    Remplacez <insights_operator_pod_name> par le nom du pod résultant de la commande précédente.

Les archives récentes d'Insights Operator sont désormais disponibles dans le répertoire insights-data.

4.6.4. Visualisation des durées de collecte de l'opérateur Insights

Vous pouvez visualiser le temps nécessaire à l'opérateur Insights pour collecter les informations contenues dans l'archive. Cela vous aide à comprendre l'utilisation des ressources de l'opérateur Insights et les problèmes rencontrés par Insights Advisor.

Conditions préalables

  • Une copie récente de votre archive Insights Operator.

Procédure

  1. Depuis votre archive, ouvrez /insights-operator/gathers.json.

    Le fichier contient une liste des opérations de collecte de l'opérateur Insights :

        {
          "name": "clusterconfig/authentication",
          "duration_in_ms": 730, 1
          "records_count": 1,
          "errors": null,
          "panic": null
        }
    1
    duration_in_ms est le temps en millisecondes pour chaque opération de collecte.
  2. Vérifier que chaque opération de rassemblement ne présente pas d'anomalie.

4.6.5. Désactivation des opérations de collecte de l'opérateur Insights

Vous pouvez désactiver les opérations de collecte d'Insights Operator. La désactivation des opérations de collecte vous permet d'accroître la confidentialité de votre organisation, car Insights Operator ne collectera plus et n'enverra plus de rapports sur les clusters Insights à Red Hat. Cela désactivera l'analyse et les recommandations d'Insights pour votre cluster sans affecter les autres fonctions principales qui nécessitent une communication avec Red Hat, telles que les transferts de clusters. Vous pouvez consulter une liste des tentatives d'opérations de collecte pour votre cluster à partir du fichier /insights-operator/gathers.json dans votre archive Insights Operator. Sachez que certaines opérations de collecte ne se produisent que lorsque certaines conditions sont remplies et peuvent ne pas apparaître dans votre archive la plus récente.

Important

La ressource personnalisée InsightsDataGather est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform en tant qu'utilisateur avec le rôle cluster-admin.

Procédure

  1. Naviguez jusqu'à AdministrationCustomResourceDefinitions.
  2. Sur la page CustomResourceDefinitions, utilisez le champ Search by name pour trouver la définition de la ressource InsightsDataGather et cliquez dessus.
  3. Sur la page CustomResourceDefinition details, cliquez sur l'onglet Instances.
  4. Cliquez sur cluster, puis sur l'onglet YAML.
  5. Pour désactiver toutes les opérations de collecte, modifiez le fichier de configuration InsightsDataGather:

    apiVersion: config.openshift.io/v1alpha1
    kind: InsightsDataGather
    metadata:
    ....
    
    spec: 1
      gatherConfig:
        disabledGatherers:
          - all 2
    1
    Le paramètre spec spécifie les configurations de rassemblement.
    2
    La valeur all désactive toutes les opérations de collecte.

    Pour désactiver certaines opérations de collecte, saisissez leur valeur sous la touche disabledGatherers:

    spec:
      gatherConfig:
        disabledGatherers:
          - clusterconfig/container_images 1
          - clusterconfig/host_subnets
          - workloads/workload_info
    1
    Exemple d'opération de collecte individuelle
  6. Cliquez sur Save.

    Après avoir enregistré les modifications, les configurations de rassemblement de l'opérateur Insights sont mises à jour et les opérations ne se produisent plus.

Note

La désactivation des opérations de collecte dégrade la capacité d'Insights Advisor à proposer des recommandations efficaces pour votre cluster.

4.6.6. Configuration de l'opérateur Insights

Vous pouvez configurer Insights Operator pour répondre aux besoins de votre organisation. Insights Operator est configuré en utilisant une combinaison des configurations par défaut dans le fichier pod.yaml dans le répertoire Insights Operator Config et les configurations stockées dans le secret support dans l'espace de noms openshift-config. Le secret support n'existe pas par défaut et doit être créé lors du premier ajout de configurations personnalisées. Les configurations contenues dans le secret support remplacent les valeurs par défaut définies dans le fichier pod.yaml.

Le tableau ci-dessous décrit les attributs de configuration disponibles :

Tableau 4.2. Attributs configurables de l'opérateur Insights

Nom de l'attributDescriptionType de valeurValeur par défaut

username

Spécifie le nom d'utilisateur pour l'authentification de base avec console.redhat.com (remplace l'authentification par jeton par défaut pull-secret lorsqu'il est défini)

String

Non défini

password

Spécifie le mot de passe pour l'authentification de base avec console.redhat.com (remplace l'authentification par jeton par défaut de pull-secret lorsqu'il est défini)

String

Non défini

enableGlobalObfuscation

Active l'obscurcissement global des adresses IP et du nom de domaine du cluster

Booléen

false

scaInterval

Spécifie la fréquence de téléchargement des droits d'accès au contenu simple

Intervalle de temps

8h

scaPullDisabled

Désactive le téléchargement des droits d'accès au contenu simple

Booléen

false

clusterTransferInterval

Spécifie la fréquence à laquelle Insights Operator vérifie OpenShift Cluster Manager pour les transferts de clusters disponibles

Intervalle de temps

24h

disableInsightsAlerts

Désactive les alertes de l'opérateur Insights vers l'instance Prometheus du cluster

Booléen

False

Cette procédure décrit comment définir des configurations personnalisées pour l'opérateur Insights.

Important

Red Hat vous recommande de consulter l'assistance Red Hat avant d'apporter des modifications à la configuration par défaut d'Insights Operator.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform en tant qu'utilisateur avec le rôle cluster-admin.

Procédure

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sur la page Secrets, sélectionnez All Projects dans la liste Project, puis activez Show default projects.
  3. Sélectionnez le projet openshift-config dans la liste Project.
  4. Recherchez le secret support dans le champ Search by name. S'il n'existe pas, cliquez sur CreateKey/value secret pour le créer.
  5. Cliquez sur le menu Options kebab pour le secret, puis cliquez sur Edit Secret.
  6. Cliquez sur Add Key/Value.
  7. Saisissez un nom d'attribut avec une valeur appropriée (voir tableau ci-dessus) et cliquez sur Save.
  8. Répétez les étapes ci-dessus pour toute configuration supplémentaire.

4.7. Utilisation des rapports de santé à distance dans un réseau restreint

Vous pouvez collecter et télécharger manuellement les archives d'Insights Operator pour diagnostiquer les problèmes à partir d'un réseau restreint.

Pour utiliser l'Opérateur Insights dans un réseau restreint, vous devez

  • Créez une copie de votre archive Insights Operator.
  • Téléchargez l'archive Insights Operator sur console.redhat.com.

En outre, vous pouvez choisir d'obscurcir les données de l'opérateur Insights avant de les télécharger.

4.7.1. Exécution d'une opération de collecte par Insights Operator

Vous devez exécuter une opération de collecte pour créer une archive Insights Operator.

Conditions préalables

  • Vous êtes connecté à OpenShift Container Platform en tant que cluster-admin.

Procédure

  1. Créez un fichier nommé gather-job.yaml en utilisant ce modèle :

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: insights-operator-job
      annotations:
        config.openshift.io/inject-proxy: insights-operator
    spec:
      backoffLimit: 6
      ttlSecondsAfterFinished: 600
      template:
        spec:
          restartPolicy: OnFailure
          serviceAccountName: operator
          nodeSelector:
            beta.kubernetes.io/os: linux
            node-role.kubernetes.io/master: ""
          tolerations:
          - effect: NoSchedule
            key: node-role.kubernetes.io/master
            operator: Exists
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 900
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 900
          volumes:
          - name: snapshots
            emptyDir: {}
          - name: service-ca-bundle
            configMap:
              name: service-ca-bundle
              optional: true
          initContainers:
          - name: insights-operator
            image: quay.io/openshift/origin-insights-operator:latest
            terminationMessagePolicy: FallbackToLogsOnError
            volumeMounts:
            - name: snapshots
              mountPath: /var/lib/insights-operator
            - name: service-ca-bundle
              mountPath: /var/run/configmaps/service-ca-bundle
              readOnly: true
            ports:
            - containerPort: 8443
              name: https
            resources:
              requests:
                cpu: 10m
                memory: 70Mi
            args:
            - gather
            - -v=4
            - --config=/etc/insights-operator/server.yaml
          containers:
            - name: sleepy
              image: quay.io/openshift/origin-base:latest
              args:
                - /bin/sh
                - -c
                - sleep 10m
              volumeMounts: [{name: snapshots, mountPath: /var/lib/insights-operator}]
  2. Copiez votre version de l'image insights-operator:

    $ oc get -n openshift-insights deployment insights-operator -o yaml
  3. Collez votre version de l'image dans gather-job.yaml:

    initContainers:
          - name: insights-operator
            image: <your_insights_operator_image_version>
            terminationMessagePolicy: FallbackToLogsOnError
            volumeMounts:
  4. Créer le travail de collecte :

    $ oc apply -n openshift-insights -f gather-job.yaml
  5. Recherchez le nom de l'unité d'emploi :

    $ oc describe -n openshift-insights job/insights-operator-job

    Exemple de sortie

    Events:
      Type    Reason            Age    From            Message
      ----    ------            ----   ----            -------
      Normal  SuccessfulCreate  7m18s  job-controller  Created pod: insights-operator-job-<your_job>

    insights-operator-job-<your_job> est le nom du module.

  6. Vérifiez que l'opération est terminée :

    oc logs -n openshift-insights insights-operator-job-<your_job> insights-operator

    Exemple de sortie

    I0407 11:55:38.192084       1 diskrecorder.go:34] Wrote 108 records to disk in 33ms

  7. Sauvegarder l'archive créée :

    $ oc cp openshift-insights/insights-operator-job-<your_job>:/var/lib/insights-operator ./insights-data
  8. Nettoyer le travail :

    $ oc delete -n openshift-insights job insights-operator-job

4.7.2. Téléchargement d'une archive Insights Operator

Vous pouvez télécharger manuellement une archive Insights Operator vers console.redhat.com pour diagnostiquer les problèmes potentiels.

Conditions préalables

  • Vous êtes connecté à OpenShift Container Platform en tant que cluster-admin.
  • Vous disposez d'un poste de travail avec un accès illimité à l'internet.
  • Vous avez créé une copie de l'archive Insights Operator.

Procédure

  1. Téléchargez le fichier dockerconfig.json:

    $ oc extract secret/pull-secret -n openshift-config --to=.
  2. Copiez votre jeton "cloud.openshift.com" "auth" dans le fichier dockerconfig.json:

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "<your_token>",
          "email": "asd@redhat.com"
        }
    }
  3. Téléchargez l'archive sur console.redhat.com:

    $ curl -v -H \N "User-Agent : insights-operator/one10time200gather184a34f6a168926d93c330 cluster/<cluster_id>\N" -H "Authorization : Bearer <your_token>\N" -F \N "upload=@<path_to_archive>; type=application/vnd.redhat.openshift.periodic tar\N" https://console.redhat.com/api/ingress/v1/upload

    <cluster_id> est l'identifiant de votre cluster, <your_token> est le jeton de votre secret d'extraction, et <path_to_archive> est le chemin d'accès à l'archive Insights Operator.

    Si l'opération est réussie, la commande renvoie une adresse "request_id" et "account_number":

    Exemple de sortie

    * Connection #0 to host console.redhat.com left intact
    {"request_id":"393a7cf1093e434ea8dd4ab3eb28884c","upload":{"account_number":"6274079"}}%

Verification steps

  1. Connectez-vous à https://console.redhat.com/openshift.
  2. Cliquez sur le menu Clusters dans le volet gauche.
  3. Pour afficher les détails du cluster, cliquez sur le nom du cluster.
  4. Ouvrez l'onglet Insights Advisor du cluster.

    Si le téléchargement a réussi, l'onglet affiche l'un des éléments suivants :

    • Your cluster passed all recommendationssi le conseiller Insights n'a pas identifié de problème.
    • Liste des problèmes détectés par Insights Advisor, classés par ordre de priorité en fonction du risque (faible, modéré, important et critique).

4.7.3. Permettre de comprendre L'obscurcissement des données de l'opérateur

Vous pouvez activer l'obscurcissement pour masquer les adresses IPv4 et les domaines de base de cluster sensibles et identifiables que l'opérateur Insights envoie à console.redhat.com.

Avertissement

Bien que cette fonctionnalité soit disponible, Red Hat recommande de laisser l'obscurcissement désactivé pour une expérience d'assistance plus efficace.

L'obscurcissement attribue des valeurs non identifiantes aux adresses IPv4 des clusters et utilise une table de traduction conservée en mémoire pour remplacer les adresses IP par leurs versions obscurcies dans l'ensemble de l'archive Insights Operator avant de télécharger les données vers console.redhat.com.

Pour les domaines de base des clusters, l'obscurcissement remplace le domaine de base par une sous-chaîne codée en dur. Par exemple, cluster-api.openshift.example.com devient cluster-api.<CLUSTER_BASE_DOMAIN>.

La procédure suivante permet l'obscurcissement à l'aide du secret support dans l'espace de noms openshift-config.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform en tant que cluster-admin.

Procédure

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sélectionnez le projet openshift-config.
  3. Recherchez le secret support dans le champ Search by name. S'il n'existe pas, cliquez sur CreateKey/value secret pour le créer.
  4. Cliquez sur le menu Options kebab puis cliquez sur Edit Secret.
  5. Cliquez sur Add Key/Value.
  6. Créez une clé nommée enableGlobalObfuscation avec une valeur de true, et cliquez sur Save.
  7. Naviguez vers WorkloadsPods
  8. Sélectionnez le projet openshift-insights.
  9. Trouvez la nacelle insights-operator.
  10. Pour redémarrer le pod insights-operator, cliquez sur le menu Options kebab puis cliquez sur Delete Pod.

Vérification

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sélectionnez le projet openshift-insights.
  3. Recherchez le secret obfuscation-translation-table en utilisant le champ Search by name.

Si le secret obfuscation-translation-table existe, l'obscurcissement est activé et fonctionne.

Vous pouvez également rechercher la valeur "is_global_obfuscation_enabled": true dans votre archive Insights Operator à l'adresse /insights-operator/gathers.json.

Ressources supplémentaires

4.8. Importer des droits d'accès à des contenus simples avec Insights Operator

Insights Operator importe périodiquement vos droits d'accès au contenu simple depuis OpenShift Cluster Manager Hybrid Cloud Console et les stocke dans le secret etc-pki-entitlement dans l'espace de noms openshift-config-managed. L'accès au contenu simple est une capacité des outils d'abonnement Red Hat qui simplifie le comportement de l'outil de droits. Cette fonctionnalité facilite la consommation du contenu fourni par vos abonnements Red Hat sans la complexité de la configuration de l'outil d'abonnement.

Insights Operator importe les droits d'accès au contenu simple toutes les huit heures, mais il peut être configuré ou désactivé à l'aide du secret support dans l'espace de noms openshift-config.

Note

L'accès simple au contenu doit être activé dans Red Hat Subscription Management pour que l'importation fonctionne.

Ressources supplémentaires

4.8.1. Configuration de l'intervalle d'importation de l'accès au contenu simple

Vous pouvez configurer la fréquence à laquelle l'opérateur Insights importe les droits d'accès au contenu simple à l'aide du secret support dans l'espace de noms openshift-config. L'importation des droits se produit normalement toutes les huit heures, mais vous pouvez raccourcir cet intervalle si vous mettez à jour votre configuration d'accès au contenu simple dans Red Hat Subscription Management.

Cette procédure décrit comment mettre à jour l'intervalle d'importation à une heure.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform en tant que cluster-admin.

Procédure

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sélectionnez le projet openshift-config.
  3. Recherchez le secret support dans le champ Search by name. S'il n'existe pas, cliquez sur CreateKey/value secret pour le créer.
  4. Cliquez sur le menu Options kebab puis cliquez sur Edit Secret.
  5. Cliquez sur Add Key/Value.
  6. Créez une clé nommée scaInterval avec une valeur de 1h, et cliquez sur Save.

    Note

    L'intervalle 1h peut également être saisi comme 60m pour 60 minutes.

4.8.2. Désactivation de l'importation simple d'accès au contenu

Vous pouvez désactiver l'importation des droits d'accès au contenu simple en utilisant le secret support dans l'espace de noms openshift-config.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform en tant que cluster-admin.

Procédure

  1. Naviguez jusqu'à WorkloadsSecrets.
  2. Sélectionnez le projet openshift-config.
  3. Recherchez le secret support dans le champ Search by name. S'il n'existe pas, cliquez sur CreateKey/value secret pour le créer.
  4. Cliquez sur le menu Options kebab puis cliquez sur Edit Secret.
  5. Cliquez sur Add Key/Value.
  6. Créez une clé nommée scaPullDisabled avec une valeur de true, et cliquez sur Save.

    L'importation des droits d'accès au contenu simple est désormais désactivée.

    Note

    Pour réactiver l'importation de contenu simple, modifiez le secret support et supprimez la clé scaPullDisabled.

Chapitre 5. Collecte de données sur votre cluster

Lorsque vous ouvrez un dossier d'assistance, il est utile de fournir des informations de débogage sur votre cluster à l'équipe d'assistance de Red Hat.

Il est recommandé de fournir :

5.1. À propos de l'outil de collecte obligatoire

La commande CLI oc adm must-gather recueille les informations de votre cluster les plus susceptibles d'être nécessaires au débogage des problèmes, notamment

  • Définitions des ressources
  • Journaux de service

Par défaut, la commande oc adm must-gather utilise l'image du plugin par défaut et écrit dans ./must-gather.local.

Vous pouvez également recueillir des informations spécifiques en exécutant la commande avec les arguments appropriés, comme décrit dans les sections suivantes :

  • Pour collecter des données relatives à une ou plusieurs caractéristiques spécifiques, utilisez l'argument --image avec une image, comme indiqué dans la section suivante.

    Par exemple :

    $ oc adm must-gather  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.12.0
  • Pour collecter les journaux d'audit, utilisez l'argument -- /usr/bin/gather_audit_logs, comme décrit dans la section suivante.

    Par exemple :

    $ oc adm must-gather -- /usr/bin/gather_audit_logs
    Note

    Les journaux d'audit ne sont pas collectés dans le cadre de l'ensemble d'informations par défaut afin de réduire la taille des fichiers.

Lorsque vous exécutez oc adm must-gather, un nouveau module portant un nom aléatoire est créé dans un nouveau projet sur le cluster. Les données sont collectées sur ce module et enregistrées dans un nouveau répertoire commençant par must-gather.local. Ce répertoire est créé dans le répertoire de travail actuel.

Par exemple :

NAMESPACE                      NAME                 READY   STATUS      RESTARTS      AGE
...
openshift-must-gather-5drcj    must-gather-bklx4    2/2     Running     0             72s
openshift-must-gather-5drcj    must-gather-s8sdh    2/2     Running     0             72s
...

5.1.1. Collecte de données sur votre cluster pour l'assistance Red Hat

Vous pouvez recueillir des informations de débogage sur votre cluster en utilisant la commande CLI oc adm must-gather.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • L'OpenShift Container Platform CLI (oc) est installé.

Procédure

  1. Accédez au répertoire dans lequel vous souhaitez stocker les données must-gather.

    Note

    Si votre cluster utilise un réseau restreint, vous devez prendre des mesures supplémentaires. Si votre registre miroir dispose d'une autorité de certification approuvée, vous devez d'abord ajouter cette dernière au cluster. Pour tous les clusters sur des réseaux restreints, vous devez importer l'image par défaut must-gather en tant que flux d'images.

    $ oc import-image is/must-gather -n openshift
  2. Exécutez la commande oc adm must-gather:

    $ oc adm must-gather
    Note

    Comme cette commande choisit un nœud de plan de contrôle aléatoire par défaut, le pod peut être programmé sur un nœud de plan de contrôle qui se trouve dans l'état NotReady et SchedulingDisabled.

    1. Si cette commande échoue, par exemple si vous ne pouvez pas planifier un pod sur votre cluster, utilisez la commande oc adm inspect pour recueillir des informations sur des ressources particulières.

      Note

      Contactez l'assistance de Red Hat pour connaître les ressources recommandées à rassembler.

  3. Créez un fichier compressé à partir du répertoire must-gather qui vient d'être créé dans votre répertoire de travail. Par exemple, sur un ordinateur utilisant un système d'exploitation Linux, exécutez la commande suivante :

    $ tar cvaf must-gather.tar.gz must-gather.local.5421342344627712289/ 1
    1
    Veillez à remplacer must-gather-local.5421342344627712289/ par le nom réel du répertoire.
  4. Joignez le fichier compressé à votre demande d'assistance sur le portail client de Red Hat.

5.1.2. Collecte de données sur des caractéristiques spécifiques

Vous pouvez obtenir des informations de débogage sur des fonctionnalités spécifiques en utilisant la commande CLI oc adm must-gather avec l'argument --image ou --image-stream. L'outil must-gather prend en charge plusieurs images, ce qui vous permet de recueillir des données sur plus d'une fonctionnalité en exécutant une seule commande.

Tableau 5.1. Images à collecter obligatoirement prises en charge

ImageObjectif

registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.12.2

Collecte de données pour OpenShift Virtualization.

registry.redhat.io/openshift-serverless-1/svls-must-gather-rhel8

Collecte de données pour OpenShift Serverless.

registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:2.3

Collecte de données pour Red Hat OpenShift Service Mesh.

registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7

Collecte de données pour le Migration Toolkit for Containers.

registry.redhat.io/odf4/ocs-must-gather-rhel8:v4.9

Collecte de données pour Red Hat OpenShift Data Foundation.

registry.redhat.io/openshift-logging/cluster-logging-rhel8-operator

Collecte de données pour OpenShift Logging.

registry.redhat.io/openshift4/ose-csi-driver-shared-resource-mustgather-rhel8

Collecte de données pour OpenShift Shared Resource CSI Driver.

registry.redhat.io/openshift4/ose-local-storage-mustgather-rhel8:v<installed_version_LSO>

Collecte de données pour l'opérateur de stockage local.

registry.redhat.io/openshift-sandboxed-containers/osc-must-gather-rhel8:1.3.0

Collecte de données pour les conteneurs OpenShift sandboxed.

registry.redhat.io/workload-availability/self-node-remediation-must-gather-rhel8:v<installed-version-SNR>

Collecte de données pour l'opérateur d'auto-assainissement des nœuds (SNR) et l'opérateur de contrôle de l'état des nœuds (NHC).

registry.redhat.io/workload-availability/node-maintenance-must-gather-rhel8:v<installed-version-NMO>

Collecte de données pour l'opérateur de maintenance des nœuds (OMN).

quay.io/openshift-pipeline/must-gather

Collecte de données pour Red Hat OpenShift Pipelines

Note
  • Pour collecter les données par défaut must-gather en plus des données relatives à des caractéristiques spécifiques, ajoutez l'argument --image-stream=openshift/must-gather.
  • Pour plus d'informations sur la collecte de données concernant l'Autoscaler Custom Metrics, reportez-vous à la section Ressources supplémentaires ci-dessous.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • L'OpenShift Container Platform CLI (oc) est installé.

Procédure

  1. Accédez au répertoire dans lequel vous souhaitez stocker les données must-gather.
  2. Exécutez la commande oc adm must-gather avec un ou plusieurs arguments --image ou --image-stream. Par exemple, la commande suivante rassemble à la fois les données de cluster par défaut et les informations spécifiques à OpenShift Virtualization :

    $ oc adm must-gather \
     --image-stream=openshift/must-gather \ 1
     --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.12.2 2
    1
    L'image par défaut d'OpenShift Container Platform must-gather
    2
    L'image indispensable pour OpenShift Virtualization

    Vous pouvez utiliser l'outil must-gather avec des arguments supplémentaires pour rassembler des données qui sont spécifiquement liées à OpenShift Logging et à l'opérateur Red Hat OpenShift Logging dans votre cluster. Pour OpenShift Logging, exécutez la commande suivante :

    $ oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator \
     -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')

    Exemple 5.1. Exemple de sortie must-gather pour OpenShift Logging

    ├── cluster-logging
    │  ├── clo
    │  │  ├── cluster-logging-operator-74dd5994f-6ttgt
    │  │  ├── clusterlogforwarder_cr
    │  │  ├── cr
    │  │  ├── csv
    │  │  ├── deployment
    │  │  └── logforwarding_cr
    │  ├── collector
    │  │  ├── fluentd-2tr64
    │  ├── eo
    │  │  ├── csv
    │  │  ├── deployment
    │  │  └── elasticsearch-operator-7dc7d97b9d-jb4r4
    │  ├── es
    │  │  ├── cluster-elasticsearch
    │  │  │  ├── aliases
    │  │  │  ├── health
    │  │  │  ├── indices
    │  │  │  ├── latest_documents.json
    │  │  │  ├── nodes
    │  │  │  ├── nodes_stats.json
    │  │  │  └── thread_pool
    │  │  ├── cr
    │  │  ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
    │  │  └── logs
    │  │     ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
    │  ├── install
    │  │  ├── co_logs
    │  │  ├── install_plan
    │  │  ├── olmo_logs
    │  │  └── subscription
    │  └── kibana
    │     ├── cr
    │     ├── kibana-9d69668d4-2rkvz
    ├── cluster-scoped-resources
    │  └── core
    │     ├── nodes
    │     │  ├── ip-10-0-146-180.eu-west-1.compute.internal.yaml
    │     └── persistentvolumes
    │        ├── pvc-0a8d65d9-54aa-4c44-9ecc-33d9381e41c1.yaml
    ├── event-filter.html
    ├── gather-debug.log
    └── namespaces
       ├── openshift-logging
       │  ├── apps
       │  │  ├── daemonsets.yaml
       │  │  ├── deployments.yaml
       │  │  ├── replicasets.yaml
       │  │  └── statefulsets.yaml
       │  ├── batch
       │  │  ├── cronjobs.yaml
       │  │  └── jobs.yaml
       │  ├── core
       │  │  ├── configmaps.yaml
       │  │  ├── endpoints.yaml
       │  │  ├── events
       │  │  │  ├── elasticsearch-im-app-1596020400-gm6nl.1626341a296c16a1.yaml
       │  │  │  ├── elasticsearch-im-audit-1596020400-9l9n4.1626341a2af81bbd.yaml
       │  │  │  ├── elasticsearch-im-infra-1596020400-v98tk.1626341a2d821069.yaml
       │  │  │  ├── elasticsearch-im-app-1596020400-cc5vc.1626341a3019b238.yaml
       │  │  │  ├── elasticsearch-im-audit-1596020400-s8d5s.1626341a31f7b315.yaml
       │  │  │  ├── elasticsearch-im-infra-1596020400-7mgv8.1626341a35ea59ed.yaml
       │  │  ├── events.yaml
       │  │  ├── persistentvolumeclaims.yaml
       │  │  ├── pods.yaml
       │  │  ├── replicationcontrollers.yaml
       │  │  ├── secrets.yaml
       │  │  └── services.yaml
       │  ├── openshift-logging.yaml
       │  ├── pods
       │  │  ├── cluster-logging-operator-74dd5994f-6ttgt
       │  │  │  ├── cluster-logging-operator
       │  │  │  │  └── cluster-logging-operator
       │  │  │  │     └── logs
       │  │  │  │        ├── current.log
       │  │  │  │        ├── previous.insecure.log
       │  │  │  │        └── previous.log
       │  │  │  └── cluster-logging-operator-74dd5994f-6ttgt.yaml
       │  │  ├── cluster-logging-operator-registry-6df49d7d4-mxxff
       │  │  │  ├── cluster-logging-operator-registry
       │  │  │  │  └── cluster-logging-operator-registry
       │  │  │  │     └── logs
       │  │  │  │        ├── current.log
       │  │  │  │        ├── previous.insecure.log
       │  │  │  │        └── previous.log
       │  │  │  ├── cluster-logging-operator-registry-6df49d7d4-mxxff.yaml
       │  │  │  └── mutate-csv-and-generate-sqlite-db
       │  │  │     └── mutate-csv-and-generate-sqlite-db
       │  │  │        └── logs
       │  │  │           ├── current.log
       │  │  │           ├── previous.insecure.log
       │  │  │           └── previous.log
       │  │  ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
       │  │  ├── elasticsearch-im-app-1596030300-bpgcx
       │  │  │  ├── elasticsearch-im-app-1596030300-bpgcx.yaml
       │  │  │  └── indexmanagement
       │  │  │     └── indexmanagement
       │  │  │        └── logs
       │  │  │           ├── current.log
       │  │  │           ├── previous.insecure.log
       │  │  │           └── previous.log
       │  │  ├── fluentd-2tr64
       │  │  │  ├── fluentd
       │  │  │  │  └── fluentd
       │  │  │  │     └── logs
       │  │  │  │        ├── current.log
       │  │  │  │        ├── previous.insecure.log
       │  │  │  │        └── previous.log
       │  │  │  ├── fluentd-2tr64.yaml
       │  │  │  └── fluentd-init
       │  │  │     └── fluentd-init
       │  │  │        └── logs
       │  │  │           ├── current.log
       │  │  │           ├── previous.insecure.log
       │  │  │           └── previous.log
       │  │  ├── kibana-9d69668d4-2rkvz
       │  │  │  ├── kibana
       │  │  │  │  └── kibana
       │  │  │  │     └── logs
       │  │  │  │        ├── current.log
       │  │  │  │        ├── previous.insecure.log
       │  │  │  │        └── previous.log
       │  │  │  ├── kibana-9d69668d4-2rkvz.yaml
       │  │  │  └── kibana-proxy
       │  │  │     └── kibana-proxy
       │  │  │        └── logs
       │  │  │           ├── current.log
       │  │  │           ├── previous.insecure.log
       │  │  │           └── previous.log
       │  └── route.openshift.io
       │     └── routes.yaml
       └── openshift-operators-redhat
          ├── ...
  3. Exécutez la commande oc adm must-gather avec un ou plusieurs arguments --image ou --image-stream. Par exemple, la commande suivante rassemble à la fois les données du cluster par défaut et les informations spécifiques à KubeVirt :

    $ oc adm must-gather \
     --image-stream=openshift/must-gather \ 1
     --image=quay.io/kubevirt/must-gather 2
    1
    L'image par défaut d'OpenShift Container Platform must-gather
    2
    L'image obligatoire pour KubeVirt
  4. Créez un fichier compressé à partir du répertoire must-gather qui vient d'être créé dans votre répertoire de travail. Par exemple, sur un ordinateur utilisant un système d'exploitation Linux, exécutez la commande suivante :

    $ tar cvaf must-gather.tar.gz must-gather.local.5421342344627712289/ 1
    1
    Veillez à remplacer must-gather-local.5421342344627712289/ par le nom réel du répertoire.
  5. Joignez le fichier compressé à votre demande d'assistance sur le portail client de Red Hat.

5.2. Ressources supplémentaires

5.2.1. Collecte des journaux d'audit

Vous pouvez collecter des journaux d'audit, qui sont un ensemble chronologique d'enregistrements relatifs à la sécurité documentant la séquence des activités qui ont affecté le système par des utilisateurs individuels, des administrateurs ou d'autres composants du système. Vous pouvez collecter des journaux d'audit pour :

  • serveur etcd
  • Serveur API Kubernetes
  • Serveur OpenShift OAuth API
  • Serveur API OpenShift

Procédure

  1. Exécutez la commande oc adm must-gather avec -- /usr/bin/gather_audit_logs:

    $ oc adm must-gather -- /usr/bin/gather_audit_logs
  2. Créez un fichier compressé à partir du répertoire must-gather qui vient d'être créé dans votre répertoire de travail. Par exemple, sur un ordinateur utilisant un système d'exploitation Linux, exécutez la commande suivante :

    $ tar cvaf must-gather.tar.gz must-gather.local.472290403699006248 1
    1
    Remplacez must-gather-local.472290403699006248 par le nom du répertoire.
  3. Joignez le fichier compressé à votre demande d'assistance sur le portail client de Red Hat.

5.2.2. Collecte de journaux de réseau

Vous pouvez collecter des journaux de réseau sur tous les nœuds d'une grappe.

Procédure

  1. Exécutez la commande oc adm must-gather avec -- gather_network_logs:

    $ oc adm must-gather -- gather_network_logs
  2. Créez un fichier compressé à partir du répertoire must-gather qui vient d'être créé dans votre répertoire de travail. Par exemple, sur un ordinateur utilisant un système d'exploitation Linux, exécutez la commande suivante :

    $ tar cvaf must-gather.tar.gz must-gather.local.472290403699006248 1
    1
    Remplacez must-gather-local.472290403699006248 par le nom du répertoire.
  3. Joignez le fichier compressé à votre demande d'assistance sur le portail client de Red Hat.

5.3. Obtention de l'identifiant du cluster

Lorsque vous fournissez des informations à l'assistance Red Hat, il est utile de fournir l'identifiant unique de votre cluster. Vous pouvez faire en sorte que l'identifiant de votre cluster soit rempli automatiquement en utilisant la console web d'OpenShift Container Platform. Vous pouvez également obtenir manuellement l'identifiant de votre cluster en utilisant la console Web ou l'OpenShift CLI (oc).

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Accès à la console web ou à l'OpenShift CLI (oc) installé.

Procédure

  • Pour ouvrir un dossier d'assistance et faire remplir automatiquement votre ID de cluster à l'aide de la console web :

    1. Dans la barre d'outils, naviguez vers (?) HelpOpen Support Case.
    2. La valeur Cluster ID est remplie automatiquement.
  • Pour obtenir manuellement votre ID de cluster à l'aide de la console web :

    1. Naviguez vers HomeDashboardsOverview.
    2. La valeur est disponible dans le champ Cluster ID de la section Details.
  • Pour obtenir l'ID de votre cluster à l'aide de l'OpenShift CLI (oc), exécutez la commande suivante :

    $ oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}'

5.4. À propos de sosreport

sosreport est un outil qui collecte des détails de configuration, des informations sur le système et des données de diagnostic à partir des systèmes Red Hat Enterprise Linux (RHEL) et Red Hat Enterprise Linux CoreOS (RHCOS). sosreport fournit un moyen standardisé de collecter des informations de diagnostic relatives à un nœud, qui peuvent ensuite être fournies à l'assistance Red Hat pour le diagnostic des problèmes.

Dans certaines interactions d'assistance, l'assistance Red Hat peut vous demander de collecter une archive sosreport pour un nœud OpenShift Container Platform spécifique. Par exemple, il peut parfois être nécessaire d'examiner les journaux du système ou d'autres données spécifiques au nœud qui ne sont pas incluses dans la sortie de oc adm must-gather.

5.5. Générer une archive sosreport pour un nœud de cluster OpenShift Container Platform

La manière recommandée de générer un sosreport pour un nœud de cluster OpenShift Container Platform 4.12 est à travers un pod de débogage.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez un accès SSH à vos hôtes.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un abonnement standard ou premium Red Hat.
  • Vous disposez d'un compte Red Hat Customer Portal.
  • Vous avez un numéro d'identification de dossier d'assistance Red Hat existant.

Procédure

  1. Obtenir une liste des nœuds de la grappe :

    $ oc get nodes
  2. Entrez dans une session de débogage sur le nœud cible. Cette étape instancie un pod de débogage appelé <node_name>-debug:

    $ oc debug node/my-cluster-node

    Pour entrer dans une session de débogage sur le nœud cible entaché de l'effet NoExecute, ajoutez une tolérance à un espace de noms fictif et démarrez le module de débogage dans l'espace de noms fictif :

    $ oc new-project dummy
    $ oc patch namespace dummy --type=merge -p '{"metadata": {"annotations": { "scheduler.alpha.kubernetes.io/defaultTolerations": "[{\"operator\": \"Exists\"}]"}}}'
    $ oc debug node/my-cluster-node
  3. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

    # chroot /host
    Note

    Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

  4. Démarrer un conteneur toolbox, qui contient les binaires et les plugins nécessaires à l'exécution de sosreport:

    # toolbox
    Note

    Si un pod toolbox est déjà en cours d'exécution, la commande toolbox produit 'toolbox-' already exists. Trying to start…​. Supprimez le conteneur de boîte à outils en cours d'exécution avec podman rm toolbox- et créez un nouveau conteneur de boîte à outils, afin d'éviter tout problème avec les plugins sosreport.

  5. Collecter des archives sur le site sosreport.

    1. Exécutez la commande sosreport et activez les plugins crio.all et crio.logs CRI-O container engine sosreport:

      # sosreport -k crio.all=on -k crio.logs=on 1
      1
      -k vous permet de définir les paramètres du plugin sosreport en dehors des paramètres par défaut.
    2. Appuyez sur Enter lorsque vous y êtes invité, pour continuer.
    3. Fournissez l'identifiant du dossier d'assistance de Red Hat. sosreport ajoute l'identifiant au nom de fichier de l'archive.
    4. La sortie sosreport indique l'emplacement de l'archive et la somme de contrôle. L'exemple de sortie suivant fait référence à l'identifiant de cas de support 01234567:

      Your sosreport has been generated and saved in:
        /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz 1
      
      The checksum is: 382ffc167510fd71b4f12a4f40b97a4e
      1
      Le chemin d'accès au fichier de l'archive sosreport se trouve en dehors de l'environnement chroot car le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse /host.
  6. Fournissez l'archive sosreport à l'assistance Red Hat pour analyse, en utilisant l'une des méthodes suivantes.

    • Téléchargez le fichier vers un cas d'assistance Red Hat existant directement à partir d'un cluster OpenShift Container Platform.

      1. Depuis le conteneur de la boîte à outils, exécutez redhat-support-tool pour attacher l'archive directement à un dossier d'assistance Red Hat existant. Cet exemple utilise l'ID de cas d'assistance 01234567:

        # redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-sosreport.tar.xz 1
        1
        Le conteneur Toolbox monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur Toolbox, y compris /host/, lorsque vous spécifiez les fichiers à télécharger par le biais de la commande redhat-support-tool.
    • Téléchargez le fichier vers un dossier d'assistance Red Hat existant.

      1. Concaténer l'archive sosreport en exécutant la commande oc debug node/<node_name> et rediriger la sortie vers un fichier. Cette commande suppose que vous avez quitté la session oc debug précédente :

        $ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz' > /tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz 1
        1
        Le conteneur de débogage monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur de débogage, y compris /host, lorsque vous spécifiez les fichiers cibles pour la concaténation.
        Note

        Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. Le transfert d'une archive sosreport à partir d'un nœud de cluster en utilisant scp n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible de copier une archive sosreport à partir d'un nœud en exécutant scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>.

      2. Accédez à un dossier d'assistance existant sur https://access.redhat.com/support/cases/.
      3. Sélectionnez Attach files et suivez les instructions pour télécharger le fichier.

5.6. Interrogation des journaux du nœud d'amorce

Si vous rencontrez des problèmes liés à l'amorçage, vous pouvez rassembler les journaux de l'unité bootkube.service journald et les journaux des conteneurs à partir du nœud d'amorçage.

Conditions préalables

  • Vous avez un accès SSH à votre nœud d'amorçage.
  • Vous avez le nom de domaine complet du nœud d'amorce.

Procédure

  1. Interroger bootkube.service journald unit logs from a bootstrap node during OpenShift Container Platform installation. Remplacez <bootstrap_fqdn> par le nom de domaine complet du nœud d'amorçage :

    $ ssh core@<bootstrap_fqdn> journalctl -b -f -u bootkube.service
    Note

    The bootkube.service log on the bootstrap node outputs etcd connection refused errors, indicating that the bootstrap server is unable to connect to etcd on control plane nodes. After etcd has started on each control plane node and the nodes have joined the cluster, the errors should stop.

  2. Collectez les journaux des conteneurs du nœud d'amorçage en utilisant podman sur le nœud d'amorçage. Remplacez <bootstrap_fqdn> par le nom de domaine complet du nœud d'amorçage :

    $ ssh core@<bootstrap_fqdn> 'for pod in $(sudo podman ps -a -q) ; do sudo podman logs $pod ; done'

5.7. Interroger les journaux des nœuds de cluster

Vous pouvez rassembler les journaux de l'unité journald et d'autres journaux dans /var/log sur des nœuds de cluster individuels.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.

Procédure

  1. Requête kubelet journald journaux d'unité des nœuds de cluster OpenShift Container Platform. L'exemple suivant interroge uniquement les nœuds du plan de contrôle :

    $ oc adm node-logs --role=master -u kubelet  1
    1
    Remplacer kubelet le cas échéant pour interroger d'autres journaux d'unité.
  2. Collecte des journaux à partir de sous-répertoires spécifiques sous /var/log/ sur les nœuds de la grappe.

    1. Récupérer la liste des journaux contenus dans un sous-répertoire /var/log/. L'exemple suivant répertorie les fichiers de /var/log/openshift-apiserver/ sur tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver
    2. Inspecter un journal spécifique dans un sous-répertoire /var/log/. L'exemple suivant affiche le contenu de /var/log/openshift-apiserver/audit.log pour tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver/audit.log
    3. Si l'API n'est pas fonctionnelle, examinez les journaux sur chaque nœud en utilisant SSH à la place. L'exemple suivant est une queue /var/log/openshift-apiserver/audit.log:

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo tail -f /var/log/openshift-apiserver/audit.log
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

5.8. Méthodes de traçage des réseaux

La collecte de traces de réseau, sous la forme d'enregistrements de capture de paquets, peut aider l'assistance Red Hat à dépanner les problèmes de réseau.

OpenShift Container Platform prend en charge deux façons d'effectuer un traçage réseau. Consultez le tableau suivant et choisissez la méthode qui répond à vos besoins.

Tableau 5.2. Méthodes prises en charge pour la collecte d'une trace de réseau

MéthodeAvantages et capacités

Collecte d'une trace du réseau de l'hôte

Vous effectuez une capture de paquets pendant une durée que vous spécifiez sur un ou plusieurs nœuds en même temps. Les fichiers de capture de paquets sont transférés des nœuds vers la machine cliente lorsque la durée spécifiée est atteinte.

Vous pouvez déterminer pourquoi une action spécifique déclenche des problèmes de communication réseau. Exécutez la capture de paquets, effectuez l'action qui déclenche le problème et utilisez les journaux pour diagnostiquer le problème.

Collecte d'une trace réseau à partir d'un nœud ou d'un conteneur OpenShift Container Platform

Vous effectuez une capture de paquets sur un nœud ou un conteneur. Vous exécutez la commande tcpdump de manière interactive, ce qui vous permet de contrôler la durée de la capture de paquets.

Vous pouvez lancer la capture de paquets manuellement, déclencher le problème de communication réseau, puis arrêter la capture de paquets manuellement.

Cette méthode utilise la commande cat et la redirection du shell pour copier les données de capture de paquets du nœud ou du conteneur vers la machine cliente.

5.9. Collecte d'une trace du réseau de l'hôte

Parfois, le dépannage d'un problème lié au réseau est simplifié par le traçage des communications réseau et la capture des paquets sur plusieurs nœuds en même temps.

Vous pouvez utiliser une combinaison de la commande oc adm must-gather et de l'image conteneur registry.redhat.io/openshift4/network-tools-rhel8 pour collecter des captures de paquets à partir des nœuds. L'analyse des captures de paquets peut vous aider à résoudre les problèmes de communication du réseau.

La commande oc adm must-gather est utilisée pour exécuter la commande tcpdump dans des modules sur des nœuds spécifiques. La commande tcpdump enregistre les captures de paquets dans les modules. Lorsque la commande tcpdump se termine, la commande oc adm must-gather transfère les fichiers contenant les captures de paquets des modules vers votre ordinateur client.

Astuce

L'exemple de commande de la procédure suivante montre comment réaliser une capture de paquets à l'aide de la commande tcpdump. Cependant, vous pouvez exécuter n'importe quelle commande dans l'image de conteneur spécifiée dans l'argument --image pour recueillir des informations de dépannage à partir de plusieurs nœuds en même temps.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Effectuez une capture de paquets à partir du réseau hôte sur certains nœuds en exécutant la commande suivante :

    $ oc adm must-gather \
        --dest-dir /tmp/captures \  <.>
        --source-dir '/tmp/tcpdump/' \  <.>
        --image registry.redhat.io/openshift4/network-tools-rhel8:latest \  <.>
        --node-selector 'node-role.kubernetes.io/worker' \  <.>
        --host-network=true \  <.>
        --timeout 30s \  <.>
        -- \
        tcpdump -i any \  <.>
        -w /tmp/tcpdump/%Y-%m-%dT%H:%M:%S.pcap -W 1 -G 300

    <.> L'argument --dest-dir spécifie que oc adm must-gather stocke les captures de paquets dans des répertoires relatifs à /tmp/captures sur la machine cliente. Vous pouvez spécifier n'importe quel répertoire accessible en écriture. <.> Lorsque tcpdump est exécuté dans le pod de débogage que oc adm must-gather démarre, l'argument --source-dir spécifie que les captures de paquets sont temporairement stockées dans le répertoire /tmp/tcpdump sur le pod. <.> L'argument --image spécifie une image de conteneur qui inclut la commande tcpdump. <.> L'argument --node-selector et la valeur de l'exemple spécifient d'effectuer les captures de paquets sur les nœuds de travail. Vous pouvez également spécifier l'argument --node-name pour exécuter la capture de paquets sur un seul noeud. Si vous omettez les arguments --node-selector et --node-name, les captures de paquets sont effectuées sur tous les nœuds. <.> L'argument --host-network=true est nécessaire pour que les captures de paquets soient effectuées sur les interfaces réseau du noeud. <.> L'argument --timeout et la valeur spécifient l'exécution du pod de débogage pendant 30 secondes. Si vous ne spécifiez pas l'argument --timeout et une durée, le module de débogage s'exécute pendant 10 minutes. <.> L'argument -i any de la commande tcpdump spécifie la capture des paquets sur toutes les interfaces réseau. Vous pouvez également spécifier un nom d'interface réseau.

  2. Effectuez l'action, telle que l'accès à une application web, qui déclenche le problème de communication réseau pendant que la trace réseau capture les paquets.
  3. Examinez les fichiers de capture de paquets que oc adm must-gather a transférés des pods à votre ordinateur client :

    tmp/captures
    ├── event-filter.html
    ├── ip-10-0-192-217-ec2-internal  1
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:31.pcap
    ├── ip-10-0-201-178-ec2-internal  2
    │   └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca...
    │       └── 2022-01-13T19:31:30.pcap
    ├── ip-...
    └── timestamp
    1 2
    Les captures de paquets sont stockées dans des répertoires qui identifient le nom d'hôte, le conteneur et le nom de fichier. Si vous n'avez pas spécifié l'argument --node-selector, le niveau de répertoire correspondant au nom d'hôte n'est pas présent.

5.10. Collecte d'une trace réseau à partir d'un nœud ou d'un conteneur OpenShift Container Platform

Lors de l'investigation de problèmes potentiels liés au réseau dans OpenShift Container Platform, le support Red Hat peut demander une trace de paquet réseau à partir d'un nœud de cluster OpenShift Container Platform spécifique ou à partir d'un conteneur spécifique. La méthode recommandée pour capturer une trace de réseau dans OpenShift Container Platform est d'utiliser un pod de débogage.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un abonnement standard ou premium Red Hat.
  • Vous disposez d'un compte Red Hat Customer Portal.
  • Vous avez un numéro d'identification de dossier d'assistance Red Hat existant.
  • Vous avez un accès SSH à vos hôtes.

Procédure

  1. Obtenir une liste des nœuds de la grappe :

    $ oc get nodes
  2. Entrez dans une session de débogage sur le nœud cible. Cette étape instancie un pod de débogage appelé <node_name>-debug:

    $ oc debug node/my-cluster-node
  3. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

    # chroot /host
    Note

    Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

  4. Dans la console de l'environnement chroot, obtenez les noms des interfaces du nœud :

    # ip ad
  5. Démarrer un conteneur toolbox, qui contient les binaires et les plugins nécessaires à l'exécution de sosreport:

    # toolbox
    Note

    Si un pod toolbox est déjà en cours d'exécution, la commande toolbox produit 'toolbox-' already exists. Trying to start…​. Pour éviter les problèmes liés à tcpdump, supprimez le conteneur de boîte à outils en cours d'exécution avec podman rm toolbox- et créez un nouveau conteneur de boîte à outils.

  6. Lancez une session tcpdump sur le nœud du cluster et redirigez la sortie vers un fichier de capture. Cet exemple utilise ens5 comme nom d'interface :

    $ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap  1
    1
    Le chemin d'accès au fichier de capture tcpdump se trouve en dehors de l'environnement chroot car le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse /host.
  7. Si une capture tcpdump est requise pour un conteneur spécifique sur le nœud, procédez comme suit.

    1. Déterminez l'ID du conteneur cible. La commande chroot host précède la commande crictl dans cette étape car le conteneur toolbox monte le répertoire racine de l'hôte à l'adresse /host:

      # chroot /host crictl ps
    2. Déterminer l'ID du processus du conteneur. Dans cet exemple, l'ID du conteneur est a7fe32346b120:

      # chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'
    3. Lancez une session tcpdump sur le conteneur et redirigez la sortie vers un fichier de capture. Cet exemple utilise 49628 comme ID de processus du conteneur et ens5 comme nom d'interface. La commande nsenter entre dans l'espace de noms d'un processus cible et exécute une commande dans son espace de noms. Comme le processus cible dans cet exemple est l'ID de processus d'un conteneur, la commande tcpdump est exécutée dans l'espace de noms du conteneur à partir de l'hôte :

      # nsenter -n -t 49628 -- tcpdump -nn -i ens5 -w /host/var/tmp/my-cluster-node-my-container_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap.pcap  1
      1
      Le chemin d'accès au fichier de capture tcpdump se trouve en dehors de l'environnement chroot car le conteneur de la boîte à outils monte le répertoire racine de l'hôte à l'adresse /host.
  8. Fournissez le fichier de capture tcpdump à l'assistance technique de Red Hat pour analyse, en utilisant l'une des méthodes suivantes.

    • Téléchargez le fichier vers un cas d'assistance Red Hat existant directement à partir d'un cluster OpenShift Container Platform.

      1. Depuis le conteneur de la boîte à outils, exécutez redhat-support-tool pour joindre le fichier directement à un cas d'assistance Red Hat existant. Cet exemple utilise l'ID de cas d'assistance 01234567:

        # redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-tcpdump-capture-file.pcap 1
        1
        Le conteneur Toolbox monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur Toolbox, y compris /host/, lorsque vous spécifiez les fichiers à télécharger par le biais de la commande redhat-support-tool.
    • Téléchargez le fichier vers un dossier d'assistance Red Hat existant.

      1. Concaténer l'archive sosreport en exécutant la commande oc debug node/<node_name> et rediriger la sortie vers un fichier. Cette commande suppose que vous avez quitté la session oc debug précédente :

        $ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap 1
        1
        Le conteneur de débogage monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur de débogage, y compris /host, lorsque vous spécifiez les fichiers cibles pour la concaténation.
        Note

        Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. Le transfert d'un fichier de capture tcpdump à partir d'un nœud de cluster en utilisant scp n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible de copier un fichier de capture tcpdump à partir d'un nœud en exécutant scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>.

      2. Accédez à un dossier d'assistance existant sur https://access.redhat.com/support/cases/.
      3. Sélectionnez Attach files et suivez les instructions pour télécharger le fichier.

5.11. Fournir des données de diagnostic au service d'assistance de Red Hat

Lors de l'investigation de problèmes liés à OpenShift Container Platform, l'assistance Red Hat peut vous demander de télécharger des données de diagnostic vers un dossier d'assistance. Les fichiers peuvent être téléchargés vers un dossier d'assistance via le portail client Red Hat, ou depuis un cluster OpenShift Container Platform directement à l'aide de la commande redhat-support-tool.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez un accès SSH à vos hôtes.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un abonnement standard ou premium Red Hat.
  • Vous disposez d'un compte Red Hat Customer Portal.
  • Vous avez un numéro d'identification de dossier d'assistance Red Hat existant.

Procédure

  • Télécharger les données de diagnostic vers un cas d'assistance Red Hat existant via le portail client de Red Hat.

    1. Concaténer un fichier de diagnostic contenu sur un nœud OpenShift Container Platform en utilisant la commande oc debug node/<node_name> et rediriger la sortie vers un fichier. L'exemple suivant copie /host/var/tmp/my-diagnostic-data.tar.gz d'un conteneur de débogage vers /var/tmp/my-diagnostic-data.tar.gz:

      $ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-diagnostic-data.tar.gz' > /var/tmp/my-diagnostic-data.tar.gz 1
      1
      Le conteneur de débogage monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur de débogage, y compris /host, lorsque vous spécifiez les fichiers cibles pour la concaténation.
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. Le transfert de fichiers depuis un nœud de cluster en utilisant scp n'est pas recommandé et les nœuds seront entachés comme accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible de copier les fichiers de diagnostic d'un nœud en exécutant scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>.

    2. Accédez à un dossier d'assistance existant sur https://access.redhat.com/support/cases/.
    3. Sélectionnez Attach files et suivez les instructions pour télécharger le fichier.
  • Télécharger des données de diagnostic vers un cas d'assistance Red Hat existant directement depuis un cluster OpenShift Container Platform.

    1. Obtenir une liste des nœuds de la grappe :

      $ oc get nodes
    2. Entrez dans une session de débogage sur le nœud cible. Cette étape instancie un pod de débogage appelé <node_name>-debug:

      $ oc debug node/my-cluster-node
    3. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

      # chroot /host
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

    4. Démarrer un conteneur toolbox, qui contient les binaires nécessaires à l'exécution de redhat-support-tool:

      # toolbox
      Note

      Si un pod toolbox est déjà en cours d'exécution, la commande toolbox produit 'toolbox-' already exists. Trying to start…​. Supprimez le conteneur de boîte à outils en cours d'exécution avec podman rm toolbox- et créez un nouveau conteneur de boîte à outils, pour éviter tout problème.

      1. Exécutez redhat-support-tool pour joindre un fichier du pod de débogage directement à un cas d'assistance Red Hat existant. Cet exemple utilise l'ID de cas d'assistance '01234567' et le chemin d'accès du fichier d'exemple /host/var/tmp/my-diagnostic-data.tar.gz:

        # redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-diagnostic-data.tar.gz 1
        1
        Le conteneur Toolbox monte le répertoire racine de l'hôte à l'adresse /host. Faites référence au chemin absolu du répertoire racine du conteneur Toolbox, y compris /host/, lorsque vous spécifiez les fichiers à télécharger par le biais de la commande redhat-support-tool.

5.12. A propos de toolbox

toolbox est un outil qui permet de démarrer un conteneur sur un système Red Hat Enterprise Linux CoreOS (RHCOS). L'outil est principalement utilisé pour démarrer un conteneur qui inclut les binaires et les plugins nécessaires à l'exécution de commandes telles que sosreport et redhat-support-tool.

L'objectif premier d'un conteneur toolbox est de rassembler des informations de diagnostic et de les fournir à l'équipe d'assistance de Red Hat. Cependant, si des outils de diagnostic supplémentaires sont nécessaires, vous pouvez ajouter des paquets RPM ou exécuter une image qui est une alternative à l'image standard des outils de support.

Installation de paquets dans un conteneur toolbox

Par défaut, la commande toolbox lance un conteneur avec l'image registry.redhat.io/rhel8/support-tools:latest. Cette image contient les outils d'assistance les plus fréquemment utilisés. Si vous devez collecter des données spécifiques à un nœud nécessitant un outil d'assistance qui ne fait pas partie de l'image, vous pouvez installer des paquets supplémentaires.

Conditions préalables

  • Vous avez accédé à un nœud avec la commande oc debug node/<node_name>.

Procédure

  1. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

    # chroot /host
  2. Démarrer le conteneur de la boîte à outils :

    # toolbox
  3. Installez le paquet supplémentaire, tel que wget:

    # dnf install -y <nom_du_paquet>

Démarrage d'une image alternative avec toolbox

Par défaut, la commande toolbox lance un conteneur avec l'image registry.redhat.io/rhel8/support-tools:latest. Vous pouvez démarrer une autre image en créant un fichier .toolboxrc et en spécifiant l'image à exécuter.

Conditions préalables

  • Vous avez accédé à un nœud avec la commande oc debug node/<node_name>.

Procédure

  1. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

    # chroot /host
  2. Créez un fichier .toolboxrc dans le répertoire personnel de l'utilisateur root :

    # vi ~/.toolboxrc
    REGISTRY=quay.io                1
    IMAGE=fedora/fedora:33-x86_64   2
    TOOLBOX_NAME=toolbox-fedora-33  3
    1
    Facultatif : Indiquez un autre registre de conteneurs.
    2
    Indiquer une autre image à lancer.
    3
    Facultatif : Indiquez un autre nom pour le conteneur de la boîte à outils.
  3. Démarrer un conteneur de boîte à outils avec l'image alternative :

    # toolbox
    Note

    Si un pod toolbox est déjà en cours d'exécution, la commande toolbox produit 'toolbox-' already exists. Trying to start…​. Supprimez le conteneur de boîte à outils en cours d'exécution avec podman rm toolbox- et créez un nouveau conteneur de boîte à outils, afin d'éviter tout problème avec les plugins sosreport.

Chapitre 6. Résumé des spécifications des grappes d'entreprises

6.1. Résumer les spécifications des grappes d'entreprises grâce à clusterversion

Vous pouvez obtenir un résumé des spécifications des clusters OpenShift Container Platform en interrogeant la ressource clusterversion.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Interroger la version du cluster, sa disponibilité, son temps de fonctionnement et son état général :

    $ oc get clusterversion
  2. Obtenir un résumé détaillé des spécifications de la grappe, de la disponibilité des mises à jour et de l'historique des mises à jour :

    $ oc describe clusterversion

Chapitre 7. Résolution de problèmes

7.1. Dépannage des installations

7.1.1. Déterminer où se situent les problèmes d'installation

Lors du dépannage des problèmes d'installation d'OpenShift Container Platform, vous pouvez surveiller les journaux d'installation pour déterminer à quelle étape les problèmes surviennent. Vous pouvez ensuite récupérer les données de diagnostic correspondant à cette étape.

L'installation d'OpenShift Container Platform se déroule selon les étapes suivantes :

  1. Les fichiers de configuration d'Ignition sont créés.
  2. La machine d'amorçage démarre et commence à héberger les ressources distantes nécessaires au démarrage des machines du plan de contrôle.
  3. Les machines du plan de contrôle récupèrent les ressources distantes de la machine d'amorçage et terminent le démarrage.
  4. Les machines du plan de contrôle utilisent la machine bootstrap pour former un cluster etcd.
  5. La machine d'amorçage démarre un plan de contrôle Kubernetes temporaire en utilisant le nouveau cluster etcd.
  6. Le plan de contrôle temporaire planifie le plan de contrôle de production sur les machines du plan de contrôle.
  7. Le plan de contrôle temporaire s'arrête et passe le contrôle au plan de contrôle de production.
  8. La machine d'amorçage ajoute des composants OpenShift Container Platform dans le plan de contrôle de la production.
  9. Le programme d'installation arrête la machine de démarrage.
  10. Le plan de contrôle met en place les nœuds de travail.
  11. Le plan de contrôle installe des services supplémentaires sous la forme d'un ensemble d'opérateurs.
  12. Le cluster télécharge et configure les autres composants nécessaires au fonctionnement quotidien, y compris la création de machines de travail dans les environnements pris en charge.

7.1.2. Considérations relatives à l'installation de l'infrastructure fournie par l'utilisateur

La méthode d'installation par défaut utilise l'infrastructure fournie par l'installateur. Avec les clusters d'infrastructure provisionnés par l'installateur, OpenShift Container Platform gère tous les aspects du cluster, y compris le système d'exploitation lui-même. Si possible, utilisez cette fonctionnalité pour éviter d'avoir à provisionner et à maintenir l'infrastructure du cluster.

Vous pouvez également installer OpenShift Container Platform 4.12 sur une infrastructure que vous fournissez. Si vous utilisez cette méthode d'installation, suivez attentivement la documentation d'installation de l'infrastructure fournie par l'utilisateur. En outre, examinez les considérations suivantes avant l'installation :

  • Consultez l'écosystème Red Hat Enterprise Linux (RHEL) pour déterminer le niveau de support de Red Hat Enterprise Linux CoreOS (RHCOS) fourni pour le matériel serveur ou la technologie de virtualisation que vous avez choisis.
  • De nombreux environnements de virtualisation et de cloud nécessitent l'installation d'agents sur les systèmes d'exploitation invités. Veillez à ce que ces agents soient installés en tant que charge de travail conteneurisée déployée par l'intermédiaire d'un ensemble de démons.
  • Installez l'intégration des fournisseurs de cloud si vous souhaitez activer des fonctionnalités telles que le stockage dynamique, le routage de services à la demande, la résolution du nom d'hôte du nœud par rapport au nom d'hôte Kubernetes et la mise à l'échelle automatique du cluster.

    Note

    Il n'est pas possible d'activer l'intégration des fournisseurs de cloud dans les environnements OpenShift Container Platform qui mélangent des ressources provenant de différents fournisseurs de cloud, ou qui couvrent plusieurs plateformes physiques ou virtuelles. Le contrôleur du cycle de vie des nœuds ne permet pas d'ajouter à un cluster des nœuds externes au fournisseur existant, et il n'est pas possible de spécifier plus d'une intégration de fournisseur de cloud.

  • Une implémentation de l'API Machine spécifique au fournisseur est nécessaire si vous souhaitez utiliser des ensembles de machines ou l'autoscaling pour provisionner automatiquement les nœuds de cluster de OpenShift Container Platform.
  • Vérifiez si le fournisseur de cloud que vous avez choisi propose une méthode pour injecter les fichiers de configuration d'Ignition dans les hôtes dans le cadre de leur déploiement initial. Si ce n'est pas le cas, vous devrez héberger les fichiers de configuration Ignition en utilisant un serveur HTTP. Les étapes à suivre pour résoudre les problèmes liés aux fichiers de configuration d'Ignition diffèrent selon la méthode utilisée.
  • Le stockage doit être provisionné manuellement si vous souhaitez exploiter des composants optionnels du framework tels que le registre de conteneurs intégré, Elasticsearch ou Prometheus. Les classes de stockage par défaut ne sont pas définies dans les installations d'infrastructure provisionnées par l'utilisateur, à moins qu'elles ne soient explicitement configurées.
  • Un équilibreur de charge est nécessaire pour distribuer les demandes d'API sur tous les nœuds du plan de contrôle dans les environnements OpenShift Container Platform hautement disponibles. Vous pouvez utiliser n'importe quelle solution d'équilibrage de charge basée sur TCP qui répond aux exigences de routage DNS et de port de OpenShift Container Platform.

7.1.3. Vérifier la configuration d'un équilibreur de charge avant l'installation d'OpenShift Container Platform

Vérifiez la configuration de votre équilibreur de charge avant de commencer l'installation d'OpenShift Container Platform.

Conditions préalables

  • Vous avez configuré un équilibreur de charge externe de votre choix, en préparation d'une installation d'OpenShift Container Platform. L'exemple suivant est basé sur un hôte Red Hat Enterprise Linux (RHEL) utilisant HAProxy pour fournir des services d'équilibrage de charge à un cluster.
  • Vous avez configuré le DNS en vue de l'installation d'OpenShift Container Platform.
  • Vous avez un accès SSH à votre équilibreur de charge.

Procédure

  1. Vérifiez que le service haproxy systemd est actif :

    $ ssh <user_name>@<load_balancer> systemctl status haproxy
  2. Vérifiez que l'équilibreur de charge écoute sur les ports requis. L'exemple suivant fait référence aux ports 80, 443, 6443 et 22623.

    • Pour les instances HAProxy fonctionnant sous Red Hat Enterprise Linux (RHEL) 6, vérifiez l'état des ports à l'aide de la commande netstat:

      $ ssh <user_name>@<load_balancer> netstat -nltupe | grep -E ':80|:443|:6443|:22623'
    • Pour les instances HAProxy fonctionnant sous Red Hat Enterprise Linux (RHEL) 7 ou 8, vérifiez l'état des ports à l'aide de la commande ss:

      $ ssh <user_name>@<load_balancer> ss -nltupe | grep -E ':80|:443|:6443|:22623'
      Note

      Red Hat recommande la commande ss au lieu de netstat dans Red Hat Enterprise Linux (RHEL) 7 ou une version ultérieure. ss est fourni par le paquetage iproute. Pour plus d'informations sur la commande ss, consultez le Guide d'optimisation des performances de Red Hat Enterprise Linux (RHEL) 7.

  3. Vérifiez que l'enregistrement DNS générique se résout vers l'équilibreur de charge :

    $ dig <wildcard_fqdn> @<dns_server>

7.1.4. Spécifier les niveaux de journalisation du programme d'installation d'OpenShift Container Platform

Par défaut, le niveau de journalisation du programme d'installation d'OpenShift Container Platform est défini sur info. Si une journalisation plus détaillée est nécessaire lors du diagnostic d'un échec de l'installation d'OpenShift Container Platform, vous pouvez augmenter le niveau de journalisation de openshift-install à debug lors du redémarrage de l'installation.

Conditions préalables

  • You have access to the installation host.

Procédure

  • Définissez le niveau du journal d'installation sur debug lorsque vous lancez l'installation :

    $ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete --log-level debug  1
    1
    Les niveaux d'enregistrement possibles sont info, warn, error, et debug.

7.1.5. Résolution des problèmes liés à la commande openshift-install

Si vous rencontrez des problèmes lors de l'exécution de la commande openshift-install, vérifiez les points suivants :

  • L'installation a été lancée dans les 24 heures suivant la création du fichier de configuration Ignition. Les fichiers Ignition sont créés lorsque la commande suivante est exécutée :

    $ ./openshift-install create ignition-configs --dir=./install_dir
  • Le fichier install-config.yaml se trouve dans le même répertoire que le programme d'installation. Si un autre chemin d'installation est déclaré à l'aide de l'option ./openshift-install --dir, vérifiez que le fichier install-config.yaml existe dans ce répertoire.

7.1.6. Suivi de l'avancement de l'installation

Vous pouvez surveiller les journaux d'installation de haut niveau, de bootstrap et de plan de contrôle au fur et à mesure que l'installation d'OpenShift Container Platform progresse. Cela permet d'avoir une meilleure visibilité sur la progression d'une installation et d'identifier l'étape à laquelle un échec d'installation se produit.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.
  • Vous disposez des noms de domaine pleinement qualifiés des nœuds du plan d'amorçage et du plan de contrôle.

    Note

    Le mot de passe initial de kubeadmin se trouve dans <install_directory>/auth/kubeadmin-password sur l'hôte d'installation.

Procédure

  1. Observez le journal d'installation au fur et à mesure que l'installation progresse :

    $ tail -f ~/<installation_directory>/.openshift_install.log
  2. Surveillez le journal bootkube.service journald unit log sur le nœud d'amorçage, après qu'il ait démarré. Cela permet d'avoir une visibilité sur le démarrage du premier plan de contrôle. Remplacez <bootstrap_fqdn> par le nom de domaine complet du nœud d'amorçage :

    $ ssh core@<bootstrap_fqdn> journalctl -b -f -u bootkube.service
    Note

    The bootkube.service log on the bootstrap node outputs etcd connection refused errors, indicating that the bootstrap server is unable to connect to etcd on control plane nodes. After etcd has started on each control plane node and the nodes have joined the cluster, the errors should stop.

  3. Surveillez les journaux de l'unité kubelet.service journald sur les nœuds du plan de contrôle, après leur démarrage. Cela permet d'avoir une visibilité sur l'activité des agents des nœuds du plan de contrôle.

    1. Surveillez les journaux à l'aide de oc:

      $ oc adm node-logs --role=master -u kubelet
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> journalctl -b -f -u kubelet.service
  4. Surveillez les journaux de l'unité crio.service journald sur les nœuds du plan de contrôle, après leur démarrage. Cela permet d'avoir une visibilité sur l'activité d'exécution des conteneurs CRI-O sur les nœuds du plan de contrôle.

    1. Surveillez les journaux à l'aide de oc:

      $ oc adm node-logs --role=master -u crio
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@master-N.cluster_name.sub_domain.domain journalctl -b -f -u crio.service

7.1.7. Collecte des données de diagnostic du nœud d'amorçage

Lorsque vous rencontrez des problèmes liés au démarrage, vous pouvez rassembler les journaux de l'unité bootkube.service journald et les journaux des conteneurs à partir du nœud de démarrage.

Conditions préalables

  • Vous avez un accès SSH à votre nœud d'amorçage.
  • Vous avez le nom de domaine complet du nœud d'amorce.
  • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP, vous devez avoir le nom de domaine complet du serveur HTTP et le numéro de port. Vous devez également disposer d'un accès SSH à l'hôte HTTP.

Procédure

  1. Si vous avez accès à la console du nœud d'amorce, surveillez la console jusqu'à ce que le nœud atteigne l'invite de connexion.
  2. Vérifier la configuration du fichier Ignition.

    • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP.

      1. Vérifier l'URL du fichier Ignition du nœud d'amorçage. Remplacer <http_server_fqdn> par le nom de domaine complet du serveur HTTP :

        $ curl -I http://<http_server_fqdn>:<port>/bootstrap.ign  1
        1
        L'option -I renvoie uniquement l'en-tête. Si le fichier Ignition est disponible sur l'URL spécifiée, la commande renvoie l'état 200 OK. S'il n'est pas disponible, la commande renvoie l'état 404 file not found.
      2. Pour vérifier que le fichier Ignition a été reçu par le nœud d'amorçage, interrogez les journaux du serveur HTTP sur l'hôte d'accueil. Par exemple, si vous utilisez un serveur web Apache pour servir les fichiers Ignition, entrez la commande suivante :

        $ grep -is 'bootstrap.ign' /var/log/httpd/access_log

        Si le fichier Ignition bootstrap est reçu, le message de journal HTTP GET associé inclura un état de réussite 200 OK, indiquant que la demande a réussi.

      3. Si le fichier Ignition n'a pas été reçu, vérifiez que les fichiers Ignition existent et qu'ils disposent des autorisations de fichier et de serveur web appropriées sur l'hôte serveur directement.
    • Si vous utilisez un mécanisme de fournisseur de cloud pour injecter des fichiers de configuration Ignition dans les hôtes dans le cadre de leur déploiement initial.

      1. Examinez la console du nœud d'amorce pour déterminer si le mécanisme injecte correctement le fichier Ignition du nœud d'amorce.
  3. Vérifier la disponibilité de l'unité de stockage assignée au nœud d'amorce.
  4. Vérifiez qu'une adresse IP a été attribuée au nœud d'amorçage par le serveur DHCP.
  5. Collecter les journaux de l'unité bootkube.service journald du nœud d'amorçage. Remplacez <bootstrap_fqdn> par le nom de domaine complet du nœud d'amorçage :

    $ ssh core@<bootstrap_fqdn> journalctl -b -f -u bootkube.service
    Note

    The bootkube.service log on the bootstrap node outputs etcd connection refused errors, indicating that the bootstrap server is unable to connect to etcd on control plane nodes. After etcd has started on each control plane node and the nodes have joined the cluster, the errors should stop.

  6. Collecter les journaux des conteneurs du nœud d'amorçage.

    1. Collectez les journaux en utilisant podman sur le nœud d'amorçage. Remplacez <bootstrap_fqdn> par le nom de domaine complet du nœud d'amorçage :

      $ ssh core@<bootstrap_fqdn> 'for pod in $(sudo podman ps -a -q) ; do sudo podman logs $pod ; done'
  7. Si le processus d'amorçage échoue, vérifiez les points suivants.

    • Vous pouvez résoudre le problème api.<cluster_name>.<base_domain> à partir de l'hôte d'installation.
    • L'équilibreur de charge assure le proxy des connexions du port 6443 vers les nœuds d'amorçage et de plan de contrôle. Assurez-vous que la configuration du proxy est conforme aux exigences d'installation d'OpenShift Container Platform.

7.1.8. Étude des problèmes d'installation des nœuds du plan de contrôle

Si vous rencontrez des problèmes d'installation du nœud du plan de contrôle, déterminez le réseau défini par logiciel (SDN) du nœud du plan de contrôle et l'état de l'opérateur réseau. Recueillez les journaux des unités kubelet.service, crio.service journald et les journaux des conteneurs du nœud du plan de contrôle pour avoir une visibilité sur l'agent du nœud du plan de contrôle, le temps d'exécution du conteneur CRI-O et l'activité du pod.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.
  • Vous disposez des noms de domaine pleinement qualifiés des nœuds du plan d'amorçage et du plan de contrôle.
  • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP, vous devez avoir le nom de domaine complet du serveur HTTP et le numéro de port. Vous devez également disposer d'un accès SSH à l'hôte HTTP.

    Note

    Le mot de passe initial de kubeadmin se trouve dans <install_directory>/auth/kubeadmin-password sur l'hôte d'installation.

Procédure

  1. Si vous avez accès à la console du nœud du plan de contrôle, surveillez la console jusqu'à ce que le nœud atteigne l'invite de connexion. Pendant l'installation, les messages du journal Ignition sont envoyés à la console.
  2. Vérifier la configuration du fichier d'allumage.

    • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP.

      1. Vérifier l'URL du fichier Ignition du nœud du plan de contrôle. Remplacez <http_server_fqdn> par le nom de domaine complet du serveur HTTP :

        $ curl -I http://<http_server_fqdn>:<port>/master.ign  1
        1
        L'option -I renvoie uniquement l'en-tête. Si le fichier Ignition est disponible sur l'URL spécifiée, la commande renvoie l'état 200 OK. S'il n'est pas disponible, la commande renvoie l'état 404 file not found.
      2. Pour vérifier que le fichier Ignition a été reçu par le nœud du plan de contrôle, interrogez les journaux du serveur HTTP sur l'hôte serveur. Par exemple, si vous utilisez un serveur web Apache pour servir les fichiers Ignition :

        $ grep -is 'master.ign' /var/log/httpd/access_log

        Si le fichier maître Ignition est reçu, le message de journal HTTP GET associé inclura un état de réussite 200 OK, indiquant que la demande a réussi.

      3. Si le fichier Ignition n'a pas été reçu, vérifiez qu'il existe directement sur l'hôte serveur. Assurez-vous que les autorisations appropriées pour les fichiers et le serveur web sont en place.
    • Si vous utilisez un mécanisme de fournisseur de cloud pour injecter des fichiers de configuration Ignition dans les hôtes dans le cadre de leur déploiement initial.

      1. Examinez la console du nœud du plan de contrôle pour déterminer si le mécanisme injecte correctement le fichier d'ignition du nœud du plan de contrôle.
  3. Vérifier la disponibilité de l'unité de stockage affectée au nœud du plan de contrôle.
  4. Vérifiez qu'une adresse IP a été attribuée au nœud du plan de contrôle par le serveur DHCP.
  5. Déterminer l'état des nœuds du plan de contrôle.

    1. Demande l'état des nœuds du plan de contrôle :

      $ oc get nodes
    2. Si l'un des nœuds du plan de contrôle n'atteint pas l'état Ready, récupérez une description détaillée du nœud :

      oc describe node <master_node>
      Note

      Il n'est pas possible d'exécuter les commandes oc si un problème d'installation empêche l'API OpenShift Container Platform de fonctionner ou si le kubelet ne fonctionne pas encore sur chaque nœud :

  6. Déterminer le statut SDN de la plateforme OpenShift Container.

    1. Examinez l'état des jeux de démons sdn-controller, sdn et ovs dans l'espace de noms openshift-sdn:

      $ oc get daemonsets -n openshift-sdn
    2. Si ces ressources sont répertoriées comme Not found, examinez les pods dans l'espace de noms openshift-sdn:

      $ oc get pods -n openshift-sdn
    3. Examinez les journaux relatifs aux pods SDN de OpenShift Container Platform qui ont échoué dans l'espace de noms openshift-sdn:

      $ oc logs <sdn_pod> -n openshift-sdn
  7. Déterminer l'état de la configuration du réseau de la grappe.

    1. Vérifiez si la configuration du réseau de la grappe existe :

      $ oc get network.config.openshift.io cluster -o yaml
    2. Si le programme d'installation n'a pas réussi à créer la configuration réseau, générez à nouveau les manifestes Kubernetes et examinez les messages :

      $ ./openshift-install create manifests
    3. Examinez l'état du pod dans l'espace de noms openshift-network-operator pour déterminer si le Cluster Network Operator (CNO) est en cours d'exécution :

      $ oc get pods -n openshift-network-operator
    4. Rassemble les journaux des pods de l'opérateur réseau de l'espace de noms openshift-network-operator:

      oc logs pod/<network_operator_pod_name> -n openshift-network-operator
  8. Surveillez les journaux de l'unité kubelet.service journald sur les nœuds du plan de contrôle, après leur démarrage. Cela permet d'avoir une visibilité sur l'activité des agents des nœuds du plan de contrôle.

    1. Récupérez les journaux à l'aide de oc:

      $ oc adm node-logs --role=master -u kubelet
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> journalctl -b -f -u kubelet.service
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

  9. Récupérer les journaux de l'unité crio.service journald sur les nœuds du plan de contrôle, après leur démarrage. Cela permet de connaître l'activité d'exécution des conteneurs CRI-O sur les nœuds du plan de contrôle.

    1. Récupérez les journaux à l'aide de oc:

      $ oc adm node-logs --role=master -u crio
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant plutôt SSH :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> journalctl -b -f -u crio.service
  10. Collecter les journaux dans des sous-répertoires spécifiques sous /var/log/ sur les nœuds du plan de contrôle.

    1. Récupérer la liste des journaux contenus dans un sous-répertoire /var/log/. L'exemple suivant répertorie les fichiers de /var/log/openshift-apiserver/ sur tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver
    2. Inspecter un journal spécifique dans un sous-répertoire /var/log/. L'exemple suivant affiche le contenu de /var/log/openshift-apiserver/audit.log pour tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver/audit.log
    3. Si l'API n'est pas fonctionnelle, examinez les journaux sur chaque nœud en utilisant SSH à la place. L'exemple suivant est une queue /var/log/openshift-apiserver/audit.log:

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo tail -f /var/log/openshift-apiserver/audit.log
  11. Examiner les journaux des conteneurs du nœud du plan de contrôle à l'aide de SSH.

    1. Dressez la liste des conteneurs :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl ps -a
    2. Récupérer les journaux d'un conteneur en utilisant crictl:

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl logs -f <container_id>
  12. Si vous rencontrez des problèmes de configuration des nœuds du plan de contrôle, vérifiez que le MCO, le point de terminaison MCO et l'enregistrement DNS fonctionnent. Le MCO (Machine Config Operator) gère la configuration du système d'exploitation pendant la procédure d'installation. Vérifiez également l'exactitude de l'horloge du système et la validité du certificat.

    1. Tester si le point de terminaison MCO est disponible. Remplacer <cluster_name> par les valeurs appropriées :

      $ curl https://api-int.<cluster_name>:22623/config/master
    2. Si le point d'accès ne répond pas, vérifiez la configuration de l'équilibreur de charge. Assurez-vous que le point d'accès est configuré pour fonctionner sur le port 22623.
    3. Vérifiez que l'enregistrement DNS du point d'extrémité MCO est configuré et qu'il se résout vers l'équilibreur de charge.

      1. Lancer une recherche DNS pour le nom du point de terminaison MCO défini :

        $ dig api-int.<cluster_name> @<dns_server>
      2. Effectuez une recherche inversée de l'adresse IP MCO attribuée sur l'équilibreur de charge :

        $ dig -x <load_balancer_mco_ip_address> @<dns_server>
    4. Vérifiez que le MCO fonctionne directement à partir du nœud de démarrage. Remplacez <bootstrap_fqdn> par le nom de domaine pleinement qualifié du nœud d'amorce :

      $ ssh core@<bootstrap_fqdn> curl https://api-int.<cluster_name>:22623/config/master
    5. L'heure de l'horloge système doit être synchronisée entre les nœuds de démarrage, maître et subordonné. Vérifiez l'heure de référence de l'horloge système de chaque nœud et les statistiques de synchronisation du temps :

      $ ssh core@<node>.<cluster_name>.<base_domain> chronyc tracking
    6. Examiner la validité du certificat :

      openssl s_client -connect api-int.<cluster_name>:22623 | openssl x509 -noout -text

7.1.9. Investigation des problèmes d'installation d'etcd

Si vous rencontrez des problèmes avec etcd pendant l'installation, vous pouvez vérifier l'état des pods etcd et collecter les journaux des pods etcd. Vous pouvez également vérifier les enregistrements DNS etcd et vérifier la disponibilité des DNS sur les nœuds du plan de contrôle.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.
  • Vous disposez des noms de domaine complets des nœuds du plan de contrôle.

Procédure

  1. Vérifier l'état des pods etcd.

    1. Examiner l'état des pods dans l'espace de noms openshift-etcd:

      $ oc get pods -n openshift-etcd
    2. Examiner l'état des pods dans l'espace de noms openshift-etcd-operator:

      $ oc get pods -n openshift-etcd-operator
  2. Si l'un des pods répertoriés par les commandes précédentes n'affiche pas un état Running ou Completed, recueillez des informations de diagnostic pour le pod.

    1. Examiner les événements pour le pod :

      oc describe pod/<nom_du_pod> -n <espace_de_noms>
    2. Inspecter les journaux de bord de la nacelle :

      oc logs pod/<nom_du_pod> -n <espace-noms>
    3. Si le pod a plus d'un conteneur, la commande précédente créera une erreur et les noms des conteneurs seront fournis dans le message d'erreur. Examinez les journaux de chaque conteneur :

      oc logs pod/<nom_du_pod> -c <nom_du_conteneur> -n <espace_de_noms>
  3. Si l'API n'est pas fonctionnelle, examinez les journaux des pods et des conteneurs etcd sur chaque nœud du plan de contrôle en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées.

    1. Liste des pods etcd sur chaque nœud du plan de contrôle :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl pods --name=etcd-
    2. Pour tout pod n'affichant pas l'état Ready, inspectez l'état du pod en détail. Remplacez <pod_id> par l'ID du pod indiqué dans la sortie de la commande précédente :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl inspectp <pod_id>
    3. Liste des conteneurs liés à un pod :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl ps | grep '<pod_id>'
    4. Pour tous les conteneurs qui n'affichent pas le statut Ready, inspectez le statut du conteneur en détail. Remplacez <container_id> par les ID des conteneurs répertoriés dans la sortie de la commande précédente :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl inspect <container_id>
    5. Examinez les journaux pour tous les conteneurs qui n'affichent pas le statut Ready. Remplacez <container_id> par les ID des conteneurs répertoriés dans la sortie de la commande précédente :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl logs -f <container_id>
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

  4. Valider la connectivité des serveurs DNS primaire et secondaire à partir des nœuds du plan de contrôle.

7.1.10. Investigation des problèmes liés aux nœuds du plan de contrôle, aux kubelets et au serveur API

Pour étudier les problèmes liés au nœud du plan de contrôle, au kubelet et au serveur API pendant l'installation, vérifiez le fonctionnement du DNS, du DHCP et de l'équilibreur de charge. Vérifiez également que les certificats n'ont pas expiré.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.
  • Vous disposez des noms de domaine complets des nœuds du plan de contrôle.

Procédure

  1. Vérifiez que l'enregistrement DNS du serveur API dirige le kubelet sur les nœuds du plan de contrôle vers https://api-int.<cluster_name>.<base_domain>:6443. Assurez-vous que l'enregistrement fait référence à l'équilibreur de charge.
  2. Assurez-vous que la définition du port 6443 de l'équilibreur de charge fait référence à chaque nœud du plan de contrôle.
  3. Vérifier que des noms d'hôtes uniques de nœuds de plan de contrôle ont été fournis par DHCP.
  4. Inspectez les journaux de l'unité kubelet.service journald sur chaque nœud du plan de contrôle.

    1. Récupérez les journaux à l'aide de oc:

      $ oc adm node-logs --role=master -u kubelet
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> journalctl -b -f -u kubelet.service
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

  5. Vérifier les messages d'expiration des certificats dans les journaux des kubelets du nœud du plan de contrôle.

    1. Récupérez le journal en utilisant oc:

      $ oc adm node-logs --role=master -u kubelet | grep -is 'x509: certificate has expired'
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> journalctl -b -f -u kubelet.service  | grep -is 'x509: certificate has expired'

7.1.11. Enquête sur les problèmes d'installation des nœuds de travail

Si vous rencontrez des problèmes lors de l'installation du nœud de travail, vous pouvez vérifier l'état du nœud de travail. Collectez les journaux des unités kubelet.service, crio.service journald et les journaux du conteneur du nœud ouvrier pour avoir une visibilité sur l'agent du nœud ouvrier, le temps d'exécution du conteneur CRI-O et l'activité du pod. En outre, vous pouvez vérifier le fichier Ignition et la fonctionnalité Machine API Operator. Si la configuration post-installation du nœud ouvrier échoue, vérifiez les fonctionnalités MCO (Machine Config Operator) et DNS. Vous pouvez également vérifier la synchronisation de l'horloge système entre les nœuds bootstrap, maître et travailleur, et valider les certificats.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.
  • Vous disposez des noms de domaine complets des nœuds de démarrage et des nœuds de travail.
  • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP, vous devez avoir le nom de domaine complet du serveur HTTP et le numéro de port. Vous devez également disposer d'un accès SSH à l'hôte HTTP.

    Note

    Le mot de passe initial de kubeadmin se trouve dans <install_directory>/auth/kubeadmin-password sur l'hôte d'installation.

Procédure

  1. Si vous avez accès à la console du nœud de travail, surveillez la console jusqu'à ce que le nœud atteigne l'invite de connexion. Pendant l'installation, les messages du journal Ignition sont envoyés à la console.
  2. Vérifier la configuration du fichier d'allumage.

    • Si vous hébergez les fichiers de configuration d'Ignition en utilisant un serveur HTTP.

      1. Vérifiez l'URL du fichier Ignition du nœud de travail. Remplacez <http_server_fqdn> par le nom de domaine complet du serveur HTTP :

        $ curl -I http://<http_server_fqdn>:<port>/worker.ign  1
        1
        L'option -I renvoie uniquement l'en-tête. Si le fichier Ignition est disponible sur l'URL spécifiée, la commande renvoie l'état 200 OK. S'il n'est pas disponible, la commande renvoie l'état 404 file not found.
      2. Pour vérifier que le fichier Ignition a été reçu par le nœud de travail, interrogez les journaux du serveur HTTP sur l'hôte HTTP. Par exemple, si vous utilisez un serveur web Apache pour servir les fichiers Ignition :

        $ grep -is 'worker.ign' /var/log/httpd/access_log

        Si le fichier Ignition du travailleur est reçu, le message de journal HTTP GET associé inclura un état de réussite 200 OK, indiquant que la demande a réussi.

      3. Si le fichier Ignition n'a pas été reçu, vérifiez qu'il existe directement sur l'hôte serveur. Assurez-vous que les autorisations appropriées pour les fichiers et le serveur web sont en place.
    • Si vous utilisez un mécanisme de fournisseur de cloud pour injecter des fichiers de configuration Ignition dans les hôtes dans le cadre de leur déploiement initial.

      1. Examinez la console du nœud de travail pour déterminer si le mécanisme injecte correctement le fichier Ignition du nœud de travail.
  3. Vérifier la disponibilité de l'unité de stockage assignée au nœud de travail.
  4. Vérifiez qu'une adresse IP a été attribuée au nœud de travail par le serveur DHCP.
  5. Déterminer l'état des nœuds de travail.

    1. Demande l'état du nœud :

      $ oc get nodes
    2. Récupérer une description détaillée du nœud pour tout nœud de travailleur n'affichant pas l'état Ready:

      oc describe node <worker_node> $ oc describe node <worker_node>
      Note

      Il n'est pas possible d'exécuter les commandes oc si un problème d'installation empêche l'API OpenShift Container Platform de fonctionner ou si le kubelet ne fonctionne pas encore sur chaque nœud.

  6. Contrairement aux nœuds du plan de contrôle, les nœuds de travailleur sont déployés et mis à l'échelle à l'aide de l'opérateur API Machine. Vérifiez l'état de l'opérateur API Machine.

    1. Examiner le statut du pod de l'opérateur API de la machine :

      $ oc get pods -n openshift-machine-api
    2. Si le pod Opérateur API Machine n'a pas de statut Ready, détaillez les événements du pod :

      $ oc describe pod/<machine_api_operator_pod_name> -n openshift-machine-api
    3. Inspecter les journaux du conteneur machine-api-operator. Le conteneur s'exécute dans le pod machine-api-operator:

      oc logs pod/<machine_api_operator_pod_name> -n openshift-machine-api -c machine-api-operator
    4. Inspectez également les journaux du conteneur kube-rbac-proxy. Le conteneur s'exécute également dans le pod machine-api-operator:

      oc logs pod/<machine_api_operator_pod_name> -n openshift-machine-api -c kube-rbac-proxy
  7. Surveillez les journaux de l'unité kubelet.service journald sur les nœuds de travail, après leur démarrage. Cela permet d'avoir une visibilité sur l'activité des agents des nœuds de travail.

    1. Récupérez les journaux à l'aide de oc:

      $ oc adm node-logs --role=worker -u kubelet
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <worker-node>.<cluster_name>.<base_domain> par les valeurs appropriées :

      $ ssh core@<worker-node>.<cluster_name>.<base_domain> journalctl -b -f -u kubelet.service
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

  8. Récupérer les journaux de l'unité crio.service journald sur les noeuds de travail, après qu'ils aient démarré. Cela permet d'avoir une visibilité sur l'activité d'exécution des conteneurs CRI-O sur les nœuds de travail.

    1. Récupérez les journaux à l'aide de oc:

      $ oc adm node-logs --role=worker -u crio
    2. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant plutôt SSH :

      $ ssh core@<worker-node>.<cluster_name>.<base_domain> journalctl -b -f -u crio.service
  9. Collecte des journaux à partir de sous-répertoires spécifiques sous /var/log/ sur les nœuds de travail.

    1. Récupérer la liste des journaux contenus dans un sous-répertoire /var/log/. L'exemple suivant répertorie les fichiers contenus dans /var/log/sssd/ sur tous les nœuds de travail :

      $ oc adm node-logs --role=worker --path=sssd
    2. Inspecter un journal spécifique dans un sous-répertoire /var/log/. L'exemple suivant affiche le contenu de /var/log/sssd/audit.log à partir de tous les nœuds de travail :

      $ oc adm node-logs --role=worker --path=sssd/sssd.log
    3. Si l'API n'est pas fonctionnelle, examinez les journaux sur chaque nœud en utilisant SSH à la place. L'exemple suivant est une queue /var/log/sssd/sssd.log:

      $ ssh core@<worker-node>.<cluster_name>.<base_domain> sudo tail -f /var/log/sssd/sssd.log
  10. Examinez les journaux des conteneurs des nœuds de travail à l'aide de SSH.

    1. Dressez la liste des conteneurs :

      $ ssh core@<worker-node>.<cluster_name>.<base_domain> sudo crictl ps -a
    2. Récupérer les journaux d'un conteneur en utilisant crictl:

      $ ssh core@<worker-node>.<cluster_name>.<base_domain> sudo crictl logs -f <container_id>
  11. Si vous rencontrez des problèmes de configuration des nœuds de travail, vérifiez que le MCO, le point de terminaison MCO et l'enregistrement DNS fonctionnent. Le MCO (Machine Config Operator) gère la configuration du système d'exploitation pendant la procédure d'installation. Vérifiez également l'exactitude de l'horloge du système et la validité du certificat.

    1. Tester si le point de terminaison MCO est disponible. Remplacer <cluster_name> par les valeurs appropriées :

      $ curl https://api-int.<cluster_name>:22623/config/worker
    2. Si le point d'accès ne répond pas, vérifiez la configuration de l'équilibreur de charge. Assurez-vous que le point d'accès est configuré pour fonctionner sur le port 22623.
    3. Vérifiez que l'enregistrement DNS du point d'extrémité MCO est configuré et qu'il se résout vers l'équilibreur de charge.

      1. Lancer une recherche DNS pour le nom du point de terminaison MCO défini :

        $ dig api-int.<cluster_name> @<dns_server>
      2. Effectuez une recherche inversée de l'adresse IP MCO attribuée sur l'équilibreur de charge :

        $ dig -x <load_balancer_mco_ip_address> @<dns_server>
    4. Vérifiez que le MCO fonctionne directement à partir du nœud de démarrage. Remplacez <bootstrap_fqdn> par le nom de domaine pleinement qualifié du nœud d'amorce :

      $ ssh core@<bootstrap_fqdn> curl https://api-int.<cluster_name>:22623/config/worker
    5. L'heure de l'horloge système doit être synchronisée entre les nœuds de démarrage, maître et subordonné. Vérifiez l'heure de référence de l'horloge système de chaque nœud et les statistiques de synchronisation du temps :

      $ ssh core@<node>.<cluster_name>.<base_domain> chronyc tracking
    6. Examiner la validité du certificat :

      openssl s_client -connect api-int.<cluster_name>:22623 | openssl x509 -noout -text

7.1.12. Interroger le statut de l'opérateur après l'installation

Vous pouvez vérifier l'état de l'opérateur à la fin d'une installation. Récupérer les données de diagnostic pour les opérateurs qui ne sont pas disponibles. Examiner les journaux pour tous les pods d'opérateurs qui sont répertoriés comme Pending ou qui ont un statut d'erreur. Valider les images de base utilisées par les modules problématiques.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Vérifier que les opérateurs de cluster sont tous disponibles à la fin d'une installation.

    $ oc get clusteroperators
  2. Vérifiez que toutes les demandes de signature de certificat (CSR) requises sont approuvées. Certains nœuds peuvent ne pas passer à l'état Ready et certains opérateurs de cluster peuvent ne pas être disponibles s'il y a des CSR en attente.

    1. Vérifiez l'état des CSR et assurez-vous que vous voyez une requête client et serveur avec l'état Pending ou Approved pour chaque machine que vous avez ajoutée au cluster :

      $ oc get csr

      Exemple de sortie

      NAME        AGE     REQUESTOR                                                                   CONDITION
      csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending 1
      csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
      csr-bfd72   5m26s   system:node:ip-10-0-50-126.us-east-2.compute.internal                       Pending 2
      csr-c57lv   5m26s   system:node:ip-10-0-95-157.us-east-2.compute.internal                       Pending
      ...

      1
      Une demande de CSR du client.
      2
      Une demande de serveur CSR.

      In this example, two machines are joining the cluster. You might see more approved CSRs in the list.

    2. If the CSRs were not approved, after all of the pending CSRs for the machines you added are in Pending status, approve the CSRs for your cluster machines:

      Note

      Étant donné que les CSR tournent automatiquement, approuvez-les dans l'heure qui suit l'ajout des machines à la grappe. Si vous ne les approuvez pas dans l'heure qui suit, les certificats tourneront et il y aura plus de deux certificats pour chaque nœud. Vous devez approuver tous ces certificats. Une fois que vous avez approuvé les CSR initiaux, les CSR des clients des nœuds suivants sont automatiquement approuvés par le cluster kube-controller-manager.

      Note

      For clusters running on platforms that are not machine API enabled, such as bare metal and other user-provisioned infrastructure, you must implement a method of automatically approving the kubelet serving certificate requests (CSRs). If a request is not approved, then the oc exec, oc rsh, and oc logs commands cannot succeed, because a serving certificate is required when the API server connects to the kubelet. Any operation that contacts the Kubelet endpoint requires this certificate approval to be in place. The method must watch for new CSRs, confirm that the CSR was submitted by the node-bootstrapper service account in the system:node or system:admin groups, and confirm the identity of the node.

      • To approve them individually, run the following command for each valid CSR:

        $ oc adm certificate approve <csr_name> 1
        1
        <csr_name> est le nom d'un CSR figurant dans la liste des CSR actuels.
      • To approve all pending CSRs, run the following command:

        $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
  3. Voir les événements de l'opérateur :

    oc describe clusteroperator <nom_opérateur>
  4. Examiner le statut du pod de l'opérateur dans l'espace nominatif de l'opérateur :

    oc get pods -n <operator_namespace>
  5. Obtenir une description détaillée pour les pods qui n'ont pas le statut Running:

    $ oc describe pod/<operator_pod_name> -n <operator_namespace>
  6. Inspecter les journaux de bord :

    oc logs pod/<operator_pod_name> -n <operator_namespace>
  7. En cas de problèmes liés à l'image de la base du pod, vérifier l'état de l'image de la base.

    1. Obtenir les détails de l'image de base utilisée par un pod problématique :

      $ oc get pod -o \N "jsonpath={range .status.containerStatuses[*]}{.name}{'\t'}{.state}{'\t'}{.image}{'\n'}{end}\N" <operator_pod_name> -n <operator_namespace>
    2. Liste des informations de validation des images de base :

      $ oc adm release info <image_path>:<tag> --commits

7.1.13. Gathering logs from a failed installation

If you gave an SSH key to your installation program, you can gather data about your failed installation.

Note

You use a different command to gather logs about an unsuccessful installation than to gather logs from a running cluster. If you must gather logs from a running cluster, use the oc adm must-gather command.

Conditions préalables

  • Your OpenShift Container Platform installation failed before the bootstrap process finished. The bootstrap node is running and accessible through SSH.
  • The ssh-agent process is active on your computer, and you provided the same SSH key to both the ssh-agent process and the installation program.
  • If you tried to install a cluster on infrastructure that you provisioned, you must have the fully qualified domain names of the bootstrap and control plane nodes.

Procédure

  1. Generate the commands that are required to obtain the installation logs from the bootstrap and control plane machines:

    • If you used installer-provisioned infrastructure, change to the directory that contains the installation program and run the following command:

      ./openshift-install gather bootstrap --dir <installation_directory> $ ./openshift-install gather bootstrap --dir <installation_directory> 1
      1
      installation_directory is the directory you specified when you ran ./openshift-install create cluster. This directory contains the OpenShift Container Platform definition files that the installation program creates.

      For installer-provisioned infrastructure, the installation program stores information about the cluster, so you do not specify the hostnames or IP addresses.

    • If you used infrastructure that you provisioned yourself, change to the directory that contains the installation program and run the following command:

      $ ./openshift-install gather bootstrap --dir <installation_directory> \ 1
          --bootstrap <bootstrap_address> \ 2
          --master <master_1_address> \ 3
          --master <master_2_address> \ 4
          --master <master_3_address>" 5
      1
      For installation_directory, specify the same directory you specified when you ran ./openshift-install create cluster. This directory contains the OpenShift Container Platform definition files that the installation program creates.
      2
      <bootstrap_address> is the fully qualified domain name or IP address of the cluster’s bootstrap machine.
      3 4 5
      For each control plane, or master, machine in your cluster, replace <master_*_address> with its fully qualified domain name or IP address.
      Note

      A default cluster contains three control plane machines. List all of your control plane machines as shown, no matter how many your cluster uses.

    Exemple de sortie

    INFO Pulling debug logs from the bootstrap machine
    INFO Bootstrap gather logs captured here "<installation_directory>/log-bundle-<timestamp>.tar.gz"

    If you open a Red Hat support case about your installation failure, include the compressed logs in the case.

7.1.14. Ressources supplémentaires

  • Voir Processus d'installation pour plus de détails sur les types et processus d'installation d'OpenShift Container Platform.

7.2. Vérification de l'état des nœuds

7.2.1. Examen de l'état des nœuds, de l'utilisation des ressources et de la configuration

Examinez l'état de santé des nœuds de la grappe, les statistiques de consommation des ressources et les journaux des nœuds. Vous pouvez également consulter le site kubelet pour connaître l'état de chaque nœud.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  • Liste le nom, l'état et le rôle de tous les nœuds de la grappe :

    $ oc get nodes
  • Résumez l'utilisation de l'unité centrale et de la mémoire pour chaque nœud de la grappe :

    $ oc adm top nodes
  • Résume l'utilisation de l'unité centrale et de la mémoire pour un nœud spécifique :

    $ oc adm top node my-node

7.2.2. Interroger l'état du kubelet sur un nœud

Vous pouvez consulter l'état de santé des nœuds de la grappe, les statistiques de consommation des ressources et les journaux des nœuds. En outre, vous pouvez consulter l'état de kubelet sur des nœuds individuels.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Le kubelet est géré à l'aide d'un service systemd sur chaque nœud. Examinez l'état du kubelet en interrogeant le service systemd de kubelet dans un pod de débogage.

    1. Démarrer un pod de débogage pour un nœud :

      $ oc debug node/my-node
      Note

      Si vous exécutez oc debug sur un nœud du plan de contrôle, vous trouverez les fichiers administratifs kubeconfig dans le répertoire /etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/node-kubeconfigs.

    2. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

      # chroot /host
      Note

      Les nœuds de cluster d'OpenShift Container Platform exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

    3. Vérifiez si le service kubelet systemd est actif sur le nœud :

      # systemctl is-active kubelet
    4. Affiche un résumé plus détaillé de l'état de kubelet.service:

      # systemctl status kubelet

7.2.3. Interroger les journaux des nœuds de cluster

Vous pouvez rassembler les journaux de l'unité journald et d'autres journaux dans /var/log sur des nœuds de cluster individuels.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez un accès SSH à vos hôtes.

Procédure

  1. Requête kubelet journald journaux d'unité des nœuds de cluster OpenShift Container Platform. L'exemple suivant interroge uniquement les nœuds du plan de contrôle :

    $ oc adm node-logs --role=master -u kubelet  1
    1
    Remplacer kubelet le cas échéant pour interroger d'autres journaux d'unité.
  2. Collecte des journaux à partir de sous-répertoires spécifiques sous /var/log/ sur les nœuds de la grappe.

    1. Récupérer la liste des journaux contenus dans un sous-répertoire /var/log/. L'exemple suivant répertorie les fichiers de /var/log/openshift-apiserver/ sur tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver
    2. Inspecter un journal spécifique dans un sous-répertoire /var/log/. L'exemple suivant affiche le contenu de /var/log/openshift-apiserver/audit.log pour tous les nœuds du plan de contrôle :

      $ oc adm node-logs --role=master --path=openshift-apiserver/audit.log
    3. Si l'API n'est pas fonctionnelle, examinez les journaux sur chaque nœud en utilisant SSH à la place. L'exemple suivant est une queue /var/log/openshift-apiserver/audit.log:

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo tail -f /var/log/openshift-apiserver/audit.log
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

7.3. Résolution des problèmes liés à l'exécution du conteneur CRI-O

7.3.1. A propos du moteur d'exécution de conteneurs CRI-O

CRI-O est une implémentation de moteur de conteneur natif de Kubernetes qui s'intègre étroitement avec le système d'exploitation pour fournir une expérience Kubernetes efficace et optimisée. Le moteur de conteneurs CRI-O s'exécute en tant que service systemd sur chaque nœud de cluster OpenShift Container Platform.

Lorsque des problèmes d'exécution des conteneurs surviennent, vérifiez l'état du service crio systemd sur chaque nœud. Rassemblez les journaux de l'unité CRI-O journald des nœuds qui présentent des problèmes d'exécution des conteneurs.

7.3.2. Vérification de l'état du moteur d'exécution CRI-O

Vous pouvez vérifier l'état du moteur d'exécution des conteneurs CRI-O sur chaque nœud du cluster.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Examinez l'état du CRI-O en interrogeant le service crio systemd sur un nœud, à l'intérieur d'un pod de débogage.

    1. Démarrer un pod de débogage pour un nœud :

      $ oc debug node/my-node
    2. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

      # chroot /host
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

    3. Vérifiez si le service crio systemd est actif sur le nœud :

      # systemctl is-active crio
    4. Affiche un résumé plus détaillé de l'état de crio.service:

      # systemctl status crio.service

7.3.3. Collecte des journaux d'unité du CRI-O

Si vous rencontrez des problèmes avec CRI-O, vous pouvez obtenir les journaux de l'unité CRI-O d'un nœud.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous disposez des noms de domaine complets du plan de contrôle ou des machines du plan de contrôle.

Procédure

  1. Rassembler les journaux de l'unité CRI-O journald. L'exemple suivant collecte les journaux de tous les nœuds du plan de contrôle (au sein de la grappe) :

    $ oc adm node-logs --role=master -u crio
  2. Rassemble les journaux de l'unité CRI-O journald d'un nœud spécifique :

    $ oc adm node-logs <node_name> -u crio
  3. Si l'API n'est pas fonctionnelle, examinez les journaux en utilisant SSH à la place. Remplacez <node>.<cluster_name>.<base_domain> par les valeurs appropriées :

    $ ssh core@<node>.<cluster_name>.<base_domain> journalctl -b -f -u crio.service
    Note

    Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

7.3.4. Nettoyage de l'entrepôt CRI-O

Vous pouvez effacer manuellement la mémoire éphémère de CRI-O si vous rencontrez les problèmes suivants :

  • Un nœud ne peut s'exécuter sur aucun pod et cette erreur apparaît :

    Failed to create pod sandbox: rpc error: code = Unknown desc = failed to mount container XXX: error recreating the missing symlinks: error reading name of symlink for XXX: open /var/lib/containers/storage/overlay/XXX/link: no such file or directory
  • Vous ne pouvez pas créer un nouveau conteneur sur un nœud de travail et l'erreur "can't stat lower layer" apparaît :

    can't stat lower layer ...  because it does not exist.  Going through storage to recreate the missing symlinks.
  • Votre nœud est dans l'état NotReady après une mise à niveau du cluster ou si vous tentez de le redémarrer.
  • L'implémentation de l'exécution du conteneur (crio) ne fonctionne pas correctement.
  • Vous ne pouvez pas démarrer un shell de débogage sur le nœud utilisant oc debug node/<nodename> car l'instance d'exécution du conteneur (crio) ne fonctionne pas.

Suivez cette procédure pour effacer complètement la mémoire du CRI-O et résoudre les erreurs.

Prérequis :

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Utiliser cordon sur le nœud. Cela permet d'éviter qu'une charge de travail ne soit planifiée si le nœud passe à l'état Ready. Vous saurez que la planification est désactivée lorsque SchedulingDisabled apparaîtra dans votre section Statut :

    $ oc adm cordon <nodename>
  2. Drainer le nœud en tant qu'utilisateur cluster-admin :

    oc adm drain <nodename> --ignore-daemonsets --delete-emptydir-data
    Note

    L'attribut terminationGracePeriodSeconds d'un pod ou d'un modèle de pod contrôle la période de terminaison gracieuse. Cet attribut est fixé par défaut à 30 secondes, mais peut être personnalisé par application si nécessaire. S'il est fixé à plus de 90 secondes, le module peut être marqué comme SIGKILLed et ne pas se terminer avec succès.

  3. Lorsque le nœud revient, connectez-vous à nouveau au nœud via SSH ou la console. Ensuite, connectez-vous à l'utilisateur root :

    $ ssh core@node1.example.com
    $ sudo -i
  4. Arrêter manuellement le kubelet :

    # systemctl stop kubelet
  5. Arrêter les conteneurs et les cosses :

    1. Utilisez la commande suivante pour arrêter les pods qui ne se trouvent pas dans le site HostNetwork. Ils doivent être supprimés en premier car leur suppression dépend des pods du plugin de mise en réseau, qui se trouvent dans le site HostNetwork.

      .. for pod in $(crictl pods -q); do if [[ "$(crictl inspectp $pod | jq -r .status.linux.namespaces.options.network)" != "NODE" ]]; then crictl rmp -f $pod; fi; done
    2. Arrêter toutes les autres nacelles :

      # crictl rmp -fa
  6. Arrêter manuellement les services crio :

    # systemctl stop crio
  7. Après avoir exécuté ces commandes, vous pouvez effacer complètement le stockage éphémère :

    # crio wipe -f
  8. Démarrer le service crio et kubelet :

    # systemctl start crio
    # systemctl start kubelet
  9. Vous saurez que le nettoyage a fonctionné si les services crio et kubelet sont démarrés et si le nœud est dans l'état Ready:

    $ oc get nodes

    Exemple de sortie

    NAME				    STATUS	                ROLES    AGE    VERSION
    ci-ln-tkbxyft-f76d1-nvwhr-master-1  Ready, SchedulingDisabled   master	 133m   v1.25.0

  10. Marquez le nœud comme étant planifiable. Vous saurez que l'ordonnancement est activé lorsque SchedulingDisabled n'aura plus d'état :

    oc adm uncordon <nodename> $ oc adm uncordon <nodename>

    Exemple de sortie

    NAME				     STATUS	      ROLES    AGE    VERSION
    ci-ln-tkbxyft-f76d1-nvwhr-master-1   Ready            master   133m   v1.25.0

7.4. Dépannage des problèmes liés au système d'exploitation

OpenShift Container Platform fonctionne sous RHCOS. Vous pouvez suivre ces procédures pour résoudre les problèmes liés au système d'exploitation.

7.4.1. Enquêter sur les pannes du noyau

Le service kdump, inclus dans le paquetage kexec-tools, fournit un mécanisme de crash-dump. Vous pouvez utiliser ce service pour sauvegarder le contenu de la mémoire d'un système en vue d'une analyse ultérieure.

L'architecture x86_64 supporte kdump en état de disponibilité générale (GA), tandis que les autres architectures supportent kdump en état d'aperçu technologique (TP).

Le tableau suivant fournit des détails sur le niveau de support de kdump pour différentes architectures.

Tableau 7.1. Prise en charge de Kdump dans RHCOS

ArchitectureNiveau de soutien

x86_64

 GA

arm64

 TP

s390x

 TP

ppc64le

 TP

Important

La prise en charge de Kdump, pour les trois architectures précédentes dans le tableau, est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information au cours du processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

7.4.1.1. Activation de kdump

RHCOS est livré avec le paquetage kexec-tools, mais une configuration manuelle est nécessaire pour activer le service kdump.

Procédure

Effectuez les étapes suivantes pour activer kdump sur RHCOS.

  1. Pour réserver de la mémoire pour le noyau de crash lors du premier démarrage du noyau, fournissez des arguments au noyau en entrant la commande suivante :

    # rpm-ostree kargs --append='crashkernel=256M'
  2. Facultatif : Pour écrire le crash dump sur le réseau ou à un autre endroit, plutôt qu'à l'emplacement local par défaut de /var/crash, modifiez le fichier de configuration de /etc/kdump.conf.

    Note

    Si votre nœud utilise des dispositifs cryptés LUKS, vous devez utiliser des vidages de réseau, car kdump ne prend pas en charge l'enregistrement des vidages de collisions sur des dispositifs cryptés LUKS.

    Pour plus de détails sur la configuration du service kdump, voir les commentaires dans /etc/sysconfig/kdump, /etc/kdump.conf, et la page de manuel kdump.conf. Consultez également la documentation RHEL kdump pour plus d'informations sur la configuration de la cible de vidage.

  3. Activez le service kdump systemd.

    # systemctl enable kdump.service
  4. Redémarrez votre système.

    # systemctl reboot
  5. Assurez-vous que kdump a chargé un noyau en panne en vérifiant que le service kdump.service systemd a démarré et s'est arrêté avec succès et que la commande, cat /sys/kernel/kexec_crash_loaded, affiche la valeur 1.

7.4.1.2. Activation de kdump au jour 1

Le service kdump est destiné à être activé par nœud pour déboguer les problèmes du noyau. Étant donné que l'activation de kdump a un coût et que ce coût s'accumule avec chaque nœud supplémentaire activé par kdump, il est recommandé de n'activer le service kdump sur chaque nœud qu'en cas de besoin. Les coûts potentiels de l'activation du service kdump sur chaque nœud sont les suivants :

  • Moins de RAM disponible en raison de la mémoire réservée au noyau de crash.
  • Indisponibilité du nœud alors que le noyau est en train de vider le cœur.
  • Espace de stockage supplémentaire utilisé pour stocker les crash dumps.

Si vous connaissez les inconvénients et les compromis liés à l'activation du service kdump, il est possible d'activer kdump à l'échelle de la grappe. Bien que les configurations de machines spécifiques ne soient pas encore prises en charge, vous pouvez utiliser une unité systemd dans un objet MachineConfig en tant que personnalisation du jour 1 et activer kdump sur tous les nœuds de la grappe. Vous pouvez créer un objet MachineConfig et injecter cet objet dans l'ensemble des fichiers manifestes utilisés par Ignition lors de la configuration du cluster.

Note

Voir "Personnaliser les nœuds" dans la section Installing → Installation configuration pour plus d'informations et d'exemples sur la façon d'utiliser les configurations Ignition.

Procédure

Créer un objet MachineConfig pour la configuration de l'ensemble du cluster :

  1. Créez un fichier de configuration Butane, 99-worker-kdump.bu, qui configure et active kdump :

    variant: openshift
    version: 4.12.0
    metadata:
      name: 99-worker-kdump 1
      labels:
        machineconfiguration.openshift.io/role: worker 2
    openshift:
      kernel_arguments: 3
        - crashkernel=256M
    storage:
      files:
        - path: /etc/kdump.conf 4
          mode: 0644
          overwrite: true
          contents:
            inline: |
              path /var/crash
              core_collector makedumpfile -l --message-level 7 -d 31
    
        - path: /etc/sysconfig/kdump 5
          mode: 0644
          overwrite: true
          contents:
            inline: |
              KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
              KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never nokaslr novmcoredd hest_disable"
              KEXEC_ARGS="-s"
              KDUMP_IMG="vmlinuz"
    
    systemd:
      units:
        - name: kdump.service
          enabled: true
    1 2
    Remplacer worker par master aux deux endroits lors de la création d'un objet MachineConfig pour les nœuds du plan de contrôle.
    3
    Fournir des arguments au noyau pour réserver de la mémoire pour le noyau de crash. Vous pouvez ajouter d'autres arguments du noyau si nécessaire.
    4
    Si vous souhaitez modifier le contenu de /etc/kdump.conf par rapport à la valeur par défaut, incluez cette section et modifiez la sous-section inline en conséquence.
    5
    Si vous souhaitez modifier le contenu de /etc/sysconfig/kdump par rapport à la valeur par défaut, incluez cette section et modifiez la sous-section inline en conséquence.
  2. Utiliser Butane pour générer un fichier YAML de configuration de la machine, 99-worker-kdump.yaml, contenant la configuration à fournir aux nœuds :

    $ butane 99-worker-kdump.bu -o 99-worker-kdump.yaml
  3. Placez le fichier YAML dans le répertoire <installation_directory>/manifests/ lors de l'installation du cluster. Vous pouvez également créer cet objet MachineConfig après l'installation du cluster avec le fichier YAML :

    $ oc create -f 99-worker-kdump.yaml

7.4.1.3. Test de la configuration de kdump

Voir la section Test de la configuration de kdump dans la documentation RHEL pour kdump.

7.4.1.4. Analyse d'un core dump

Voir la section Analyse d'un core dump dans la documentation RHEL pour kdump.

Note

Il est recommandé d'effectuer l'analyse vmcore sur un système RHEL distinct.

Ressources supplémentaires

7.4.2. Débogage des pannes d'allumage

Si une machine ne peut pas être provisionnée, Ignition échoue et RHCOS démarre dans le shell d'urgence. Utilisez la procédure suivante pour obtenir des informations de débogage.

Procédure

  1. Exécutez la commande suivante pour afficher les unités de service qui ont échoué :

    $ systemctl --failed
  2. Facultatif : Exécutez la commande suivante sur une unité de service individuelle pour obtenir plus d'informations :

    $ journalctl -u <unit>.service

7.5. Dépannage des problèmes de réseau

7.5.1. Comment l'interface réseau est sélectionnée

Pour les installations sur bare metal ou avec des machines virtuelles qui ont plus d'un contrôleur d'interface réseau (NIC), le NIC qu'OpenShift Container Platform utilise pour la communication avec le serveur API Kubernetes est déterminé par l'unité de service nodeip-configuration.service qui est exécutée par systemd lorsque le nœud démarre. Le site nodeip-configuration.service sélectionne l'IP de l'interface associée à la route par défaut.

Une fois que le service nodeip-configuration.service a déterminé le NIC correct, il crée le fichier /etc/systemd/system/kubelet.service.d/20-nodenet.conf. Le fichier 20-nodenet.conf attribue à la variable d'environnement KUBELET_NODE_IP l'adresse IP sélectionnée par le service.

Lorsque le service kubelet démarre, il lit la valeur de la variable d'environnement dans le fichier 20-nodenet.conf et définit l'adresse IP comme valeur de l'argument de ligne de commande --node-ip kubelet. Par conséquent, le service kubelet utilise l'adresse IP sélectionnée comme adresse IP du nœud.

Si le matériel ou le réseau est reconfiguré après l'installation, ou s'il existe une configuration réseau où l'IP du nœud ne devrait pas provenir de l'interface de la route par défaut, il est possible que le service nodeip-configuration.service sélectionne une carte d'interface réseau différente après un redémarrage. Dans certains cas, vous pouvez détecter qu'une carte d'interface différente a été sélectionnée en examinant la colonne INTERNAL-IP dans la sortie de la commande oc get nodes -o wide.

Si la communication réseau est perturbée ou mal configurée parce qu'un autre NIC est sélectionné, vous pouvez recevoir l'erreur suivante : EtcdCertSignerControllerDegraded. Vous pouvez créer un fichier d'indices qui inclut la variable NODEIP_HINT pour remplacer la logique de sélection IP par défaut. Pour plus d'informations, voir Facultatif : Remplacement de la logique de sélection de l'IP du nœud par défaut.

7.5.1.1. Facultatif : Remplacer la logique de sélection de l'IP du nœud par défaut

Pour remplacer la logique de sélection IP par défaut, vous pouvez créer un fichier d'indices qui inclut la variable NODEIP_HINT pour remplacer la logique de sélection IP par défaut. La création d'un fichier d'indices vous permet de sélectionner une adresse IP de nœud spécifique à partir de l'interface dans le sous-réseau de l'adresse IP spécifiée dans la variable NODEIP_HINT.

Par exemple, si un nœud possède deux interfaces, eth0 avec une adresse 10.0.0.10/24, et eth1 avec une adresse 192.0.2.5/24, et que la route par défaut pointe vers eth0 (10.0.0.10), l'adresse IP du nœud devrait normalement utiliser l'adresse IP 10.0.0.10.

Les utilisateurs peuvent configurer la variable NODEIP_HINT pour qu'elle pointe vers une IP connue dans le sous-réseau, par exemple une passerelle de sous-réseau telle que 192.0.2.1, de sorte que l'autre sous-réseau, 192.0.2.0/24, soit sélectionné. En conséquence, l'adresse IP 192.0.2.5 sur eth1 est utilisée pour le nœud.

La procédure suivante montre comment remplacer la logique de sélection de l'IP du nœud par défaut.

Procédure

  1. Ajoutez un fichier d'indices à votre fichier /etc/default/nodeip-configuration, par exemple :

    NODEIP_HINT=192.0.2.1
    Important
    • N'utilisez pas l'adresse IP exacte d'un nœud comme indice, par exemple 192.0.2.5. L'utilisation de l'adresse IP exacte d'un nœud entraîne l'échec de la configuration du nœud utilisant l'adresse IP de l'indice.
    • L'adresse IP figurant dans le fichier d'indices n'est utilisée que pour déterminer le sous-réseau correct. Elle ne recevra pas de trafic du fait de son apparition dans le fichier d'indices.
  2. Générez le contenu encodé base-64 en exécutant la commande suivante :

    $ echo 'NODEIP_HINT=192.0.2.1' | base64

    Exemple de sortie

    Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==

  3. Activez l'astuce en créant un manifeste de configuration de machine pour les rôles master et worker avant de déployer le cluster :

    Manifeste de configuration de la machine maître

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
     labels:
       machineconfiguration.openshift.io/role: master
       name: 99-nodeip-hint-master
    spec:
     config:
       ignition:
         version: 3.2.0
       storage:
         files:
         - contents:
             source: data:text/plain;charset=utf-8;base64, <encoded_content> 1
           mode: 0644
           overwrite: true
           path: /etc/default/nodeip-configuration

    1
    Remplacez <encoded_contents> par le contenu codé en base64 du fichier /etc/default/nodeip-configuration, par exemple Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==.

    Manifeste de configuration de la machine de travail

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
     labels:
       machineconfiguration.openshift.io/role: worker
       name: 99-nodeip-hint-worker
    spec:
     config:
       ignition:
         version: 3.2.0
       storage:
         files:
         - contents:
             source: data:text/plain;charset=utf-8;base64, <encoded_content> 1
           mode: 0644
           overwrite: true
           path: /etc/default/nodeip-configuration

    1
    Remplacez <encoded_contents> par le contenu codé en base64 du fichier /etc/default/nodeip-configuration, par exemple Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==.
  4. Enregistrez le manifeste dans le répertoire où vous stockez la configuration de votre cluster, par exemple, ~/clusterconfigs.
  5. Déployer le cluster.

7.5.2. Dépannage des problèmes liés à l'Open vSwitch

Pour résoudre certains problèmes liés à l'Open vSwitch (OVS), il peut s'avérer nécessaire de configurer le niveau du journal afin d'y inclure davantage d'informations.

Si vous modifiez temporairement le niveau de journalisation sur un nœud, sachez que vous pouvez recevoir des messages de journalisation du démon de configuration de la machine sur le nœud, comme dans l'exemple suivant :

E0514 12:47:17.998892    2281 daemon.go:1350] content mismatch for file /etc/systemd/system/ovs-vswitchd.service: [Unit]

Pour éviter les messages de journal liés à la non-concordance, annulez le changement de niveau de journal une fois que vous avez terminé votre dépannage.

7.5.2.1. Configurer temporairement le niveau de journalisation d'Open vSwitch

Pour un dépannage à court terme, vous pouvez configurer temporairement le niveau de journalisation de l'Open vSwitch (OVS). La procédure suivante ne nécessite pas le redémarrage du nœud. En outre, la modification de la configuration ne persiste pas lorsque vous redémarrez le nœud.

Après avoir effectué cette procédure pour modifier le niveau du journal, vous pouvez recevoir des messages du démon de configuration de la machine qui indiquent une incompatibilité de contenu pour le site ovs-vswitchd.service. Pour éviter ces messages, répétez cette procédure et réglez le niveau du journal sur la valeur d'origine.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Démarrer un pod de débogage pour un nœud :

    oc debug node/<node_name>
  2. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En remplaçant le répertoire racine par /host, vous pouvez exécuter des binaires à partir du système de fichiers de l'hôte :

    # chroot /host
  3. Visualiser le niveau actuel de syslog pour les modules OVS :

    # ovs-appctl vlog/list

    L'exemple suivant montre que le niveau de journalisation de syslog est défini sur info.

    Exemple de sortie

                     console    syslog    file
                     -------    ------    ------
    backtrace          OFF       INFO       INFO
    bfd                OFF       INFO       INFO
    bond               OFF       INFO       INFO
    bridge             OFF       INFO       INFO
    bundle             OFF       INFO       INFO
    bundles            OFF       INFO       INFO
    cfm                OFF       INFO       INFO
    collectors         OFF       INFO       INFO
    command_line       OFF       INFO       INFO
    connmgr            OFF       INFO       INFO
    conntrack          OFF       INFO       INFO
    conntrack_tp       OFF       INFO       INFO
    coverage           OFF       INFO       INFO
    ct_dpif            OFF       INFO       INFO
    daemon             OFF       INFO       INFO
    daemon_unix        OFF       INFO       INFO
    dns_resolve        OFF       INFO       INFO
    dpdk               OFF       INFO       INFO
    ...

  4. Spécifiez le niveau de journalisation dans le fichier /etc/systemd/system/ovs-vswitchd.service.d/10-ovs-vswitchd-restart.conf:

    Restart=always
    ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /var/lib/openvswitch'
    ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /etc/openvswitch'
    ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /run/openvswitch'
    ExecStartPost=-/usr/bin/ovs-appctl vlog/set syslog:dbg
    ExecReload=-/usr/bin/ovs-appctl vlog/set syslog:dbg

    Dans l'exemple précédent, le niveau de journalisation est défini sur dbg. Modifiez les deux dernières lignes en remplaçant syslog:<log_level> par off, emer, err, warn, info, ou dbg. Le niveau de journalisation off filtre tous les messages de journalisation.

  5. Redémarrer le service :

    # systemctl daemon-reload
    # systemctl restart ovs-vswitchd

7.5.2.2. Configuration permanente du niveau de journalisation d'Open vSwitch

Pour les modifications à long terme du niveau de journalisation d'Open vSwitch (OVS), vous pouvez modifier le niveau de journalisation de manière permanente.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Créez un fichier, tel que 99-change-ovs-loglevel.yaml, avec un objet MachineConfig comme dans l'exemple suivant :

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master  1
      name: 99-change-ovs-loglevel
    spec:
      config:
        ignition:
          version: 3.2.0
        systemd:
          units:
          - dropins:
            - contents: |
                [Service]
                  ExecStartPost=-/usr/bin/ovs-appctl vlog/set syslog:dbg  2
                  ExecReload=-/usr/bin/ovs-appctl vlog/set syslog:dbg
              name: 20-ovs-vswitchd-restart.conf
            name: ovs-vswitchd.service
    1
    Après avoir exécuté cette procédure pour configurer les nœuds du plan de contrôle, répétez la procédure et définissez le rôle sur worker pour configurer les nœuds de travail.
    2
    Définissez la valeur syslog:<log_level>. Les niveaux de journalisation sont off, emer, err, warn, info ou dbg. La valeur off permet de filtrer tous les messages de journalisation.
  2. Appliquer la configuration de la machine :

    $ oc apply -f 99-change-ovs-loglevel.yaml

7.5.2.3. Affichage des journaux Open vSwitch

La procédure suivante permet d'afficher les journaux Open vSwitch (OVS).

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  • Exécutez l'une des commandes suivantes :

    • Affichez les journaux en utilisant la commande oc depuis l'extérieur du cluster :

      $ oc adm node-logs <node_name> -u ovs-vswitchd
    • Affiche les journaux après l'ouverture d'une session sur un nœud du cluster :

      # journalctl -b -f -u ovs-vswitchd.service

      L'une des façons de se connecter à un nœud est d'utiliser la commande oc debug node/<node_name>.

7.6. Dépannage des problèmes de l'opérateur

Les opérateurs sont une méthode de conditionnement, de déploiement et de gestion d'une application OpenShift Container Platform. Ils agissent comme une extension de l'équipe d'ingénieurs du fournisseur de logiciels, en surveillant un environnement OpenShift Container Platform et en utilisant son état actuel pour prendre des décisions en temps réel. Les opérateurs sont conçus pour gérer les mises à niveau de manière transparente, réagir automatiquement aux pannes et ne pas prendre de raccourcis, comme sauter un processus de sauvegarde du logiciel pour gagner du temps.

OpenShift Container Platform 4.12 inclut un ensemble d'opérateurs par défaut qui sont nécessaires au bon fonctionnement du cluster. Ces opérateurs par défaut sont gérés par l'opérateur de version de cluster (CVO).

En tant qu'administrateur de cluster, vous pouvez installer des opérateurs d'application à partir de l'OperatorHub en utilisant la console web d'OpenShift Container Platform ou le CLI. Vous pouvez ensuite abonner l'opérateur à un ou plusieurs espaces de noms pour le mettre à la disposition des développeurs sur votre cluster. Les opérateurs d'application sont gérés par Operator Lifecycle Manager (OLM).

Si vous rencontrez des problèmes avec l'opérateur, vérifiez l'état de l'abonnement à l'opérateur. Vérifiez l'état des pods de l'opérateur dans le cluster et rassemblez les journaux de l'opérateur pour établir un diagnostic.

7.6.1. Types de conditions d'abonnement de l'opérateur

Les abonnements peuvent signaler les types de conditions suivants :

Tableau 7.2. Types de conditions d'abonnement

ConditionDescription

CatalogSourcesUnhealthy

Une partie ou la totalité des sources du catalogue à utiliser pour la résolution sont malsaines.

InstallPlanMissing

Il manque un plan d'installation pour un abonnement.

InstallPlanPending

Un plan d'installation pour un abonnement est en attente d'installation.

InstallPlanFailed

Un plan d'installation pour un abonnement a échoué.

ResolutionFailed

La résolution des dépendances pour un abonnement a échoué.

Note

Les opérateurs de cluster OpenShift Container Platform par défaut sont gérés par l'opérateur de version de cluster (CVO) et n'ont pas d'objet Subscription. Les opérateurs d'application sont gérés par Operator Lifecycle Manager (OLM) et ont un objet Subscription.

7.6.2. Visualisation de l'état de l'abonnement de l'opérateur à l'aide de la CLI

Vous pouvez consulter l'état de l'abonnement de l'opérateur à l'aide de l'interface de ligne de commande.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Liste des abonnements des opérateurs :

    $ oc get subs -n <operator_namespace>
  2. Utilisez la commande oc describe pour inspecter une ressource Subscription:

    oc describe sub <subscription_name> -n <operator_namespace>
  3. Dans la sortie de la commande, recherchez la section Conditions pour connaître l'état des types de conditions d'abonnement de l'opérateur. Dans l'exemple suivant, le type de condition CatalogSourcesUnhealthy a le statut false car toutes les sources de catalogue disponibles sont saines :

    Exemple de sortie

    Conditions:
       Last Transition Time:  2019-07-29T13:42:57Z
       Message:               all available catalogsources are healthy
       Reason:                AllCatalogSourcesHealthy
       Status:                False
       Type:                  CatalogSourcesUnhealthy

Note

Les opérateurs de cluster OpenShift Container Platform par défaut sont gérés par l'opérateur de version de cluster (CVO) et n'ont pas d'objet Subscription. Les opérateurs d'application sont gérés par Operator Lifecycle Manager (OLM) et ont un objet Subscription.

7.6.3. Visualisation de l'état de la source du catalogue de l'opérateur à l'aide de la CLI

Vous pouvez consulter l'état d'une source du catalogue de l'opérateur à l'aide de l'interface de ligne de commande.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Listez les sources de catalogue dans un espace de noms. Par exemple, vous pouvez vérifier l'espace de noms openshift-marketplace, qui est utilisé pour les sources de catalogue à l'échelle du cluster :

    $ oc get catalogsources -n openshift-marketplace

    Exemple de sortie

    NAME                  DISPLAY               TYPE   PUBLISHER   AGE
    certified-operators   Certified Operators   grpc   Red Hat     55m
    community-operators   Community Operators   grpc   Red Hat     55m
    example-catalog       Example Catalog       grpc   Example Org 2m25s
    redhat-marketplace    Red Hat Marketplace   grpc   Red Hat     55m
    redhat-operators      Red Hat Operators     grpc   Red Hat     55m

  2. La commande oc describe permet d'obtenir plus de détails et de connaître l'état d'une source de catalogue :

    $ oc describe catalogsource example-catalog -n openshift-marketplace

    Exemple de sortie

    Name:         example-catalog
    Namespace:    openshift-marketplace
    ...
    Status:
      Connection State:
        Address:              example-catalog.openshift-marketplace.svc:50051
        Last Connect:         2021-09-09T17:07:35Z
        Last Observed State:  TRANSIENT_FAILURE
      Registry Service:
        Created At:         2021-09-09T17:05:45Z
        Port:               50051
        Protocol:           grpc
        Service Name:       example-catalog
        Service Namespace:  openshift-marketplace

    Dans l'exemple précédent, le dernier état observé est TRANSIENT_FAILURE. Cet état indique qu'il y a un problème pour établir une connexion pour la source du catalogue.

  3. Listez les pods de l'espace de noms dans lequel votre source de catalogue a été créée :

    $ oc get pods -n openshift-marketplace

    Exemple de sortie

    NAME                                    READY   STATUS             RESTARTS   AGE
    certified-operators-cv9nn               1/1     Running            0          36m
    community-operators-6v8lp               1/1     Running            0          36m
    marketplace-operator-86bfc75f9b-jkgbc   1/1     Running            0          42m
    example-catalog-bwt8z                   0/1     ImagePullBackOff   0          3m55s
    redhat-marketplace-57p8c                1/1     Running            0          36m
    redhat-operators-smxx8                  1/1     Running            0          36m

    Lorsqu'une source de catalogue est créée dans un espace de noms, un pod pour la source de catalogue est créé dans cet espace de noms. Dans l'exemple de sortie précédent, le statut du pod example-catalog-bwt8z est ImagePullBackOff. Ce statut indique qu'il y a un problème lors de l'extraction de l'image d'index de la source de catalogue.

  4. Utilisez la commande oc describe pour inspecter un pod et obtenir des informations plus détaillées :

    $ oc describe pod example-catalog-bwt8z -n openshift-marketplace

    Exemple de sortie

    Name:         example-catalog-bwt8z
    Namespace:    openshift-marketplace
    Priority:     0
    Node:         ci-ln-jyryyg2-f76d1-ggdbq-worker-b-vsxjd/10.0.128.2
    ...
    Events:
      Type     Reason          Age                From               Message
      ----     ------          ----               ----               -------
      Normal   Scheduled       48s                default-scheduler  Successfully assigned openshift-marketplace/example-catalog-bwt8z to ci-ln-jyryyf2-f76d1-fgdbq-worker-b-vsxjd
      Normal   AddedInterface  47s                multus             Add eth0 [10.131.0.40/23] from openshift-sdn
      Normal   BackOff         20s (x2 over 46s)  kubelet            Back-off pulling image "quay.io/example-org/example-catalog:v1"
      Warning  Failed          20s (x2 over 46s)  kubelet            Error: ImagePullBackOff
      Normal   Pulling         8s (x3 over 47s)   kubelet            Pulling image "quay.io/example-org/example-catalog:v1"
      Warning  Failed          8s (x3 over 47s)   kubelet            Failed to pull image "quay.io/example-org/example-catalog:v1": rpc error: code = Unknown desc = reading manifest v1 in quay.io/example-org/example-catalog: unauthorized: access to the requested resource is not authorized
      Warning  Failed          8s (x3 over 47s)   kubelet            Error: ErrImagePull

    Dans l'exemple précédent, les messages d'erreur indiquent que l'image d'index de la source de catalogue ne parvient pas à être extraite en raison d'un problème d'autorisation. Par exemple, l'image d'index peut être stockée dans un registre qui nécessite des identifiants de connexion.

7.6.4. Interrogation de l'état de la nacelle de l'opérateur

Vous pouvez dresser la liste des Operator Pods au sein d'un cluster et de leur statut. Vous pouvez également obtenir un résumé détaillé des Operator Pods.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Liste des opérateurs en cours d'exécution dans la grappe. La sortie comprend la version de l'opérateur, la disponibilité et les informations sur le temps de fonctionnement :

    $ oc get clusteroperators
  2. Liste des pods de l'opérateur en cours d'exécution dans l'espace de noms de l'opérateur, ainsi que l'état du pod, les redémarrages et l'âge :

    oc get pod -n <operator_namespace>
  3. Produire un résumé détaillé de la nacelle de l'opérateur :

    oc describe pod <operator_pod_name> -n <operator_namespace>
  4. Si un problème lié à l'opérateur est spécifique à un nœud, demander l'état du conteneur de l'opérateur sur ce nœud.

    1. Démarrer un pod de débogage pour le nœud :

      $ oc debug node/my-node
    2. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

      # chroot /host
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

    3. Liste les détails des conteneurs du nœud, y compris l'état et les ID de pods associés :

      # crictl ps
    4. Répertorie les informations relatives à un conteneur d'opérateur spécifique sur le nœud. L'exemple suivant répertorie les informations relatives au conteneur network-operator:

      # crictl ps --name network-operator
    5. Quitter le shell de débogage.

7.6.5. Journal de bord de l'opérateur de collecte

Si vous rencontrez des problèmes avec l'opérateur, vous pouvez obtenir des informations de diagnostic détaillées à partir des journaux de pods de l'opérateur.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous disposez des noms de domaine complets du plan de contrôle ou des machines du plan de contrôle.

Procédure

  1. Liste des pods de l'opérateur qui sont en cours d'exécution dans l'espace de noms de l'opérateur, ainsi que l'état du pod, les redémarrages et l'âge :

    oc get pods -n <operator_namespace>
  2. Examiner les journaux d'un module d'opérateur :

    oc logs pod/<nom_du_pod> -n <espace_de_noms_de_l'opérateur>

    Si un module Opérateur a plusieurs conteneurs, la commande précédente produira une erreur qui inclura le nom de chaque conteneur. Interroger les journaux d'un conteneur individuel :

    oc logs pod/<operator_pod_name> -c <container_name> -n <operator_namespace> -c <container_name> -n <operator_namespace>
  3. Si l'API n'est pas fonctionnelle, examinez les journaux des pods et des conteneurs de l'opérateur sur chaque nœud du plan de contrôle en utilisant plutôt SSH. Remplacez <master-node>.<cluster_name>.<base_domain> par les valeurs appropriées.

    1. Liste des pods sur chaque nœud du plan de contrôle :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl pods
    2. Pour tout pod opérateur n'affichant pas l'état Ready, inspectez l'état du pod en détail. Remplacez <operator_pod_id> par l'ID du pod opérateur figurant dans la sortie de la commande précédente :

      ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl inspectp <operator_pod_id>
    3. Liste des conteneurs liés à un module opérateur :

      ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl ps --pod=<operator_pod_id>
    4. Pour tout conteneur d'opérateur n'affichant pas l'état Ready, inspectez l'état du conteneur en détail. Remplacez <container_id> par un identifiant de conteneur figurant dans le résultat de la commande précédente :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl inspect <container_id>
    5. Examinez les journaux des conteneurs de l'opérateur qui n'affichent pas l'état Ready. Remplacez <container_id> par un ID de conteneur figurant dans la sortie de la commande précédente :

      $ ssh core@<master-node>.<cluster_name>.<base_domain> sudo crictl logs -f <container_id>
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et dépendent des opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés comme accessed. Avant d'essayer de collecter des données de diagnostic via SSH, vérifiez si les données collectées en exécutant oc adm must gather et d'autres commandes oc sont suffisantes. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain>.

7.6.6. Désactivation du redémarrage automatique de Machine Config Operator

Lorsque des changements de configuration sont effectués par l'opérateur de configuration de la machine (MCO), Red Hat Enterprise Linux CoreOS (RHCOS) doit redémarrer pour que les changements prennent effet. Que le changement de configuration soit automatique ou manuel, un nœud RHCOS redémarre automatiquement à moins qu'il ne soit mis en pause.

Note

Les modifications suivantes ne déclenchent pas de redémarrage du nœud :

  • Lorsque le MCO détecte l'un des changements suivants, il applique la mise à jour sans vidanger ou redémarrer le nœud :

    • Modifications de la clé SSH dans le paramètre spec.config.passwd.users.sshAuthorizedKeys de la configuration d'une machine.
    • Changements apportés au secret de tirage global ou au secret de tirage dans l'espace de noms openshift-config.
    • Rotation automatique de l'autorité de certification /etc/kubernetes/kubelet-ca.crt par l'opérateur du serveur API Kubernetes.
  • Lorsque le MCO détecte des modifications dans le fichier /etc/containers/registries.conf, telles que l'ajout ou la modification d'un objet ImageDigestMirrorSet ou ImageTagMirrorSet, il draine les nœuds correspondants, applique les modifications et désenregistre les nœuds :

    • L'ajout d'un registre avec le jeu de paramètres pull-from-mirror = "digest-only" pour chaque miroir.
    • L'ajout d'un miroir avec le paramètre pull-from-mirror = "digest-only" défini dans un registre.
    • L'ajout d'éléments à la liste unqualified-search-registries.

Pour éviter les perturbations indésirables, vous pouvez modifier le pool de configuration de la machine (MCP) afin d'empêcher le redémarrage automatique après que l'opérateur a apporté des modifications à la configuration de la machine.

Note

La mise en pause d'un MCP empêche le MCO d'appliquer des modifications de configuration sur les nœuds associés. La mise en pause d'un MCP empêche également la transmission aux nœuds associés de tout certificat ayant fait l'objet d'une rotation automatique, y compris la rotation automatique du certificat de l'autorité de certification kube-apiserver-to-kubelet-signer.

Si le MCP est en pause lorsque le certificat de l'autorité de certification kube-apiserver-to-kubelet-signer expire et que le MCO tente de renouveler le certificat automatiquement, le MCO ne peut pas envoyer les nouveaux certificats à ces nœuds. Cela entraîne la dégradation du cluster et l'échec de plusieurs commandes oc, notamment oc debug, oc logs, oc exec, et oc attach. Vous recevez des alertes dans l'interface utilisateur Alerting de la console Web d'OpenShift Container Platform si un MCP est mis en pause lors de la rotation des certificats.

La mise en pause d'un MCP doit être effectuée en tenant compte de l'expiration du certificat de l'autorité de certification kube-apiserver-to-kubelet-signer et uniquement pour de courtes périodes.

De nouveaux certificats CA sont générés à 292 jours de la date d'installation et supprimés à 365 jours de cette date. Pour déterminer la prochaine rotation automatique des certificats d'AC, consultez la section Comprendre le renouvellement automatique des certificats d'AC dans Red Hat OpenShift 4.

7.6.6.1. Désactivation du redémarrage automatique de l'opérateur Machine Config à l'aide de la console

Pour éviter les perturbations indésirables dues aux changements effectués par le Machine Config Operator (MCO), vous pouvez utiliser la console web d'OpenShift Container Platform pour modifier le pool de configuration de la machine (MCP) afin d'empêcher le MCO d'effectuer des changements sur les nœuds de ce pool. Cela évite les redémarrages qui feraient normalement partie du processus de mise à jour du MCO.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

Pour suspendre ou annuler le redémarrage automatique de la mise à jour du MCO :

  • Interrompre le processus de redémarrage automatique :

    1. Connectez-vous à la console web de OpenShift Container Platform en tant qu'utilisateur ayant le rôle cluster-admin.
    2. Cliquez sur ComputeMachineConfigPools.
    3. Sur la page MachineConfigPools, cliquez sur master ou worker, en fonction des nœuds pour lesquels vous souhaitez interrompre le redémarrage.
    4. Sur la page master ou worker, cliquez sur YAML.
    5. Dans le YAML, mettez à jour le champ spec.paused en le remplaçant par true.

      Exemple d'objet MachineConfigPool

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
       ...
      spec:
       ...
        paused: true 1

      1
      Mettez à jour le champ spec.paused en true pour interrompre le redémarrage.
    6. Pour vérifier que le MCP est en pause, revenez à la page MachineConfigPools.

      Sur la page MachineConfigPools, la colonne Paused indique True pour le GPE que vous avez modifié.

      Si le GPE a des modifications en attente alors qu'il est en pause, la colonne Updated est False et Updating est False. Lorsque Updated est True et Updating est False, il n'y a pas de modifications en attente.

      Important

      Si des modifications sont en attente (lorsque les colonnes Updated et Updating sont toutes deux False), il est recommandé de programmer une fenêtre de maintenance pour un redémarrage le plus tôt possible. Suivez les étapes suivantes pour interrompre le processus de redémarrage automatique afin d'appliquer les modifications qui ont été mises en attente depuis le dernier redémarrage.

  • Interrompre le processus de redémarrage automatique :

    1. Connectez-vous à la console web de OpenShift Container Platform en tant qu'utilisateur ayant le rôle cluster-admin.
    2. Cliquez sur ComputeMachineConfigPools.
    3. Sur la page MachineConfigPools, cliquez sur master ou worker, en fonction des nœuds pour lesquels vous souhaitez interrompre le redémarrage.
    4. Sur la page master ou worker, cliquez sur YAML.
    5. Dans le YAML, mettez à jour le champ spec.paused en le remplaçant par false.

      Exemple d'objet MachineConfigPool

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
       ...
      spec:
       ...
        paused: false 1

      1
      Mettre à jour le champ spec.paused en false pour permettre le redémarrage.
      Note

      En débloquant un MCP, le MCO applique tous les changements interrompus et redémarre Red Hat Enterprise Linux CoreOS (RHCOS) si nécessaire.

    6. Pour vérifier que le MCP est en pause, revenez à la page MachineConfigPools.

      Sur la page MachineConfigPools, la colonne Paused indique False pour le GPE que vous avez modifié.

      Si le GPE applique des modifications en cours, la colonne Updated est False et la colonne Updating est True. Lorsque Updated est True et Updating est False, il n'y a plus de modifications en cours.

7.6.6.2. Désactivation du redémarrage automatique du Machine Config Operator à l'aide de la CLI

Pour éviter les perturbations indésirables dues aux changements effectués par le Machine Config Operator (MCO), vous pouvez modifier le pool de configuration de la machine (MCP) à l'aide de la CLI d'OpenShift (oc) afin d'empêcher le MCO d'effectuer des changements sur les nœuds de ce pool. Cela évite les redémarrages qui feraient normalement partie du processus de mise à jour du MCO.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

Pour suspendre ou annuler le redémarrage automatique de la mise à jour du MCO :

  • Interrompre le processus de redémarrage automatique :

    1. Mettre à jour la ressource personnalisée MachineConfigPool pour définir le champ spec.paused en true.

      Nœuds du plan de contrôle (maître)

      $ oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/master

      Nœuds de travail

      $ oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/worker

    2. Vérifiez que le MCP est en pause :

      Nœuds du plan de contrôle (maître)

      $ oc get machineconfigpool/master --template='{{.spec.paused}}'

      Nœuds de travail

      $ oc get machineconfigpool/worker --template='{{.spec.paused}}'

      Exemple de sortie

      true

      Le champ spec.paused est true et le MCP est en pause.

    3. Déterminer si le MCP a des modifications en attente :

      # oc get machineconfigpool

      Exemple de sortie

      NAME     CONFIG                                             UPDATED   UPDATING
      master   rendered-master-33cf0a1254318755d7b48002c597bf91   True      False
      worker   rendered-worker-e405a5bdb0db1295acea08bcca33fa60   False     False

      Si la colonne UPDATED est False et UPDATING est False, des modifications sont en attente. Si UPDATED est True et UPDATING est False, il n'y a pas de modifications en attente. Dans l'exemple précédent, le nœud de travailleur a des modifications en attente. Le nœud du plan de contrôle n'a pas de modifications en attente.

      Important

      Si des modifications sont en attente (lorsque les colonnes Updated et Updating sont toutes deux False), il est recommandé de programmer une fenêtre de maintenance pour un redémarrage le plus tôt possible. Suivez les étapes suivantes pour interrompre le processus de redémarrage automatique afin d'appliquer les modifications qui ont été mises en attente depuis le dernier redémarrage.

  • Interrompre le processus de redémarrage automatique :

    1. Mettre à jour la ressource personnalisée MachineConfigPool pour définir le champ spec.paused en false.

      Nœuds du plan de contrôle (maître)

      $ oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/master

      Nœuds de travail

      $ oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/worker

      Note

      En débloquant un MCP, le MCO applique tous les changements interrompus et redémarre Red Hat Enterprise Linux CoreOS (RHCOS) si nécessaire.

    2. Vérifiez que le MCP est désactivé :

      Nœuds du plan de contrôle (maître)

      $ oc get machineconfigpool/master --template='{{.spec.paused}}'

      Nœuds de travail

      $ oc get machineconfigpool/worker --template='{{.spec.paused}}'

      Exemple de sortie

      false

      Le champ spec.paused est false et le MCP est désactivé.

    3. Déterminer si le MCP a des modifications en attente :

      $ oc get machineconfigpool

      Exemple de sortie

      NAME     CONFIG                                   UPDATED  UPDATING
      master   rendered-master-546383f80705bd5aeaba93   True     False
      worker   rendered-worker-b4c51bb33ccaae6fc4a6a5   False    True

      Si le GPE applique des modifications en cours, la colonne UPDATED est False et la colonne UPDATING est True. Lorsque UPDATED est True et UPDATING est False, il n'y a plus de modifications en cours. Dans l'exemple précédent, le MCO met à jour le nœud de travailleur.

7.6.7. Actualisation des abonnements défaillants

Dans Operator Lifecycle Manager (OLM), si vous vous abonnez à un opérateur qui fait référence à des images qui ne sont pas accessibles sur votre réseau, vous pouvez trouver des travaux dans l'espace de noms openshift-marketplace qui échouent avec les erreurs suivantes :

Exemple de sortie

ImagePullBackOff for
Back-off pulling image "example.com/openshift4/ose-elasticsearch-operator-bundle@sha256:6d2587129c846ec28d384540322b40b05833e7e00b25cca584e004af9a1d292e"

Exemple de sortie

rpc error: code = Unknown desc = error pinging docker registry example.com: Get "https://example.com/v2/": dial tcp: lookup example.com on 10.0.0.1:53: no such host

En conséquence, l'abonnement est bloqué dans cet état d'échec et l'opérateur est incapable d'installer ou de mettre à niveau.

Vous pouvez actualiser un abonnement défaillant en supprimant l'abonnement, la version du service de cluster (CSV) et d'autres objets connexes. Après avoir recréé l'abonnement, OLM réinstalle la version correcte de l'opérateur.

Conditions préalables

  • Vous avez un abonnement défaillant qui ne parvient pas à extraire une image de paquet inaccessible.
  • Vous avez confirmé que l'image correcte de la liasse est accessible.

Procédure

  1. Obtenir les noms des objets Subscription et ClusterServiceVersion de l'espace de noms dans lequel l'opérateur est installé :

    $ oc get sub,csv -n <namespace>

    Exemple de sortie

    NAME                                                       PACKAGE                  SOURCE             CHANNEL
    subscription.operators.coreos.com/elasticsearch-operator   elasticsearch-operator   redhat-operators   5.0
    
    NAME                                                                         DISPLAY                            VERSION    REPLACES   PHASE
    clusterserviceversion.operators.coreos.com/elasticsearch-operator.5.0.0-65   OpenShift Elasticsearch Operator   5.0.0-65              Succeeded

  2. Supprimer l'abonnement :

    oc delete subscription <subscription_name> -n <namespace> $ oc delete subscription <subscription_name> -n <namespace>
  3. Supprimer la version du service de cluster :

    $ oc delete csv <csv_name> -n <namespace>
  4. Récupère les noms de tous les travaux défaillants et des cartes de configuration correspondantes dans l'espace de noms openshift-marketplace:

    $ oc get job,configmap -n openshift-marketplace

    Exemple de sortie

    NAME                                                                        COMPLETIONS   DURATION   AGE
    job.batch/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   1/1           26s        9m30s
    
    NAME                                                                        DATA   AGE
    configmap/1de9443b6324e629ddf31fed0a853a121275806170e34c926d69e53a7fcbccb   3      9m30s

  5. Supprimer le travail :

    oc delete job <job_name> -n openshift-marketplace

    Cela permet de s'assurer que les pods qui tentent d'extraire l'image inaccessible ne sont pas recréés.

  6. Supprimer la carte de configuration :

    oc delete configmap <configmap_name> -n openshift-marketplace
  7. Réinstallez l'opérateur en utilisant OperatorHub dans la console web.

Vérification

  • Vérifiez que l'opérateur a été réinstallé avec succès :

    $ oc get sub,csv,installplan -n <namespace>

7.7. Enquêter sur les questions relatives aux nacelles

OpenShift Container Platform exploite le concept Kubernetes de pod, qui est un ou plusieurs conteneurs déployés ensemble sur un hôte. Un pod est la plus petite unité de calcul qui peut être définie, déployée et gérée sur OpenShift Container Platform 4.12.

Une fois qu'un pod est défini, il est affecté à l'exécution sur un nœud jusqu'à ce que ses conteneurs quittent le système ou jusqu'à ce qu'il soit supprimé. En fonction de la politique et du code de sortie, les pods sont soit supprimés après la sortie, soit conservés afin que leurs journaux puissent être consultés.

La première chose à vérifier en cas de problème avec un pod est son état. Si une défaillance explicite du pod s'est produite, observez l'état d'erreur du pod pour identifier les problèmes spécifiques liés à l'image, au conteneur ou au réseau du pod. Concentrez la collecte des données de diagnostic en fonction de l'état d'erreur. Examinez les messages d'événement du module, ainsi que les informations du journal du module et du conteneur. Diagnostiquer les problèmes de manière dynamique en accédant aux pods en cours d'exécution sur la ligne de commande, ou démarrer un pod de débogage avec un accès root basé sur la configuration de déploiement d'un pod problématique.

7.7.1. Comprendre les états d'erreur des pods

Les défaillances du pod renvoient des états d'erreur explicites qui peuvent être observés dans le champ status de la sortie de oc get pods. Les états d'erreur du pod couvrent les défaillances liées à l'image, au conteneur et au réseau de conteneurs.

Le tableau suivant fournit une liste des états d'erreur des pods ainsi que leur description.

Tableau 7.3. États d'erreur du pod

État d'erreur du podDescription

ErrImagePull

Erreur générique de recherche d'images.

ErrImagePullBackOff

La recherche d'images a échoué et est interrompue.

ErrInvalidImageName

Le nom de l'image spécifiée n'est pas valide.

ErrImageInspect

L'inspection de l'image n'a pas abouti.

ErrImageNeverPull

PullPolicy est défini sur NeverPullImage et que l'image cible n'est pas présente localement sur l'hôte.

ErrRegistryUnavailable

Une erreur HTTP a été rencontrée lors de la récupération d'une image à partir d'un registre.

ErrContainerNotFound

Le conteneur spécifié n'est pas présent ou n'est pas géré par le kubelet, dans le pod déclaré.

ErrRunInitContainer

L'initialisation du conteneur a échoué.

ErrRunContainer

Aucun des conteneurs du pod n'a démarré avec succès.

ErrKillContainer

Aucun des conteneurs de la nacelle n'a été tué avec succès.

ErrCrashLoopBackOff

Un conteneur s'est arrêté. Le kubelet ne tentera pas de le redémarrer.

ErrVerifyNonRoot

Un conteneur ou une image a tenté de s'exécuter avec les privilèges de l'utilisateur root.

ErrCreatePodSandbox

La création du bac à sable n'a pas abouti.

ErrConfigPodSandbox

La configuration du bac à sable n'a pas été obtenue.

ErrKillPodSandbox

Le bac à sable d'un pod ne s'est pas arrêté avec succès.

ErrSetupNetwork

L'initialisation du réseau a échoué.

ErrTeardownNetwork

La terminaison du réseau a échoué.

7.7.2. Examen de l'état des nacelles

Vous pouvez interroger l'état des pods et les états d'erreur. Vous pouvez également interroger la configuration de déploiement associée à un pod et vérifier la disponibilité de l'image de base.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • skopeo est installé.

Procédure

  1. Passer à un projet :

    oc project <nom_du_projet>
  2. Liste des pods en cours d'exécution dans l'espace de noms, ainsi que l'état des pods, les états d'erreur, les redémarrages et l'âge :

    $ oc get pods
  3. Déterminez si l'espace de noms est géré par une configuration de déploiement :

    $ oc status

    Si l'espace de noms est géré par une configuration de déploiement, le résultat comprend le nom de la configuration de déploiement et une référence à l'image de base.

  4. Inspecter l'image de base référencée dans la sortie de la commande précédente :

    skopeo inspect docker://<image_reference>
  5. Si la référence de l'image de base n'est pas correcte, mettez à jour la référence dans la configuration du déploiement :

    $ oc edit deployment/my-deployment
  6. Lorsque la configuration du déploiement change à la sortie, la configuration sera automatiquement redéployée. Surveillez l'état du pod au fur et à mesure que le déploiement progresse, afin de déterminer si le problème a été résolu :

    $ oc get pods -w
  7. Examinez les événements de l'espace de noms pour y trouver des informations de diagnostic relatives aux défaillances des pods :

    $ oc get events

7.7.3. Inspection des registres des gousses et des conteneurs

Vous pouvez consulter les journaux des pods et des conteneurs pour y trouver des avertissements et des messages d'erreur liés à des échecs explicites de pods. En fonction de la politique et du code de sortie, les journaux des pods et des conteneurs restent disponibles après l'arrêt des pods.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Interroger les journaux pour un module spécifique :

    oc logs <nom_du_pod>
  2. Interroger les journaux d'un conteneur spécifique au sein d'un pod :

    oc logs <nom_du_pod> -c <nom_du_conteneur>

    Les journaux récupérés à l'aide des commandes oc logs précédentes sont composés de messages envoyés à stdout à l'intérieur des pods ou des conteneurs.

  3. Inspecter les grumes contenues dans /var/log/ à l'intérieur d'une nacelle.

    1. Liste des fichiers journaux et des sous-répertoires contenus dans /var/log au sein d'un pod :

      oc exec <nom_du_pod> ls -alh /var/log
    2. Interroger un fichier journal spécifique contenu dans /var/log au sein d'un pod :

      oc exec <nom_du_pod> cat /var/log/<chemin_vers_log>
    3. Liste des fichiers journaux et des sous-répertoires contenus dans /var/log à l'intérieur d'un conteneur spécifique :

      oc exec <nom_du_pod> -c <nom_du_conteneur> ls /var/log
    4. Interroger un fichier journal spécifique contenu dans /var/log à l'intérieur d'un conteneur spécifique :

      oc exec <nom_du_pod> -c <nom_du_conteneur> cat /var/log/<chemin_vers_log>

7.7.4. Accès aux pods en cours d'exécution

Vous pouvez passer en revue les pods en cours d'exécution de manière dynamique en ouvrant un shell à l'intérieur d'un pod ou en obtenant un accès au réseau par le biais d'une redirection de port.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Entrez dans le projet qui contient le pod auquel vous souhaitez accéder. Cette opération est nécessaire car la commande oc rsh n'accepte pas l'option d'espace de noms -n:

    oc project <namespace>
  2. Démarrer un shell à distance dans un pod :

    $ oc rsh <pod_name>  1
    1
    Si un module a plusieurs conteneurs, oc rsh prend par défaut le premier conteneur, à moins que -c <container_name> ne soit spécifié.
  3. Lancer un shell à distance dans un conteneur spécifique au sein d'un pod :

    oc rsh -c <container_name> pod/<pod_name>
  4. Créer une session de transfert de port vers un port d'un pod :

    $ oc port-forward <pod_name> <host_port>:<pod_port>  1
    1
    Saisissez Ctrl C pour annuler la session de transfert de port.

7.7.5. Démarrage des pods de débogage avec accès root

Vous pouvez démarrer un pod de débogage avec un accès root, en fonction du déploiement ou de la configuration du déploiement d'un pod problématique. Les utilisateurs de pods s'exécutent généralement avec des privilèges non root, mais l'exécution de pods de dépannage avec des privilèges root temporaires peut s'avérer utile lors de l'investigation d'un problème.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Démarrer un pod de débogage avec un accès root, sur la base d'un déploiement.

    1. Obtenir le nom de déploiement d'un projet :

      oc get deployment -n <nom_du_projet>
    2. Démarrer un pod de débogage avec les privilèges root, en fonction du déploiement :

      $ oc debug deployment/my-deployment --as-root -n <nom_du_projet>
  2. Démarrer un pod de débogage avec un accès root, sur la base d'une configuration de déploiement.

    1. Obtenir le nom de la configuration de déploiement d'un projet :

      oc get deploymentconfigs -n <nom_du_projet>
    2. Démarrer un pod de débogage avec les privilèges de root, en fonction de la configuration du déploiement :

      $ oc debug deploymentconfig/my-deployment-configuration --as-root -n <nom_du_projet>
Note

Vous pouvez ajouter -- <command> aux commandes oc debug précédentes pour exécuter des commandes individuelles dans un module de débogage, au lieu d'exécuter un shell interactif.

7.7.6. Copier des fichiers vers et depuis des pods et des conteneurs

Vous pouvez copier des fichiers vers et à partir d'un module pour tester les changements de configuration ou recueillir des informations de diagnostic.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Copier un fichier dans un pod :

    $ oc cp <local_path> <pod_name>:/<path> -c <container_name>  1
    1
    Le premier conteneur d'un pod est sélectionné si l'option -c n'est pas spécifiée.
  2. Copier un fichier à partir d'un pod :

    $ oc cp <pod_name>:/<path>  -c <container_name><local_path>  1
    1
    Le premier conteneur d'un pod est sélectionné si l'option -c n'est pas spécifiée.
    Note

    Pour que oc cp fonctionne, le binaire tar doit être disponible dans le conteneur.

7.8. Dépannage du processus Source-to-Image

7.8.1. Stratégies de dépannage de la source à l'image

Utilisez Source-to-Image (S2I) pour créer des images de conteneurs reproductibles et formatées par Docker. Vous pouvez créer des images prêtes à l'emploi en injectant le code source d'une application dans une image de conteneur et en assemblant une nouvelle image. La nouvelle image incorpore l'image de base (le constructeur) et le code source construit.

Pour déterminer à quel moment du processus S2I une défaillance se produit, vous pouvez observer l'état des pods relatifs à chacune des étapes S2I suivantes :

  1. During the build configuration stageun pod de construction est utilisé pour créer une image de conteneur d'application à partir d'une image de base et du code source de l'application.
  2. During the deployment configuration stageun pod de déploiement est utilisé pour déployer des pods d'application à partir de l'image du conteneur d'application qui a été construite lors de l'étape de configuration de la construction. Le module de déploiement déploie également d'autres ressources telles que des services et des itinéraires. La configuration du déploiement commence après la réussite de la configuration de la construction.
  3. After the deployment pod has started the application podsles pannes d'application peuvent se produire dans les modules d'application en cours d'exécution. Par exemple, une application peut ne pas se comporter comme prévu bien que les modules d'application soient dans l'état Running. Dans ce cas, vous pouvez accéder aux modules d'application en cours d'exécution afin d'examiner les défaillances d'une application au sein d'un module.

Pour résoudre les problèmes liés aux S2I, il convient de suivre la stratégie suivante :

  1. Contrôler l'état de la construction, du déploiement et du pod d'application
  2. Déterminer l'étape du processus S2I où le problème s'est produit
  3. Examiner les journaux correspondant à l'étape échouée

7.8.2. Collecte des données de diagnostic source-image

L'outil S2I exécute successivement un module de construction et un module de déploiement. Le module de déploiement est chargé de déployer les modules d'application sur la base de l'image du conteneur d'application créée lors de la phase de construction. Surveillez l'état de la construction, du déploiement et des modules d'application pour déterminer à quel moment du processus S2I une défaillance se produit. Concentrez ensuite la collecte des données de diagnostic en conséquence.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Your API service is still functional.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Surveillez l'état du pod tout au long du processus S2I afin de déterminer à quel stade une défaillance se produit :

    $ oc get pods -w  1
    1
    Utilisez -w pour surveiller les modifications apportées aux pods jusqu'à ce que vous quittiez la commande à l'aide de Ctrl C.
  2. Examinez les journaux d'un pod qui a échoué pour y déceler les erreurs.

    • If the build pod fails, examinez les journaux du module de construction :

      oc logs -f pod/<application_name>-<build_number>-build
      Note

      Vous pouvez également consulter les journaux de la configuration de construction en utilisant oc logs -f bc/<application_name>. Les journaux de la configuration de construction comprennent les journaux du module de construction.

    • If the deployment pod failsle cas échéant, examinez les journaux du module de déploiement :

      $ oc logs -f pod/<application_name>-<build_number>-deploy
      Note

      Vous pouvez également consulter les journaux de la configuration de déploiement à l'aide de oc logs -f dc/<application_name>. Cette commande génère des journaux à partir du module de déploiement jusqu'à ce que ce dernier se termine avec succès. La commande affiche les journaux des modules d'application si vous l'exécutez après la fin du module de déploiement. Après la fin d'un module de déploiement, il est toujours possible d'accéder à ses journaux en exécutant la commande oc logs -f pod/<application_name>-<build_number>-deploy.

    • If an application pod fails, or if an application is not behaving as expected within a running application podpour ce faire, consultez les journaux du module d'application :

      $ oc logs -f pod/<application_name>-<build_number>-<random_string>

7.8.3. Collecte de données de diagnostic d'application afin d'enquêter sur les défaillances de l'application

Des pannes d'application peuvent se produire dans les pods d'application en cours d'exécution. Dans ces situations, vous pouvez récupérer des informations de diagnostic à l'aide de ces stratégies :

  • Examiner les événements relatifs aux modules d'application.
  • Examinez les journaux des pods d'application, y compris les fichiers journaux spécifiques à l'application qui ne sont pas collectés par le cadre de journalisation OpenShift.
  • Tester les fonctionnalités d'une application de manière interactive et exécuter des outils de diagnostic dans un conteneur d'application.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Répertorie les événements relatifs à un module d'application spécifique. L'exemple suivant permet de récupérer les événements d'un module d'application nommé my-app-1-akdlg:

    $ oc describe pod/my-app-1-akdlg
  2. Examiner les journaux d'un module d'application :

    $ oc logs -f pod/my-app-1-akdlg
  3. Interroger des logs spécifiques dans un pod d'application en cours d'exécution. Les logs qui sont envoyés à stdout sont collectés par le framework OpenShift Logging et sont inclus dans la sortie de la commande précédente. La requête suivante n'est nécessaire que pour les journaux qui ne sont pas envoyés à stdout.

    1. S'il est possible d'accéder à un journal d'application sans les privilèges de l'administrateur dans un module, concaténer le fichier journal comme suit :

      $ oc exec my-app-1-akdlg -- cat /var/log/my-application.log
    2. Si l'accès root est nécessaire pour consulter le journal d'une application, vous pouvez démarrer un conteneur de débogage avec les privilèges root, puis consulter le fichier journal à partir du conteneur. Démarrez le conteneur de débogage à partir de l'objet DeploymentConfig du projet. Les utilisateurs de pods s'exécutent généralement avec des privilèges non root, mais l'exécution de pods de dépannage avec des privilèges root temporaires peut s'avérer utile lors de l'investigation d'un problème :

      $ oc debug dc/my-deployment-configuration --as-root -- cat /var/log/my-application.log
      Note

      Vous pouvez accéder à un shell interactif avec un accès root dans le pod de débogage si vous exécutez oc debug dc/<deployment_configuration> --as-root sans ajouter -- <command>.

  4. Tester les fonctionnalités d'une application de manière interactive et exécuter des outils de diagnostic, dans un conteneur d'application avec un shell interactif.

    1. Démarrer un shell interactif sur le conteneur d'application :

      $ oc exec -it my-app-1-akdlg /bin/bash
    2. Tester les fonctionnalités de l'application de manière interactive à partir de l'interpréteur de commandes. Par exemple, vous pouvez exécuter la commande du point d'entrée du conteneur et observer les résultats. Ensuite, vous pouvez tester les modifications directement à partir de la ligne de commande, avant de mettre à jour le code source et de reconstruire le conteneur d'application par le biais du processus S2I.
    3. Exécuter les binaires de diagnostic disponibles dans le conteneur.

      Note

      Les privilèges root sont nécessaires pour exécuter certains binaires de diagnostic. Dans ce cas, vous pouvez démarrer un pod de débogage avec un accès root, basé sur l'objet DeploymentConfig d'un pod problématique, en exécutant oc debug dc/<deployment_configuration> --as-root. Ensuite, vous pouvez exécuter les binaires de diagnostic en tant que root à partir du pod de débogage.

  5. Si les binaires de diagnostic ne sont pas disponibles dans un conteneur, vous pouvez exécuter les binaires de diagnostic d'un hôte dans l'espace de noms d'un conteneur en utilisant nsenter. L'exemple suivant exécute ip ad dans l'espace de noms d'un conteneur, en utilisant le binaire ip de l'hôte.

    1. Entrez dans une session de débogage sur le nœud cible. Cette étape instancie un pod de débogage appelé <node_name>-debug:

      $ oc debug node/my-cluster-node
    2. Définissez /host comme répertoire racine dans le shell de débogage. Le pod de débogage monte le système de fichiers racine de l'hôte dans /host au sein du pod. En changeant le répertoire racine en /host, vous pouvez exécuter les binaires contenus dans les chemins d'exécution de l'hôte :

      # chroot /host
      Note

      Les nœuds de cluster OpenShift Container Platform 4.12 exécutant Red Hat Enterprise Linux CoreOS (RHCOS) sont immuables et s'appuient sur les opérateurs pour appliquer les changements de cluster. L'accès aux nœuds de cluster à l'aide de SSH n'est pas recommandé et les nœuds seront altérés en tant que accessed. Cependant, si l'API OpenShift Container Platform n'est pas disponible, ou si le kubelet ne fonctionne pas correctement sur le nœud cible, les opérations oc seront impactées. Dans de telles situations, il est possible d'accéder aux nœuds en utilisant ssh core@<node>.<cluster_name>.<base_domain> à la place.

    3. Déterminer l'ID du conteneur cible :

      # crictl ps
    4. Déterminer l'ID du processus du conteneur. Dans cet exemple, l'ID du conteneur cible est a7fe32346b120:

      # crictl inspect a7fe32346b120 --output yaml | grep 'pid:' | awk '{print $2}'
    5. Exécutez ip ad dans l'espace de noms du conteneur, en utilisant le binaire ip de l'hôte. Cet exemple utilise 31150 comme ID de processus du conteneur. La commande nsenter entre dans l'espace de noms d'un processus cible et exécute une commande dans son espace de noms. Comme le processus cible dans cet exemple est l'ID de processus d'un conteneur, la commande ip ad est exécutée dans l'espace de noms du conteneur à partir de l'hôte :

      # nsenter -n -t 31150 -- ip ad
      Note

      L'exécution des binaires de diagnostic d'un hôte dans l'espace de noms d'un conteneur n'est possible que si vous utilisez un conteneur privilégié tel qu'un nœud de débogage.

7.8.4. Ressources supplémentaires

7.9. Dépannage des problèmes de stockage

7.9.1. Résolution des erreurs de rattachement multiple

Lorsqu'un nœud tombe en panne ou s'arrête brusquement, le volume ReadWriteOnce (RWO) attaché est censé être démonté du nœud afin qu'il puisse être utilisé par un pod planifié sur un autre nœud.

Cependant, le montage sur un nouveau nœud n'est pas possible car le nœud défaillant n'est pas en mesure de démonter le volume attaché.

Une erreur de rattachement multiple est signalée :

Exemple de sortie

Unable to attach or mount volumes: unmounted volumes=[sso-mysql-pvol], unattached volumes=[sso-mysql-pvol default-token-x4rzc]: timed out waiting for the condition
Multi-Attach error for volume "pvc-8837384d-69d7-40b2-b2e6-5df86943eef9" Volume is already used by pod(s) sso-mysql-1-ns6b4

Procédure

Pour résoudre le problème de l'attachement multiple, utilisez l'une des solutions suivantes :

  • Permettre des pièces jointes multiples en utilisant des volumes RWX.

    Pour la plupart des solutions de stockage, vous pouvez utiliser des volumes ReadWriteMany (RWX) pour éviter les erreurs de rattachement multiple.

  • Récupérer ou supprimer le nœud défaillant lors de l'utilisation d'un volume RWO.

    Pour le stockage qui ne prend pas en charge RWX, tel que VMware vSphere, les volumes RWO doivent être utilisés à la place. Cependant, les volumes RWO ne peuvent pas être montés sur plusieurs nœuds.

    Si vous rencontrez un message d'erreur d'attachement multiple avec un volume RWO, forcez la suppression du pod sur un nœud arrêté ou en panne afin d'éviter toute perte de données dans les charges de travail critiques, par exemple lorsque des volumes persistants dynamiques sont attachés.

    oc delete pod <old_pod> --force=true --grace-period=0

    Cette commande supprime les volumes bloqués sur des nœuds arrêtés ou bloqués après six minutes.

7.10. Résolution des problèmes liés à la charge de travail des conteneurs Windows

7.10.1. Windows Machine Config Operator ne s'installe pas

Si vous avez terminé le processus d'installation de Windows Machine Config Operator (WMCO), mais que l'Operator est bloqué dans la phase InstallWaiting, votre problème est probablement dû à un problème de réseau.

Le WMCO exige que votre cluster OpenShift Container Platform soit configuré avec un réseau hybride utilisant OVN-Kubernetes ; le WMCO ne peut pas terminer le processus d'installation si le réseau hybride n'est pas disponible. Ceci est nécessaire pour gérer les nœuds sur plusieurs systèmes d'exploitation (OS) et variantes d'OS. Cette opération doit être effectuée lors de l'installation de votre cluster.

Pour plus d'informations, voir Configuration de la mise en réseau hybride.

7.10.2. Déterminer pourquoi la machine Windows ne devient pas un nœud de calcul

Il y a plusieurs raisons pour lesquelles une machine Windows ne devient pas un nœud de calcul. La meilleure façon d'étudier ce problème est de collecter les journaux de l'opérateur de configuration de la machine Windows (WMCO).

Conditions préalables

  • Vous avez installé Windows Machine Config Operator (WMCO) à l'aide d'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.

Procédure

  • Exécutez la commande suivante pour collecter les journaux WMCO :

    $ oc logs -f deployment/windows-machine-config-operator -n openshift-windows-machine-config-operator

7.10.3. Accès à un nœud Windows

Il n'est pas possible d'accéder aux nœuds Windows à l'aide de la commande oc debug node; cette commande nécessite l'exécution d'un pod privilégié sur le nœud, ce qui n'est pas encore pris en charge pour Windows. En revanche, il est possible d'accéder à un nœud Windows à l'aide d'un shell sécurisé (SSH) ou d'un protocole de bureau à distance (RDP). Un bastion SSH est nécessaire pour les deux méthodes.

7.10.3.1. Accès à un nœud Windows à l'aide de SSH

Vous pouvez accéder à un nœud Windows en utilisant un shell sécurisé (SSH).

Conditions préalables

  • Vous avez installé le Windows Machine Config Operator (WMCO) à l'aide de l'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.
  • Vous avez ajouté à l'agent ssh la clé utilisée dans le secret cloud-private-key et la clé utilisée lors de la création du cluster. Pour des raisons de sécurité, n'oubliez pas de supprimer les clés de l'agent ssh après utilisation.
  • Vous vous êtes connecté au nœud Windows à l 'aide d'un pod ssh-bastion .

Procédure

  • Accédez au nœud Windows en exécutant la commande suivante :

    $ ssh -t -o StrictHostKeyChecking=no -o ProxyCommand='ssh -A -o StrictHostKeyChecking=no \
        -o ServerAliveInterval=30 -W %h:%p core@$(oc get service --all-namespaces -l run=ssh-bastion \
        -o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")' <username>@<windows_node_internal_ip> 1 2
    1
    Indiquez le nom d'utilisateur du fournisseur de cloud, par exemple Administrator pour Amazon Web Services (AWS) ou capi pour Microsoft Azure.
    2
    Spécifiez l'adresse IP interne du nœud, qui peut être découverte en exécutant la commande suivante :
    $ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}

7.10.3.2. Accès à un nœud Windows à l'aide de RDP

Vous pouvez accéder à un nœud Windows en utilisant un protocole de bureau à distance (RDP).

Conditions préalables

  • Vous avez installé Windows Machine Config Operator (WMCO) à l'aide d'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.
  • Vous avez ajouté à l'agent ssh la clé utilisée dans le secret cloud-private-key et la clé utilisée lors de la création du cluster. Pour des raisons de sécurité, n'oubliez pas de supprimer les clés de l'agent ssh après utilisation.
  • Vous vous êtes connecté au nœud Windows à l 'aide d'un pod ssh-bastion .

Procédure

  1. Exécutez la commande suivante pour établir un tunnel SSH :

    $ ssh -L 2020:<windows_node_internal_ip>:3389 \ 1
        core@$(oc get service --all-namespaces -l run=ssh-bastion -o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")
    1
    Spécifiez l'adresse IP interne du nœud, qui peut être découverte en exécutant la commande suivante :
    $ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
  2. À partir de l'interpréteur de commandes résultant, connectez-vous en SSH au nœud Windows et exécutez la commande suivante pour créer un mot de passe pour l'utilisateur :

    C:\> net user <username> * 1
    1
    Indiquez le nom d'utilisateur du fournisseur de cloud, par exemple Administrator pour AWS ou capi pour Azure.

Vous pouvez maintenant accéder à distance au nœud Windows à l'adresse localhost:2020 à l'aide d'un client RDP.

7.10.4. Collecte des journaux de nœuds Kubernetes pour les conteneurs Windows

La journalisation des conteneurs Windows fonctionne différemment de la journalisation des conteneurs Linux ; les journaux des nœuds Kubernetes pour les charges de travail Windows sont transmis par défaut au répertoire C:\var\logs. Par conséquent, vous devez collecter les journaux des nœuds Windows à partir de ce répertoire.

Conditions préalables

  • Vous avez installé Windows Machine Config Operator (WMCO) à l'aide d'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.

Procédure

  1. Pour afficher les journaux dans tous les répertoires de C:\var\logs, exécutez la commande suivante :

    $ oc adm node-logs -l kubernetes.io/os=windows --path= \
        /ip-10-0-138-252.us-east-2.compute.internal containers \
        /ip-10-0-138-252.us-east-2.compute.internal hybrid-overlay \
        /ip-10-0-138-252.us-east-2.compute.internal kube-proxy \
        /ip-10-0-138-252.us-east-2.compute.internal kubelet \
        /ip-10-0-138-252.us-east-2.compute.internal pods
  2. Vous pouvez désormais lister les fichiers dans les répertoires à l'aide de la même commande et afficher les fichiers journaux individuels. Par exemple, pour afficher les journaux des kubelets, exécutez la commande suivante :

    $ oc adm node-logs -l kubernetes.io/os=windows --path=/kubelet/kubelet.log

7.10.5. Collecte des journaux d'événements des applications Windows

Le shim Get-WinEvent sur le point de terminaison kubelet logs peut être utilisé pour collecter des journaux d'événements d'application à partir de machines Windows.

Conditions préalables

  • Vous avez installé Windows Machine Config Operator (WMCO) à l'aide d'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.

Procédure

  • Pour afficher les journaux de toutes les applications qui se connectent aux journaux d'événements sur la machine Windows, exécutez :

    $ oc adm node-logs -l kubernetes.io/os=windows --path=journal

    La même commande est exécutée lors de la collecte des journaux avec oc adm must-gather.

    D'autres journaux d'applications Windows du journal des événements peuvent également être collectés en spécifiant le service respectif avec un drapeau -u. Par exemple, vous pouvez exécuter la commande suivante pour collecter les journaux du service d'exécution Docker :

    $ oc adm node-logs -l kubernetes.io/os=windows --path=journal -u docker

7.10.6. Collecte des journaux Docker pour les conteneurs Windows

Le service Windows Docker n'envoie pas ses journaux vers stdout, mais les enregistre dans le journal des événements de Windows. Vous pouvez consulter les journaux d'événements de Docker pour enquêter sur les problèmes que vous pensez être causés par le service Windows Docker.

Conditions préalables

  • Vous avez installé Windows Machine Config Operator (WMCO) à l'aide d'Operator Lifecycle Manager (OLM).
  • Vous avez créé un ensemble de machines de calcul Windows.

Procédure

  1. Accédez au nœud Windows par SSH et entrez dans PowerShell :

    C:\N> powershell
  2. Affichez les journaux Docker en exécutant la commande suivante :

    C:\N> Get-EventLog -LogName Application -Source Docker

7.10.7. Ressources supplémentaires

7.11. Enquêter sur les problèmes de surveillance

OpenShift Container Platform inclut une pile de surveillance préconfigurée, préinstallée et auto-actualisée qui fournit une surveillance pour les composants de base de la plateforme. Dans OpenShift Container Platform 4.12, les administrateurs de clusters peuvent optionnellement activer la surveillance pour des projets définis par l'utilisateur.

Vous pouvez suivre ces procédures si vos propres mesures ne sont pas disponibles ou si Prometheus consomme beaucoup d'espace disque.

7.11.1. Déterminer pourquoi les mesures définies par l'utilisateur ne sont pas disponibles

ServiceMonitor vous permettent de déterminer comment utiliser les métriques exposées par un service dans des projets définis par l'utilisateur. Suivez les étapes décrites dans cette procédure si vous avez créé une ressource ServiceMonitor mais que vous ne voyez pas les métriques correspondantes dans l'interface utilisateur des métriques.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez activé et configuré la surveillance des charges de travail définies par l'utilisateur.
  • Vous avez créé l'objet user-workload-monitoring-config ConfigMap .
  • Vous avez créé une ressource ServiceMonitor.

Procédure

  1. Check that the corresponding labels match dans les configurations des services et des ressources ServiceMonitor.

    1. Obtenir le label défini dans le service. L'exemple suivant interroge le service prometheus-example-app dans le projet ns1:

      $ oc -n ns1 get service prometheus-example-app -o yaml

      Exemple de sortie

        labels:
          app: prometheus-example-app

    2. Vérifiez que l'étiquette matchLabels app dans la configuration de la ressource ServiceMonitor correspond à l'étiquette produite à l'étape précédente :

      $ oc -n ns1 get servicemonitor prometheus-example-monitor -o yaml

      Exemple de sortie

      spec:
        endpoints:
        - interval: 30s
          port: web
          scheme: http
        selector:
          matchLabels:
            app: prometheus-example-app

      Note

      Vous pouvez vérifier les étiquettes de service et de ressource ServiceMonitor en tant que développeur disposant d'autorisations de visualisation pour le projet.

  2. Inspect the logs for the Prometheus Operator dans le projet openshift-user-workload-monitoring.

    1. Liste les pods du projet openshift-user-workload-monitoring:

      $ oc -n openshift-user-workload-monitoring get pods

      Exemple de sortie

      NAME                                   READY   STATUS    RESTARTS   AGE
      prometheus-operator-776fcbbd56-2nbfm   2/2     Running   0          132m
      prometheus-user-workload-0             5/5     Running   1          132m
      prometheus-user-workload-1             5/5     Running   1          132m
      thanos-ruler-user-workload-0           3/3     Running   0          132m
      thanos-ruler-user-workload-1           3/3     Running   0          132m

    2. Obtenez les journaux du conteneur prometheus-operator dans le pod prometheus-operator. Dans l'exemple suivant, le module s'appelle prometheus-operator-776fcbbd56-2nbfm:

      $ oc -n openshift-user-workload-monitoring logs prometheus-operator-776fcbbd56-2nbfm -c prometheus-operator

      En cas de problème avec le moniteur de service, les journaux peuvent contenir une erreur similaire à cet exemple :

      level=warn ts=2020-08-10T11:48:20.906739623Z caller=operator.go:1829 component=prometheusoperator msg="skipping servicemonitor" error="it accesses file system via bearer token file which Prometheus specification prohibits" servicemonitor=eagle/eagle namespace=openshift-user-workload-monitoring prometheus=user-workload
  3. Review the target status for your endpoint sur la page Metrics targets dans l'interface de la console web de OpenShift Container Platform.

    1. Connectez-vous à la console web de OpenShift Container Platform et naviguez vers ObserveTargets dans la perspective Administrator.
    2. Localisez le point de terminaison des métriques dans la liste et vérifiez l'état de la cible dans la colonne Status.
    3. Si l'adresse Status est Down, cliquez sur l'URL du point de terminaison pour obtenir plus d'informations sur la page Target Details relative à cette cible de mesure.
  4. Configure debug level logging for the Prometheus Operator dans le projet openshift-user-workload-monitoring.

    1. Modifiez l'objet user-workload-monitoring-config ConfigMap dans le projet openshift-user-workload-monitoring:

      $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
    2. Ajoutez logLevel: debug pour prometheusOperator sous data/config.yaml pour définir le niveau du journal à debug:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: user-workload-monitoring-config
        namespace: openshift-user-workload-monitoring
      data:
        config.yaml: |
          prometheusOperator:
            logLevel: debug
    3. Enregistrez le fichier pour appliquer les modifications.

      Note

      Le site prometheus-operator du projet openshift-user-workload-monitoring redémarre automatiquement lorsque vous appliquez la modification du niveau de journalisation.

    4. Confirmez que le niveau de journalisation debug a été appliqué au déploiement prometheus-operator dans le projet openshift-user-workload-monitoring:

      $ oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml |  grep "log-level"

      Exemple de sortie

              - --log-level=debug

      La journalisation de niveau débogage montre tous les appels effectués par l'opérateur Prometheus.

    5. Vérifiez que le pod prometheus-operator fonctionne :

      $ oc -n openshift-user-workload-monitoring get pods
      Note

      Si une valeur Prometheus Operator loglevel non reconnue est incluse dans la carte de configuration, le pod prometheus-operator peut ne pas redémarrer avec succès.

    6. Examinez les journaux de débogage pour voir si l'opérateur Prometheus utilise la ressource ServiceMonitor. Examinez les journaux pour voir s'il y a d'autres erreurs connexes.

7.11.2. Déterminer pourquoi Prometheus consomme beaucoup d'espace disque

Les développeurs peuvent créer des étiquettes pour définir les attributs des métriques sous la forme de paires clé-valeur. Le nombre de paires clé-valeur potentielles correspond au nombre de valeurs possibles pour un attribut. Un attribut dont le nombre de valeurs potentielles est illimité est appelé attribut non lié. Par exemple, un attribut customer_id est non consolidé car il possède un nombre infini de valeurs possibles.

Chaque paire clé-valeur attribuée a une série chronologique unique. L'utilisation de nombreux attributs non liés dans les étiquettes peut entraîner une augmentation exponentielle du nombre de séries temporelles créées. Cela peut avoir un impact sur les performances de Prometheus et consommer beaucoup d'espace disque.

Vous pouvez utiliser les mesures suivantes lorsque Prometheus consomme beaucoup de disque :

  • Check the number of scrape samples qui sont collectés.
  • Check the time series database (TSDB) status using the Prometheus HTTP API pour plus d'informations sur les étiquettes qui créent le plus de séries temporelles. Cette opération nécessite des privilèges d'administrateur de cluster.
  • Reduce the number of unique time series that are created en réduisant le nombre d'attributs non liés attribués aux mesures définies par l'utilisateur.

    Note

    L'utilisation d'attributs liés à un ensemble limité de valeurs possibles réduit le nombre de combinaisons potentielles de paires clé-valeur.

  • Enforce limits on the number of samples that can be scraped dans des projets définis par l'utilisateur. Cette opération nécessite des privilèges d'administrateur de cluster.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Dans la perspective Administrator, naviguez vers ObserveMetrics.
  2. Exécutez la requête Prometheus Query Language (PromQL) suivante dans le champ Expression. Cette requête renvoie les dix métriques qui ont le plus grand nombre d'échantillons de scrape :

    topk(10,count by (job)({__name__=~".+"}))
  3. Étudier le nombre de valeurs d'étiquettes non liées attribuées à des mesures dont le nombre d'échantillons raclés est plus élevé que prévu.

    • If the metrics relate to a user-defined projectdans le cas d'une charge de travail, passez en revue les paires clé-valeur de métriques attribuées à votre charge de travail. Celles-ci sont mises en œuvre par les bibliothèques client Prometheus au niveau de l'application. Essayez de limiter le nombre d'attributs non liés référencés dans vos étiquettes.
    • If the metrics relate to a core OpenShift Container Platform projectcréez un dossier d'assistance Red Hat sur le portail client Red Hat.
  4. Examinez l'état de la TSDB à l'aide de l'API HTTP Prometheus en exécutant les commandes suivantes en tant qu'administrateur de cluster :

    $ oc login -u <nom d'utilisateur> -p <mot de passe>
    $ host=$(oc -n openshift-monitoring get route prometheus-k8s -ojsonpath={.spec.host})
    $ token=$(oc whoami -t)
    $ curl -H "Authorization: Bearer $token" -k "https://$host/api/v1/status/tsdb"

    Exemple de sortie

    "status": "success",

Ressources supplémentaires

7.12. Diagnostiquer les problèmes liés à OpenShift CLI (oc)

7.12.1. Comprendre les niveaux de logs de l'OpenShift CLI (oc)

Avec l'OpenShift CLI (oc), vous pouvez créer des applications et gérer des projets OpenShift Container Platform à partir d'un terminal.

Si des problèmes spécifiques à la commande oc surviennent, augmentez le niveau de journalisation oc pour obtenir les détails de la demande API, de la réponse API et de la demande curl générés par la commande. Cela permet d'obtenir une vue granulaire de l'opération sous-jacente d'une commande oc particulière, qui peut à son tour fournir des informations sur la nature de l'échec.

oc les niveaux de journalisation vont de 1 à 10. Le tableau suivant fournit une liste des niveaux de journalisation de oc, ainsi que leur description.

Tableau 7.4. OpenShift CLI (oc) niveaux de journalisation

Niveau d'enregistrementDescription

1 à 5

Pas de journalisation supplémentaire vers stderr.

6

Enregistrer les demandes d'API sur stderr.

7

Enregistrer les requêtes et les en-têtes de l'API dans le fichier stderr.

8

Consigne les demandes, les en-têtes et le corps de l'API, ainsi que les en-têtes et le corps de la réponse de l'API dans stderr.

9

Consigne les demandes, les en-têtes et le corps de l'API, les en-têtes et le corps de la réponse de l'API, ainsi que les demandes curl sur stderr.

10

Consigne les demandes, les en-têtes et le corps de l'API, les en-têtes et le corps de la réponse de l'API, ainsi que les demandes curl sur stderr, avec des détails verbeux.

7.12.2. Spécifier les niveaux de journalisation de l'OpenShift CLI (oc)

Vous pouvez enquêter sur les problèmes liés à l'OpenShift CLI (oc) en augmentant le niveau de journalisation de la commande.

Conditions préalables

  • Installez le CLI OpenShift (oc).

Procédure

  1. Spécifier le niveau de journalisation de oc lors de l'exécution d'une commande oc:

    oc <options> --loglevel <log_level>
  2. Le jeton de session actuel de l'utilisateur d'OpenShift Container Platform est généralement inclus dans les demandes enregistrées sur curl, le cas échéant. Vous pouvez également obtenir manuellement le jeton de session de l'utilisateur actuel, pour tester étape par étape certains aspects du processus sous-jacent d'une commande oc:

    $ oc whoami -t

Note légale

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.