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

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.

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 leBlog 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.

© 2024 Red Hat, Inc.