如何通过Prometheus采集Kubernetes节点终止时间(UNIX时间戳)
采集Kubernetes节点终止时间(UNIX时间戳)的方案
由于kube-state-metrics未直接导出节点的终止时间字段,可通过监控kube_node_status_condition指标的状态变化来获取,具体如下:
核心监控指标与状态
节点进入终止流程时,Kubernetes会通过节点状态条件(Condition)标记,需重点关注以下两个状态:
- DisruptionTarget:当节点被标记为待终止(如执行
kubectl delete node)时,该条件的status会变为true,对应的kube_node_status_condition指标值即为触发终止的UNIX时间戳,这是最精准的终止触发时间点。 - Ready:若集群版本不支持
DisruptionTarget(Kubernetes 1.25+引入该条件),可通过Ready状态从true转为false或unknown的时间来近似节点终止时间,对应指标为kube_node_status_condition{condition="Ready",status=~"false|unknown"},其数值为状态切换的UNIX时间戳。
具体操作步骤
- 确认kube-state-metrics配置:确保已启用节点指标采集(默认开启,若自定义启动参数需包含
--collectors=nodes)。 - PromQL查询示例
- 获取精准终止触发时间:
kube_node_status_condition{condition="DisruptionTarget",status="true"} - 兼容旧版本集群的近似终止时间:
kube_node_status_condition{condition="Ready",status="false"} - 将UNIX时间戳转为可读格式:
format_time(kube_node_status_condition{condition="DisruptionTarget",status="true"}, "%Y-%m-%d %H:%M:%S")
- 获取精准终止触发时间:
补充说明
节点的终止流程与Pod不同,Kubernetes并未为节点设置类似Pod的terminationTimestamp元数字段,因此只能通过状态条件的lastTransitionTime(对应kube-state-metrics导出的指标数值)来获取终止相关时间点。
内容的提问来源于stack exchange,提问作者Daniel Wasserlauf
相关产品推荐
相关产品推荐

