Kubernetes集群由Master节点和多个Node节点组成,Node节点是集群中的工作单元。每个Node节点都运行一个Kubelet进程,负责与Master节点通信,执行Pod中的容器。Ready状态是指Node节点是否准备好接收和执行工作负载。在大规模集群中,确保Node节点保持Ready状态至关重要。
那有什么方法监控Node节点状态呢?
一、监控Node状态方法
Kubernetes 云原生集群监控主要涉及到如下三类指标:node 物理节点指标、pod & container 容器资源指标和Kubernetes 云原生集群资源指标。针对这三类指标都有比较成熟的方案,见下图:
架构图
1.kubectl命令
使用kubectl命令可以方便地查看Node节点的Ready状态。通过以下命令可以列出所有Node节点以及它们的Ready状态:
kubectl get nodes
2.Kube-state-metrics
Kube-state-metrics是一个开源的Kubernetes监控工具,可以通过Prometheus进行数据采集。使用Kube-state-metrics,可以轻松获取Node节点的Ready状态指标,并创建相应的监控仪表板。
3.Prometheus监控
Prometheus是一种开源监控和报警工具,支持Kubernetes集成。通过使用Prometheus进行监控,可以定义查询和报警规则,确保及时发现并解决Node节点Ready状态的问题。
在Kubernetes集群中,Node节点的Ready状态对于保持应用程序的可靠性和稳定性至关重要。通过使用kubectl命令、Kube-state-metrics和Prometheus等工具,结合自动化监控和报警系统,可以有效地统计和处理Node节点的Ready状态,确保集群的健康运行。在管理K8s集群时,定期检查Ready状态并及时响应任何异常情况,将有助于提高整个集群的可用性。
二、CKA真题
1.真题截图
2.中文解析
切换 k8s 集群环境:kubectl config use-context k8sTask:检查集群中有多少节点为 Ready 状态(不包括被打上 Taint: NoSchedule 的节点),之后将数量写到 /opt/KUSCO0402/kusc00402.txt。
3.做题解答
(1) 切换答题环境(考试环境有多个,每道题要在对应的环境中作答)
kubectl config use-context k8s
(2) 获取Ready的节点数量(a)
kubectl get nodes | grep -w Ready | wc -l
例如,我们在killercoda模拟环境上操作如下:
controlplane $ kubectl get nodes | grep Ready | wc -l
2
controlplane $
(3) 获取有污点和没有调度的节点数(b)
kubectl describe nodes | grep Taints | grep -I NoSchedule | wc -l
在killercoda模拟环境上操作如下:
controlplane $ kubectl describe nodes | grep Taints | grep -I NoSchedule | wc -l
0
controlplane $
(4) 将a-b的结果写入目标文件
echo 1 > /opt/KUSC00402/kusc00402.txt
例如在killercoda上操作的结果如下
controlplane $ mkdir -p /opt/KUSC00402/ #在考试中不需要创建
controlplane $ touch /opt/KUSC00402/kusc00402.txt #在考试中不需要创建
controlplane $ echo 2 >> /opt/KUSC00402/kusc00402.txt
controlplane $ cat /opt/KUSC00402/kusc00402.txt