Dieser kurze Kubernetes-Tipp hilft Ihnen, Details zu einem Kubernetes-Worker-Knoten zu erhalten und seine Ausgabe zu lesen und zu verstehen.
Was ist ein Kubernetes-Knoten?
Ein Knoten ist eine Arbeitsmaschine (virtuell/physisch) in Kubernetes, auf der Pods mit Ihren Anwendungen ausgeführt werden. Zu den Diensten, die auf einem Knoten ausgeführt werden, gehören Docker, Kubelet und Kube-Proxy.
Auflisten verfügbarer Knoten in Ihrem Kubernetes-Cluster
Die einfachste Möglichkeit, die verfügbaren Knoten anzuzeigen, ist die Verwendung des kubectl-Befehls auf diese Weise:
kubectl get nodes
Es sollte Ihnen alle Knoten in Ihrem Cluster auf einen Blick zeigen. Sie können den Status, die Rolle, das Alter und die Version jedes Knotens sehen.
[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]:~#
Wie Sie sehen können, befinden sich beide Worker-Knoten im Bereitschaftszustand.
Um eine detailliertere Ausgabe nach dem folgenden Befehl anzuzeigen, können Sie den -o wide
hinzufügen Option wie folgt:
kubectl get nodes -o wide
Jetzt sehen Sie zusätzliche Details wie interne und externe IP, Container-Image, Kernel-Version und Laufzeit für den Container.
[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
Lassen Sie uns tiefer gehen und mehr über einen bestimmten Knoten erfahren.
Beschreibung eines Knotens für weitere Details
Wenn Sie detaillierte Informationen zu einem bestimmten Knoten wünschen, können Sie kubectl describe
verwenden Befehl mit dem Knotennamen:
kubectl describe nodes worker-node-name
Hier ist eine Beispielausgabe:
[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>
Das sind eine Menge Informationen. Was ist Ihnen wichtig?
- Die meisten Informationen beziehen sich auf System-IP, Hostname, Ressourcen (CPUs, GPUs, Arbeitsspeicher) und Versionsinformationen (Betriebssystem, Docker, Kubernetes).
- kubelet-Dienst Status.
- Nicht planbar Parameter.
- Die Bedingungen Abschnitt kann angeben, ob es Probleme mit Systemressourcen gibt, die sich auf die Ausführung der Anwendung auswirken. Wenn zum Beispiel einer der OutOfDisk , Speicherdruck , oder DiskPressure Bedingungen wahr sind, sind nicht genügend Systemressourcen vorhanden, um weitere Workloads zu bedienen.
- Die Ereignisse Der letzte Abschnitt enthält auch Meldungen, die angeben können, ob es Probleme mit der Umgebung gibt.
Ich hoffe, Ihnen gefällt dieser schnelle Kubernetes-Tipp. Bleiben Sie dran und vergessen Sie nicht, mehr zu abonnieren.
Rakesh Jain
DevOps-Profi | RCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS-Cloud