8.6. Enquêtant sur les questions relatives aux pod


Le Red Hat OpenShift Service sur AWS exploite le concept Kubernetes d’un pod, qui est un ou plusieurs conteneurs déployés ensemble sur un hôte. Le pod est la plus petite unité de calcul pouvant être définie, déployée et gérée sur Red Hat OpenShift Service sur AWS 4.

Après qu’un pod est défini, il est assigné à courir sur un nœud jusqu’à la sortie de ses conteneurs, ou jusqu’à ce qu’il soit retiré. En fonction de la stratégie 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 quand des problèmes de pod se posent est le statut de la gousse. En cas de défaillance explicite de la gousse, observez l’état d’erreur de la gousse pour identifier des problèmes spécifiques de réseau d’image, de conteneur ou de pod. Concentrez la collecte de données diagnostiques en fonction de l’état d’erreur. Examinez les messages d’événements pod, ainsi que les informations de journal des pod et des conteneurs. Diagnostiquez les problèmes de manière dynamique en accédant à des Pods en cours d’exécution sur la ligne de commande, ou démarrez un pod debug avec un accès root basé sur la configuration de déploiement d’un pod problématique.

8.6.1. Comprendre les états d’erreur de pod

Les échecs de pod renvoient des erreurs explicites qui peuvent être observées dans le champ d’état dans la sortie de oc get pods. L’erreur de Pod indique les défaillances liées à l’image, au conteneur et au réseau de conteneurs.

Le tableau suivant fournit une liste d’états d’erreur de pod ainsi que leurs descriptions.

Expand
Tableau 8.2. Les états d’erreur de pod
État d’erreur de podDescription

ErrImagePull

Erreur de récupération d’image générique.

ErrImagePullBackOff

La récupération d’image a échoué et est désactivée.

ErrInvalidImageName

Le nom de l’image spécifié était invalide.

ErrImageInspect

L’inspection d’images n’a pas réussi.

ErrImageNeverPull

Le PullPolicy est défini sur NeverPullImage et l’image cible n’est pas présente localement sur l’hôte.

ErrRegistryIndisponible

Lors de la tentative de récupérer une image à partir d’un registre, une erreur HTTP a été rencontrée.

ErrContainerNotFound

Le conteneur spécifié n’est pas présent ou n’est pas géré par le kubelet, à l’intérieur de la gousse déclarée.

ErrRunInitContainer

L’initialisation du conteneur a échoué.

ErrRunContainer

Aucun des conteneurs de la gousse n’a commencé avec succès.

ErrKillContainer

Aucun des conteneurs de la gousse n’a été tué avec succès.

ErrCrashLoopBackOff

Le conteneur s’est terminé. Le kubelet ne tentera pas de le redémarrer.

ErrVerifyNonRoot

Le conteneur ou l’image a tenté de fonctionner avec des privilèges root.

ErrCreatePodSandbox

La création de pod sandbox n’a pas réussi.

ErrConfigPodSandbox

La configuration du bac à sable pod n’a pas été obtenue.

ErrKillPodSandbox

Le bac à sable de gousse 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é.

8.6.2. Examen du statut de la gousse

Il est possible d’interroger l’état de la pod et les états d’erreur. Il est également possible d’interroger la configuration de déploiement associée d’un pod et d’examiner la disponibilité de l’image de base.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • L’OpenShift CLI (oc) a été installé.
  • le skopeo est installé.

Procédure

  1. Basculer dans un projet:

    $ oc project <project_name>
    Copy to Clipboard Toggle word wrap
  2. Liste des pods fonctionnant dans l’espace de noms, ainsi que l’état des pod, les états d’erreur, les redémarrages et l’âge:

    $ oc get pods
    Copy to Clipboard Toggle word wrap
  3. Déterminer si l’espace de noms est géré par une configuration de déploiement:

    $ oc status
    Copy to Clipboard Toggle word wrap

    Lorsque l’espace de noms est géré par une configuration de déploiement, la sortie inclut le nom de configuration de déploiement et une référence d’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>
    Copy to Clipboard Toggle word wrap
  5. Lorsque la référence de l’image de base n’est pas correcte, mettez à jour la référence dans la configuration de déploiement:

    $ oc edit deployment/my-deployment
    Copy to Clipboard Toggle word wrap
  6. Lorsque la configuration du déploiement change à la sortie, la configuration se redéploie automatiquement. Consultez l’état de la 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
    Copy to Clipboard Toggle word wrap
  7. Examiner les événements dans l’espace de noms pour obtenir des informations diagnostiques relatives aux défaillances de pod:

    $ oc get events
    Copy to Clipboard Toggle word wrap

8.6.3. Inspection de la gousse et des bûches de conteneurs

Il est possible d’inspecter les journaux des pod et des conteneurs pour détecter les avertissements et les messages d’erreur liés à des pannes explicites de pod. En fonction de la politique et du code de sortie, les journaux de pod et de conteneur restent disponibles après la fin des pods.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Le service API est toujours fonctionnel.
  • L’OpenShift CLI (oc) a été installé.

Procédure

  1. Journaux de requêtes pour un pod spécifique:

    $ oc logs <pod_name>
    Copy to Clipboard Toggle word wrap
  2. Journaux de requête pour un conteneur spécifique à l’intérieur d’un pod:

    $ oc logs <pod_name> -c <container_name>
    Copy to Clipboard Toggle word wrap

    Les journaux récupérés à l’aide des commandes oc logs précédentes sont composés de messages envoyés à stdout dans des pods ou des conteneurs.

  3. Inspecter les journaux contenus dans /var/log/ dans un pod.

    1. Liste des fichiers journaux et sous-répertoires contenus dans /var/log dans un pod:

      $ oc exec <pod_name>  -- ls -alh /var/log
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      total 124K
      drwxr-xr-x. 1 root root   33 Aug 11 11:23 .
      drwxr-xr-x. 1 root root   28 Sep  6  2022 ..
      -rw-rw----. 1 root utmp    0 Jul 10 10:31 btmp
      -rw-r--r--. 1 root root  33K Jul 17 10:07 dnf.librepo.log
      -rw-r--r--. 1 root root  69K Jul 17 10:07 dnf.log
      -rw-r--r--. 1 root root 8.8K Jul 17 10:07 dnf.rpm.log
      -rw-r--r--. 1 root root  480 Jul 17 10:07 hawkey.log
      -rw-rw-r--. 1 root utmp    0 Jul 10 10:31 lastlog
      drwx------. 2 root root   23 Aug 11 11:14 openshift-apiserver
      drwx------. 2 root root    6 Jul 10 10:31 private
      drwxr-xr-x. 1 root root   22 Mar  9 08:05 rhsm
      -rw-rw-r--. 1 root utmp    0 Jul 10 10:31 wtmp
      Copy to Clipboard Toggle word wrap

    2. Interrogez un fichier journal spécifique contenu dans /var/log dans un pod:

      $ oc exec <pod_name> cat /var/log/<path_to_log>
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      2023-07-10T10:29:38+0000 INFO --- logging initialized ---
      2023-07-10T10:29:38+0000 DDEBUG timer: config: 13 ms
      2023-07-10T10:29:38+0000 DEBUG Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, uploadprofile
      2023-07-10T10:29:38+0000 INFO Updating Subscription Management repositories.
      2023-07-10T10:29:38+0000 INFO Unable to read consumer identity
      2023-07-10T10:29:38+0000 INFO Subscription Manager is operating in container mode.
      2023-07-10T10:29:38+0000 INFO
      Copy to Clipboard Toggle word wrap

    3. Liste des fichiers journaux et sous-répertoires contenus dans /var/log dans un conteneur spécifique:

      $ oc exec <pod_name> -c <container_name> ls /var/log
      Copy to Clipboard Toggle word wrap
    4. Interrogez un fichier journal spécifique contenu dans /var/log dans un conteneur spécifique:

      $ oc exec <pod_name> -c <container_name> cat /var/log/<path_to_log>
      Copy to Clipboard Toggle word wrap

8.6.4. Accès aux gousses en cours d’exécution

Il est possible de passer en revue dynamiquement les pods en ouvrant un shell à l’intérieur d’un pod ou en obtenant un accès réseau par le biais du transfert de port.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Le service API est toujours fonctionnel.
  • L’OpenShift CLI (oc) a été installé.

Procédure

  1. Basculez dans le projet qui contient le pod auquel vous souhaitez accéder. Ceci est nécessaire parce que la commande oc rsh n’accepte pas l’option -n namespace:

    $ oc project <namespace>
    Copy to Clipboard Toggle word wrap
  2. Démarrez une coque distante dans un pod:

    $ oc rsh <pod_name>  
    1
    Copy to Clipboard Toggle word wrap
    1
    Dans le cas où un pod a plusieurs conteneurs, oc rsh par défaut au premier conteneur, sauf si -c &lt;container_name&gt; est spécifié.
  3. Démarrez une coque distante dans un conteneur spécifique à l’intérieur d’un pod:

    $ oc rsh -c <container_name> pod/<pod_name>
    Copy to Clipboard Toggle word wrap
  4. Créer une session de transfert de port vers un port sur un pod:

    $ oc port-forward <pod_name> <host_port>:<pod_port>  
    1
    Copy to Clipboard Toggle word wrap
    1
    Entrez Ctrl+C pour annuler la session de transfert de port.

8.6.5. Démarrage des gousses de débogage avec accès root

Il est possible de démarrer un pod debug avec un accès root, en fonction de la configuration de déploiement ou de déploiement d’un pod problématique. Les utilisateurs de Pod fonctionnent généralement avec des privilèges non-root, mais l’exécution de dosettes de dépannage avec des privilèges racine temporaires peut être utile lors de l’enquête sur les problèmes.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Le service API est toujours fonctionnel.
  • L’OpenShift CLI (oc) a été installé.

Procédure

  1. Démarrez un pod debug avec un accès root, basé sur un déploiement.

    1. Obtenir le nom de déploiement d’un projet:

      $ oc get deployment -n <project_name>
      Copy to Clipboard Toggle word wrap
    2. Démarrez un pod debug avec des privilèges root, en fonction du déploiement:

      $ oc debug deployment/my-deployment --as-root -n <project_name>
      Copy to Clipboard Toggle word wrap
  2. Démarrez un pod debug avec un accès root, basé sur une configuration de déploiement.

    1. Obtenir le nom de configuration de déploiement d’un projet:

      $ oc get deploymentconfigs -n <project_name>
      Copy to Clipboard Toggle word wrap
    2. Démarrez un pod debug avec des privilèges root, en fonction de la configuration de déploiement:

      $ oc debug deploymentconfig/my-deployment-configuration --as-root -n <project_name>
      Copy to Clipboard Toggle word wrap
Note

Il est possible d’ajouter -- &lt;command&gt; aux commandes oc debug précédentes pour exécuter des commandes individuelles dans un pod debug, au lieu d’exécuter un shell interactif.

Il est possible de copier des fichiers vers et à partir d’un pod pour tester les modifications de configuration ou recueillir des informations de diagnostic.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Le service API est toujours fonctionnel.
  • L’OpenShift CLI (oc) a été installé.

Procédure

  1. Copiez un fichier dans un pod:

    $ oc cp <local_path> <pod_name>:/<path> -c <container_name>  
    1
    Copy to Clipboard Toggle word wrap
    1
    Le premier conteneur dans un pod est sélectionné si l’option -c n’est pas spécifiée.
  2. Copiez un fichier à partir d’un pod:

    $ oc cp <pod_name>:/<path>  -c <container_name> <local_path>  
    1
    Copy to Clipboard Toggle word wrap
    1
    Le premier conteneur dans un pod est sélectionné si l’option -c n’est pas spécifiée.
    Note

    Afin que oc cp fonctionne, le binaire goudron doit être disponible dans le conteneur.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat