如何在Kubernetes中读取节点
快速的Kubernetes技巧将帮助您获取有关Kubernetes工作者节点以及如何阅读和理解其输出的详细信息。
什么是Kubernetes节点?
节点是Kubernetes中的一台工作计算机(虚拟/物理),运行托管应用程序的Pod。 在主机上运行的服务包括Docker,kubelet和kube-proxy。
Kubernetes集群中的可用节点列表
查看可用节点的最简单方法是使用kubectl命令,如下所示:
kubectl get nodes
它应该一目了然地显示集群中的所有节点。 您可以查看每个节点的状态,角色,年龄和版本。
[email protected]:~# kubectl get nodes NAME STATUS ROLES AGE VERSION andreyex Ready master 25d v1.18.8 kworker-rj1 Ready <none> 25d v1.18.8 kworker-rj2 Ready <none> 25d v1.18.8 [email protected]:~#
如您所见,两个工作节点都处于就绪状态。
要查看更多详细输出,请运行以下命令,您可以添加-o wide选项:
kubectl get nodes -o wide
现在,您将看到其他详细信息,例如内部和外部IP地址,容器映像,内核版本以及容器的运行时。
[email protected]:~# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME andreyex Ready master 25d v1.18.8 127.22.112.200 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6 kworker-rj1 Ready <none> 25d v1.18.8 127.22.112.201 <none> Ubuntu 18.04.4 LTS 4.15.0-101-generic docker://19.3.6 kworker-rj2 Ready <none> 25d v1.18.8 127.22.112.202 <none> Ubuntu 18.04.5 LTS 4.15.0-101-generic docker://19.3.6
让我们深入了解更多有关特定节点的信息。
有关更多详细信息,请参见节点描述。
如果您需要有关特定节点的详细信息,可以使用带有节点名称的kubectl describe命令:
kubectl describe nodes worker-node-name
这是一个示例输出:
[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: 127.22.112.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: 127.22.112.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>
那是很多信息。 对你来说什么是重要的?
- 有关系统IP地址,主机名,资源(CPU,GPU,内存)和版本信息(OS,Docker,Kubernetes)的大多数信息仅供参考。
- kubelet服务状态。
- 无法实现的参数。
- 在“条件”部分,您可以指示系统资源是否存在可能影响应用程序运行的问题。 例如,如果存在OutOfDisk,MemoryPressure或DiskPressure条件,则没有足够的系统资源来服务更多的工作负载。
- 最后,“事件”部分还将显示消息,以指示环境中是否存在问题。
我希望您喜欢Kubernetes上的这个快速提示。 请随时关注更新,不要忘记订阅更多。