Cette astuce Kubernetes rapide vous aide à obtenir des détails sur un nœud de travail Kubernetes et comment lire et comprendre sa sortie.
Qu'est-ce qu'un nœud Kubernetes ?
Un nœud est une machine de travail (virtuelle/physique) dans Kubernetes où les pods transportant vos applications s'exécutent. Les services qui s'exécutent sur un nœud incluent Docker, kubelet et kube-proxy.
Liste des nœuds disponibles dans votre cluster Kubernetes
Le moyen le plus simple de voir les nœuds disponibles consiste à utiliser la commande kubectl de cette manière :
kubectl get nodes
Il devrait vous montrer tous les nœuds de votre cluster en un coup d'œil. Vous pouvez voir le statut, le rôle, l'âge et la version de chaque nœud.
[email protected]:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kmaster-rj Ready master 39d v1.18.8
kworker-rj1 Ready <none> 39d v1.18.8
kworker-rj2 Ready <none> 39d v1.18.8
[email protected]:~#
Comme vous pouvez le voir, les deux nœuds de travail sont à l'état prêt.
Afin d'afficher une sortie plus détaillée, exécutez la commande suivante, vous pouvez ajouter le -o wide
option comme celle-ci :
kubectl get nodes -o wide
Vous verrez maintenant des détails supplémentaires comme l'IP interne et externe, l'image du conteneur, la version du noyau et l'exécution du conteneur.
[email protected]:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kmaster-rj Ready master 39d v1.18.8 172.42.42.200 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6
kworker-rj1 Ready <none> 39d v1.18.8 172.42.42.201 <none> Ubuntu 18.04.4 LTS 4.15.0-101-generic docker://19.3.6
kworker-rj2 Ready <none> 39d v1.18.8 172.42.42.202 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6
Allons plus loin et en savoir plus sur un nœud spécifique.
Décrire un nœud pour plus de détails
Si vous souhaitez des informations détaillées sur un nœud spécifique, vous pouvez utiliser le kubectl describe
commande avec le nom du nœud :
kubectl describe nodes worker-node-name
Voici un exemple de sortie :
[email protected]:~# kubectl describe nodes kworker-rj1
Name: kworker-rj1
Roles: <none>
Labels: app=front-end
beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=kworker-rj1
kubernetes.io/os=linux
size=medium
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 172.42.42.201/24
projectcalico.org/IPv4IPIPTunnelAddr: 172.16.213.0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Sun, 02 Aug 2020 15:42:32 +0000
Taints: app=front-end:NoExecute
Unschedulable: false
Lease:
HolderIdentity: kworker-rj1
AcquireTime: <unset>
RenewTime: Fri, 11 Sep 2020 07:09:51 +0000
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Fri, 11 Sep 2020 02:57:12 +0000 Fri, 11 Sep 2020 02:57:12 +0000 CalicoIsUp Calico is running on this node
MemoryPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Fri, 11 Sep 2020 07:06:56 +0000 Fri, 28 Aug 2020 06:33:29 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Fri, 11 Sep 2020 07:06:56 +0000 Fri, 11 Sep 2020 02:56:03 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled
Addresses:
InternalIP: 172.42.42.201
Hostname: kworker-rj1
Capacity:
cpu: 2
ephemeral-storage: 64800356Ki
hugepages-2Mi: 0
memory: 2040812Ki
pods: 110
Allocatable:
cpu: 2
ephemeral-storage: 59720007991
hugepages-2Mi: 0
memory: 1938412Ki
pods: 110
System Info:
Machine ID: c7dbeba40d7b45a387082c96df6cc554
System UUID: 595C28CA-DBBF-304D-8C5A-7862AA0A60E5
Boot ID: 306f36e0-ded3-4b45-946a-89509f845c21
Kernel Version: 4.15.0-101-generic
OS Image: Ubuntu 18.04.4 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://19.3.6
Kubelet Version: v1.18.8
Kube-Proxy Version: v1.18.8
Non-terminated Pods: (5 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
default toleration-demo-dep-54f9ff64b9-7zcrn 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
default toleration-demo-dep-54f9ff64b9-9sldm 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
default toleration-demo-dep-54f9ff64b9-rgh7z 0 (0%) 0 (0%) 0 (0%) 0 (0%) 4h9m
kube-system calico-node-2jlhm 250m (12%) 0 (0%) 0 (0%) 0 (0%) 39d
kube-system kube-proxy-54894 0 (0%) 0 (0%) 0 (0%) 0 (0%) 22d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 250m (12%) 0 (0%)
memory 0 (0%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
C'est beaucoup d'informations. Qu'est-ce qui est important pour vous ?
- La plupart des informations concernent l'adresse IP du système, le nom d'hôte, les ressources (CPU, GPU, mémoire) et les informations de version (OS, Docker, Kubernetes).
- Service Kubelet statut.
- Non planifié paramètre.
- Les conditions La section peut indiquer s'il existe des problèmes de ressources système qui affecteront l'exécution de l'application. Par exemple, si l'un des éléments OutOfDisk , PressionMémoire , ou DiskPressure les conditions sont vraies, il n'y a pas suffisamment de ressources système pour traiter d'autres charges de travail.
- Les événements Enfin, la section contiendra également des messages qui peuvent indiquer s'il y a des problèmes avec l'environnement.
J'espère que vous aimez ce petit conseil Kubernetes. Restez à l'écoute et n'oubliez pas de vous abonner pour en savoir plus.
Rakesh Jain
DevOps Professionnel | RHCA | Jenkins | Gite | Docker | Kubernetes | Ansible | Prométhée | Grafane | Nuage AWS