kube-scheduler组件监控指标及大盘使用说明

kube-scheduler组件是Kubernetes集群的默认调度器,负责将Pod调度到合适的集群节点上运行。本文介绍kube-scheduler组件的监控指标清单、大盘使用指导以及常见指标异常解析。

使用前须知

操作入口

请参见查看集群控制面组件监控大盘

指标清单

指标是组件对外透出状态和参数的方式之一,kube-scheduler组件使用的指标清单如下。

指标清单

类型

说明

scheduler_scheduler_cache_size

Gauge

调度器缓存中节点、Pod和AssumedPod(假定要调度的Pod)的数量。

scheduler_pending_pods

Gauge

Pending Pod的数量。队列种类如下:

  • unschedulable:不可调度的Pod数量。

  • backoff:backoffQ的Pod数量,即因为某种原因暂时不能被调度的Pod数量。

  • active:activeQ的Pod数量,即准备就绪并等待被调度的Pod数量。

scheduler_pod_scheduling_attempts_bucket

Histogram

调度器尝试成功调度Pod的次数,Bucket阈值为{1、2、4、8、16}

memory_utilization_byte

Gauge

内存使用量。单位:字节(Byte)。

cpu_utilization_core

Gauge

CPU使用量。单位:核(Core)。

rest_client_requests_total

Counter

从状态值(Status Code)、方法(Method)和主机(Host)维度分析HTTP请求数。

rest_client_request_duration_seconds_bucket

Histogram

从方法(Verb)和URL维度分析HTTP请求时延。

说明

如下资源使用率指标已废弃,请及时去除依赖该指标的告警和监控。

  • cpu_utilization_ratio:CPU使用率。

  • memory_utilization_ratio:内存使用率。

大盘使用指导

大盘基于组件指标和相关PromQL绘制,大盘可观测性展示和功能解析如下。

如果组件的常见指标异常,请对照下文的情况说明排查是否为预期内情况。如果发生非预期异常,请提交工单处理。

概览

可观测性展示

image

功能解析

指标清单

PromQL

说明

Scheduler Pending Pods

scheduler_pending_pods{job="ack-scheduler"}

Pending Pod的数量。队列种类如下:

  • unschedulable:不可调度的Pod数量。

  • backoff:backoffQ的Pod数量,即因为某种原因暂时不能被调度的Pod数量。

  • active:activeQ的Pod数量,即准备就绪并等待被调度的Pod数量。

Scheduler 尝试成功调度Pod次数

histogram_quantile($quantile, sum(rate(scheduler_pod_scheduling_attempts_bucket{job="ack-scheduler"}[$interval])) by (pod, le))

调度器尝试调度Pod的次数。Bucket阈值为{1、2、4、8、16}

Scheduler 缓存数据统计

  • scheduler_scheduler_cache_size{job="ack-scheduler",type="nodes"}

  • scheduler_scheduler_cache_size{job="ack-scheduler",type="pods"}

  • scheduler_scheduler_cache_size{job="ack-scheduler",type="assumed_pods"}

调度器缓存中Node、Pod和AssumedPod的数量。

资源

可观测性展示schedule2

功能解析

指标清单

PromQL

说明

内存使用量

memory_utilization_byte{container="kube-scheduler"}

内存使用量。单位:字节。

CPU使用量

cpu_utilization_core{container="kube-scheduler"}*1000

CPU使用量。单位:毫核。

Kube API

可观测性展示schedule3

功能解析

指标清单

PromQL

说明

Kube API 请求QPS

  • sum(rate(rest_client_requests_total{job="ack-scheduler",code=~"2.."}[$interval])) by (method,code)

  • sum(rate(rest_client_requests_total{job="ack-scheduler",code=~"3.."}[$interval])) by (method,code)

  • sum(rate(rest_client_requests_total{job="ack-scheduler",code=~"4.."}[$interval])) by (method,code)

  • sum(rate(rest_client_requests_total{job="ack-scheduler",code=~"5.."}[$interval])) by (method,code)

kube-schedulerkube-apiserver组件发起的HTTP请求,从方法(Method)和返回值(Code) 维度分析。

Kube API 请求时延

histogram_quantile($quantile, sum(rate(rest_client_request_duration_seconds_bucket{job="ack-scheduler"}[$interval])) by (verb,url,le))

kube-schedulerkube-apiserver组件发起的HTTP请求时延,从方法(Verb)和请求URL维度分析。

常见指标异常

如果组件的常见指标异常,请对照下文的情况说明排查是否为预期内情况。如果发生非预期异常,请提交工单处理。

存活调度器Pod数量

正常情况

异常情况

异常说明

建议

存活调度器Pod数量大于等于1。

存活调度器数量为0。

当前集群无可用调度器。

  • 查看调度器相关的Deployment或者StatefulSet是否存在。

  • 定位调度器Pod下线是否为预期内的人为操作。

Pending Pod数量

正常情况

异常情况

异常说明

建议

Pod调度速度较稳定,且维持在较低数值。

  • Unschedulable队列中的Pod数量持续增加。

  • Unschedulable队列中的Pod数量在其他Pod完成调度后仍然没有减少。

当前集群中Pod的资源请求不合理,或节点资源配置不足。

  • 查看节点资源是否满足Pod需求。

  • 查看Pod是否设置了无法满足的节点亲和属性。

成功调度一个Pod的尝试次数

正常情况

异常情况

异常说明

建议

Pod能够在几次尝试后正常被调度到节点上。

Pod在多次尝试后依然无法成功调度。

当前集群中Pod的资源请求不合理,或节点资源配置不足。

  • 查看节点资源是否满足Pod的需求。

  • 查看Pod是否设置了无法满足的节点亲和属性。

相关文档

关于其他集群控制面组件监控的指标详情、大盘使用指引和常见指标异常说明,请参见kube-apiserver组件监控指标说明etcd组件监控指标说明kube-controller-manager组件监控指标说明cloud-controller-manager组件监控指标说明