Chapitre 5. Travailler avec des nœuds
5.1. Afficher et lister les nœuds de votre cluster OpenShift Container Platform
Vous pouvez dresser la liste de tous les nœuds de votre cluster afin d'obtenir des informations telles que l'état, l'âge, l'utilisation de la mémoire et des détails sur les nœuds.
Lorsque vous effectuez des opérations de gestion de nœuds, l'interface CLI interagit avec des objets de nœuds qui sont des représentations d'hôtes de nœuds réels. Le maître utilise les informations des objets de nœuds pour valider les nœuds à l'aide de contrôles de santé.
5.1.1. A propos de la liste de tous les nœuds d'une grappe
Vous pouvez obtenir des informations détaillées sur les nœuds du cluster.
La commande suivante permet de dresser la liste de tous les nœuds :
$ oc get nodes
L'exemple suivant est celui d'un cluster dont les nœuds sont sains :
$ oc get nodes
Exemple de sortie
NAME STATUS ROLES AGE VERSION master.example.com Ready master 7h v1.25.0 node1.example.com Ready worker 7h v1.25.0 node2.example.com Ready worker 7h v1.25.0
L'exemple suivant est celui d'un cluster avec un nœud en mauvaise santé :
$ oc get nodes
Exemple de sortie
NAME STATUS ROLES AGE VERSION master.example.com Ready master 7h v1.25.0 node1.example.com NotReady,SchedulingDisabled worker 7h v1.25.0 node2.example.com Ready worker 7h v1.25.0
Les conditions qui déclenchent l'état
NotReady
sont présentées plus loin dans cette section.L'option
-o wide
fournit des informations supplémentaires sur les nœuds.$ oc get nodes -o wide
Exemple de sortie
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master.example.com Ready master 171m v1.25.0 10.0.129.108 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.25.0-30.rhaos4.10.gitf2f339d.el8-dev node1.example.com Ready worker 72m v1.25.0 10.0.129.222 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.25.0-30.rhaos4.10.gitf2f339d.el8-dev node2.example.com Ready worker 164m v1.25.0 10.0.142.150 <none> Red Hat Enterprise Linux CoreOS 48.83.202103210901-0 (Ootpa) 4.18.0-240.15.1.el8_3.x86_64 cri-o://1.25.0-30.rhaos4.10.gitf2f339d.el8-dev
La commande suivante répertorie les informations relatives à un seul nœud :
oc get node <node> $ oc get node <node>
Par exemple :
$ oc get node node1.example.com
Exemple de sortie
NAME STATUS ROLES AGE VERSION node1.example.com Ready worker 7h v1.25.0
La commande suivante fournit des informations plus détaillées sur un nœud spécifique, y compris la raison de l'état actuel :
$ oc describe node <node>
Par exemple :
$ oc describe node node1.example.com
Exemple de sortie
Name: node1.example.com 1 Roles: worker 2 Labels: beta.kubernetes.io/arch=amd64 3 beta.kubernetes.io/instance-type=m4.large beta.kubernetes.io/os=linux failure-domain.beta.kubernetes.io/region=us-east-2 failure-domain.beta.kubernetes.io/zone=us-east-2a kubernetes.io/hostname=ip-10-0-140-16 node-role.kubernetes.io/worker= Annotations: cluster.k8s.io/machine: openshift-machine-api/ahardin-worker-us-east-2a-q5dzc 4 machineconfiguration.openshift.io/currentConfig: worker-309c228e8b3a92e2235edd544c62fea8 machineconfiguration.openshift.io/desiredConfig: worker-309c228e8b3a92e2235edd544c62fea8 machineconfiguration.openshift.io/state: Done volumes.kubernetes.io/controller-managed-attach-detach: true CreationTimestamp: Wed, 13 Feb 2019 11:05:57 -0500 Taints: <none> 5 Unschedulable: false Conditions: 6 Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- OutOfDisk False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientDisk kubelet has sufficient disk space available MemoryPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:05:57 -0500 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Wed, 13 Feb 2019 15:09:42 -0500 Wed, 13 Feb 2019 11:07:09 -0500 KubeletReady kubelet is posting ready status Addresses: 7 InternalIP: 10.0.140.16 InternalDNS: ip-10-0-140-16.us-east-2.compute.internal Hostname: ip-10-0-140-16.us-east-2.compute.internal Capacity: 8 attachable-volumes-aws-ebs: 39 cpu: 2 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 8172516Ki pods: 250 Allocatable: attachable-volumes-aws-ebs: 39 cpu: 1500m hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 7558116Ki pods: 250 System Info: 9 Machine ID: 63787c9534c24fde9a0cde35c13f1f66 System UUID: EC22BF97-A006-4A58-6AF8-0A38DEEA122A Boot ID: f24ad37d-2594-46b4-8830-7f7555918325 Kernel Version: 3.10.0-957.5.1.el7.x86_64 OS Image: Red Hat Enterprise Linux CoreOS 410.8.20190520.0 (Ootpa) Operating System: linux Architecture: amd64 Container Runtime Version: cri-o://1.25.0-0.6.dev.rhaos4.3.git9ad059b.el8-rc2 Kubelet Version: v1.25.0 Kube-Proxy Version: v1.25.0 PodCIDR: 10.128.4.0/24 ProviderID: aws:///us-east-2a/i-04e87b31dc6b3e171 Non-terminated Pods: (12 in total) 10 Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits --------- ---- ------------ ---------- --------------- ------------- openshift-cluster-node-tuning-operator tuned-hdl5q 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-dns dns-default-l69zr 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-image-registry node-ca-9hmcg 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-ingress router-default-76455c45c-c5ptv 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-machine-config-operator machine-config-daemon-cvqw9 20m (1%) 0 (0%) 50Mi (0%) 0 (0%) openshift-marketplace community-operators-f67fh 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-monitoring alertmanager-main-0 50m (3%) 50m (3%) 210Mi (2%) 10Mi (0%) openshift-monitoring node-exporter-l7q8d 10m (0%) 20m (1%) 20Mi (0%) 40Mi (0%) openshift-monitoring prometheus-adapter-75d769c874-hvb85 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-multus multus-kw8w5 0 (0%) 0 (0%) 0 (0%) 0 (0%) openshift-sdn ovs-t4dsn 100m (6%) 0 (0%) 300Mi (4%) 0 (0%) openshift-sdn sdn-g79hg 100m (6%) 0 (0%) 200Mi (2%) 0 (0%) Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 380m (25%) 270m (18%) memory 880Mi (11%) 250Mi (3%) attachable-volumes-aws-ebs 0 0 Events: 11 Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeHasSufficientPID 6d (x5 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientPID Normal NodeAllocatableEnforced 6d kubelet, m01.example.com Updated Node Allocatable limit across pods Normal NodeHasSufficientMemory 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientMemory Normal NodeHasNoDiskPressure 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasNoDiskPressure Normal NodeHasSufficientDisk 6d (x6 over 6d) kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientDisk Normal NodeHasSufficientPID 6d kubelet, m01.example.com Node m01.example.com status is now: NodeHasSufficientPID Normal Starting 6d kubelet, m01.example.com Starting kubelet. ...
- 1
- Le nom du nœud.
- 2
- Le rôle du nœud, soit
master
ouworker
. - 3
- Les étiquettes appliquées au nœud.
- 4
- Les annotations appliquées au nœud.
- 5
- Les taches appliquées au nœud.
- 6
- Les conditions et l'état du nœud. La strophe
conditions
énumère les étatsReady
,PIDPressure
,PIDPressure
,MemoryPressure
,DiskPressure
etOutOfDisk
. Ces conditions sont décrites plus loin dans cette section. - 7
- L'adresse IP et le nom d'hôte du nœud.
- 8
- Les ressources pods et les ressources allouables.
- 9
- Informations sur l'hôte du nœud.
- 10
- Les pods sur le nœud.
- 11
- Les événements signalés par le nœud.
Parmi les informations affichées pour les nœuds, les conditions suivantes apparaissent dans la sortie des commandes présentées dans cette section :
Condition | Description |
---|---|
|
Si |
|
Si |
|
Si |
|
Si |
|
Si |
|
Si |
|
Si |
| Les pods ne peuvent pas être planifiés pour être placés sur le nœud. |
5.1.2. Lister les pods sur un nœud de votre cluster
Vous pouvez répertorier tous les pods sur un nœud spécifique.
Procédure
Pour dresser la liste de tous les pods ou d'une sélection de pods sur un ou plusieurs nœuds :
$ oc describe node <node1> <node2>
Par exemple :
$ oc describe node ip-10-0-128-218.ec2.internal
Pour répertorier tous les pods ou certains pods sur les nœuds sélectionnés :
oc describe --selector=<node_selector>
$ oc describe node --selector=kubernetes.io/os
Ou bien :
oc describe -l=<pod_selector> $ oc describe -l=<pod_selector>
$ oc describe node -l node-role.kubernetes.io/worker
Pour lister tous les pods sur un nœud spécifique, y compris les pods terminés :
oc get pod --all-namespaces --field-selector=spec.nodeName=<nodename> $ oc get pod --all-namespaces --field-selector=spec.nodeName=<nodename>
5.1.3. Affichage des statistiques d'utilisation de la mémoire et de l'unité centrale sur vos nœuds
Vous pouvez afficher les statistiques d'utilisation des nœuds, qui fournissent les environnements d'exécution des conteneurs. Ces statistiques d'utilisation comprennent la consommation de CPU, de mémoire et de stockage.
Conditions préalables
-
Vous devez avoir l'autorisation
cluster-reader
pour voir les statistiques d'utilisation. - Metrics doit être installé pour afficher les statistiques d'utilisation.
Procédure
Pour consulter les statistiques d'utilisation :
$ oc adm top nodes
Exemple de sortie
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% ip-10-0-12-143.ec2.compute.internal 1503m 100% 4533Mi 61% ip-10-0-132-16.ec2.compute.internal 76m 5% 1391Mi 18% ip-10-0-140-137.ec2.compute.internal 398m 26% 2473Mi 33% ip-10-0-142-44.ec2.compute.internal 656m 43% 6119Mi 82% ip-10-0-146-165.ec2.compute.internal 188m 12% 3367Mi 45% ip-10-0-19-62.ec2.compute.internal 896m 59% 5754Mi 77% ip-10-0-44-193.ec2.compute.internal 632m 42% 5349Mi 72%
Pour afficher les statistiques d'utilisation des nœuds avec étiquettes :
$ oc adm top node --selector=''
Vous devez choisir le sélecteur (requête d'étiquette) sur lequel filtrer. Prend en charge
=
,==
, et!=
.