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 Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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
$ oc logs -f deployment/windows-machine-config-operator -n openshift-windows-machine-config-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.3. Accès à un nœud Windows Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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>
$ 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 Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
$ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.3.2. Accès à un nœud Windows à l'aide de RDP Copier lienLien copié sur presse-papiers!
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
Exécutez la commande suivante pour établir un tunnel SSH :
ssh -L 2020:<windows_node_internal_ip>:3389 \ 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}}")
$ 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}}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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}
$ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À 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 :
net user <username> *
C:\> net user <username> *
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom d'utilisateur du fournisseur de cloud, par exemple
Administrator
pour AWS oucapi
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 Copier lienLien copié sur presse-papiers!
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
Pour afficher les journaux dans tous les répertoires de
C:\var\logs
, exécutez la commande suivante :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ oc adm node-logs -l kubernetes.io/os=windows --path=/kubelet/kubelet.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.5. Collecte des journaux d'événements des applications Windows Copier lienLien copié sur presse-papiers!
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
$ oc adm node-logs -l kubernetes.io/os=windows --path=journal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ oc adm node-logs -l kubernetes.io/os=windows --path=journal -u docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.6. Collecte des journaux Docker pour les conteneurs Windows Copier lienLien copié sur presse-papiers!
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
Accédez au nœud Windows par SSH et entrez dans PowerShell :
powershell
C:\N> powershell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affichez les journaux Docker en exécutant la commande suivante :
Get-EventLog -LogName Application -Source Docker
C:\N> Get-EventLog -LogName Application -Source Docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow