Kubrnetes APIServe 监控

news2025/6/28 2:12:24

kube-apiserver组件监控指标及大盘使用说明_容器服务 Kubernetes 版 ACK(ACK)-阿里云帮助中心

kube-apiserver组件提供了Kubernetes的RESTful API接口,使得外部客户端、集群内的其他组件可以与ACK集群交互。本文介绍kube-apiserver组件的监控指标清单、大盘使用指导以及常见指标异常解析。

指标清单


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

指标清单

类型

解释

apiserver_request_duration_seconds_bucket

Histogram

该指标用于统计API Server客户端对API Server不同请求的访问时延分布。

请求的维度包括:

  • Verb:请求的类型,例如GET、POST、PUT、DELETE等。

  • Group:API组,即相关API接口的集合,用于扩展Kubernetes API。

  • Version:API版本,例如v1、v1beta1等。

  • Resource:请求针对的资源类型,例如Pod、Service、Lease等。

  • Subresource:资源的子资源,例如Pod详细信息、Pod日志等。

  • Scope:请求的范围,例如命名空间维度的资源(Namespace-scoped)或集群维度的资源(Cluster-scope)。

  • Component:发起请求的组件的名称,例如kube-controller-manager、kube-scheduler、cloud-controller-manager等。

  • Client:发起请求的客户端,可能是内部组件或外部服务。

API ServerHistogram的Bucket阈值为{0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40, 50, 60}。单位:秒。

apiserver_request_total

Counter

对API Server不同请求的计数。请求的维度包括Verb、Group、Version、Resource、Scope、Component、HTTP contentType、HTTP code(响应的HTTP状态码)和Client。

apiserver_request_no_resourceversion_list_total

Counter

对API Server的请求中参数未配置resourceVersion的LIST请求的计数。评估Quorum Read类型的LIST请求可以定位是否存在过多的此类请求以及发起相应请求的客户端,以便优化客户端的请求行为,提高集群性能。请求的维度包括Group、Version、Resource、Scope和Client。

apiserver_current_inflight_requests

Gauge

API Server当前处理的请求数量。请求包括两种:

  • ReadOnly:这类请求不会改变集群的状态,通常为读取资源的操作,例如获取Pods列表、查询节点状态等。

  • Mutating:这类请求会改变集群的状态,通常为创建、更新或删除资源的操作,例如新建Pod、更新Service配置等。

apiserver_dropped_requests_total

Counter

API Server执行限流策略过程中,主动丢弃掉的请求数。HTTP返回值为429 'Try again later'

etcd_request_duration_seconds_bucket

Histogram

该指标用于统计API Server对etcd请求的访问时延分布。

请求的维度包括操作(Operation)和操作对象的类型(Type)。

Bucket阈值为{0.005, 0.025, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 1.25, 1.5, 2, 3, 4, 5, 6, 8, 10, 15, 20, 30, 45, 60}。单位:秒。

apiserver_admission_controller_admission_duration_seconds_bucket

Gauge

准入控制器(Admission Controller)的处理延时。标签包括Admission Controller名称、操作(CREATE、UPDATE、CONNECT等)、API资源、操作类型(validate或admit)和请求是否被拒绝(true或false)。

Bucket阈值为{0.005, 0.025, 0.1, 0.5, 2.5}。单位:秒。

apiserver_admission_webhook_admission_duration_seconds_bucket

Gauge

准入Webhook(Admission Webhook)的处理延时。标签包括Admission Controller名称、操作(CREATE、UPDATE、CONNECT等)、API资源、操作类型(validate,校验请求的合法性,或admit,在请求合法的情况下,决定是否允许该请求)和请求是否被拒绝(true或false)。

Bucket的阈值为{0.005, 0.025, 0.1, 0.5, 2.5}。单位:秒。

apiserver_admission_webhook_admission_duration_seconds_count

Counter

准入Webhook(Admission Webhook)的处理请求统计。标签包括Admission Controller名称、操作(CREATE、UPDATE、CONNECT等)、API资源、操作类型(validate或admit)和请求是否被拒绝(true或false)。

cpu_utilization_core

Gauge

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

memory_utilization_byte

Gauge

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

up

Gauge

服务可用性。

  • 1:表示服务可用。

  • 0:表示服务不可用。

大盘使用指导


大盘基于组件指标和相关PromQL绘制,包括关键指标、概览、资源分析、QPS和时延、准入控制器和Webhook、客户端分析部分。

大盘功能解析如下,常见的使用顺序为:

  1. 查看关键指标,以便快速查看集群关键指标。

  2. 查看概览,以便分析API Server的响应时延、当前处理请求数和是否有限流发生。

  3. 查看资源分析,以便查看托管侧组件的资源水位。

  4. 查看QPS和时延,以便通过多维度深入分析QPS、RT。

  5. 查看注入控制器和Webhook,以便分析准入控制器和Webhook的QPS、RT。

  6. 查看客户端分析,以便通过客户端多维度分析QPS。

筛选框


在大盘上方,您可以根据筛选框配置观测API Server请求的Verb、资源(Resource)、分位数(Quantile)和面板使用的PromQL的采样时长(Interval)。

说明

调整分位数(Quantile)时,以0.9为例,表示大盘上Histogram类型指标的采样值的数量占该类型指标总体采样值的90%。分位数为0.9(简称为P90)的指标可以去除采样值占比小的长尾样本的影响,分位数为0.99(简称为P99)的指标会包含长尾样本的影响。

筛选框

以下筛选框可以选择观测的时间段和页面刷新周期。

筛选框2

关键指标


可观测性展示

100

功能解析

名称

PromQL

说明

API QPS

sum(irate(apiserver_request_total[$interval]))

API Server的总QPS。

读请求成功率

sum(irate(apiserver_request_total{code=~"20.*",verb=~"GET|LIST"}[$interval]))/sum(irate(apiserver_request_total{verb=~"GET|LIST"}[$interval]))

API Server处理读请求的成功率。

写请求成功率

sum(irate(apiserver_request_total{code=~"20.*",verb!~"GET|LIST|WATCH|CONNECT"}[$interval]))/sum(irate(apiserver_request_total{verb!~"GET|LIST|WATCH|CONNECT"}[$interval]))

API Server处理写请求的成功率。

在处理读请求数量

sum(apiserver_current_inflight_requests{requestKind="readOnly"})

API Server当前在处理的读请求数量。

在处理写请求数量

sum(apiserver_current_inflight_requests{requestKind="mutating"})

API Server当前在处理的写请求数量。

请求限流速率

sum(irate(apiserver_dropped_requests_total[$interval]))

Dropped Request Rate。

API Server限流策略过程中,主动丢弃掉的请求数所占总请求数的比例。

概览


可观测性展示

50

功能解析

名称

PromQL

说明

GET读请求时延

histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb="GET",resource!="",subresource!~"log|proxy"}[$interval])) by (pod, verb, resource, subresource, scope, le))

展示GET请求的响应时间,维度包括API Server Pod、Verb(GET)、Resources、Scope。

LIST读请求时延

histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb="LIST"}[$interval])) by (pod_name, verb, resource, scope, le))

展示LIST请求的响应时间,维度包括API Server Pod、Verb(LIST)、Resources、Scope。

写请求时延

histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb!~"GET|WATCH|LIST|CONNECT"}[$interval])) by (cluster, pod_name, verb, resource, scope, le))

展示Mutating请求的响应时间,维度包括API Server Pod、Verb(GET、WATCH、LIST、CONNECT)、Resources、Scope。

在处理读请求数量

apiserver_current_inflight_requests{request_kind="readOnly"}

API Server正在处理的读请求数量。

在处理写请求数量

apiserver_current_inflight_requests{request_kind="mutating"}

API Server正在处理的写请求数量。

请求限流速率

sum(irate(apiserver_dropped_requests_total{request_kind="readOnly"}[$interval])) by (name)

sum(irate(apiserver_dropped_requests_total{request_kind="mutating"}[$interval])) by (name)

API Server的限流速率 ,No data或者0表示没有限流。

资源分析


可观测性展示

资源对象

功能解析

名称

PromQL

说明

内存使用量

memory_utilization_byte{container="kube-apiserver"}

API Server的内存使用量。单位:字节。

CPU使用量

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

API Server的CPU使用量。单位:毫核。

资源对象数量

  • max by(resource)(apiserver_storage_objects)

  • max by(resource)(etcd_object_counts)

  • 当ACK为1.22及以上版本时, 指标名字为apiserver_storage_objects

  • 当ACK为1.22及以下版本时,指标名字为etcd_object_counts。

说明

由于兼容性问题,1.22版本中apiserver_storage_objects名称和etcd_object_counts名称均存在。

QPS和时延

可观测性展示

48

功能解析

名称

PromQL

说明

按Verb维度分析QPS

sum(irate(apiserver_request_total{verb=~"$verb"}[$interval]))by(verb)

按Verb维度,统计单位时间(1s)内的请求QPS。

按Verb+Resource维度分析QPS

sum(irate(apiserver_request_total{verb=~"$verb",resource=~"$resource"}[$interval]))by(verb,resource)

按Verb+Resource维度,统计单位时间(1s)内的请求QPS。

按Verb维度分析请求时延

histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb=~"$verb", verb!~"WATCH|CONNECT",resource!=""}[$interval])) by (le,verb))

按Verb维度,分析请求时延。

按Verb+Resource维度分析请求时延

histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb=~"$verb", verb!~"WATCH|CONNECT", resource=~"$resource",resource!=""}[$interval])) by (le,verb,resource))

按Verb+Resource维度,分析请求时延。

非2xx返回值的读请求QPS

sum(irate(apiserver_request_total{verb=~"GET|LIST",resource=~"$resource",code!~"2.*"}[$interval])) by (verb,resource,code)

统计非2xx返回值(除成功以外的所有情况,例如4xx、5xx等)的读请求QPS。

非2xx返回值的写请求QPS

sum(irate(apiserver_request_total{verb!~"GET|LIST|WATCH",verb=~"$verb",resource=~"$resource",code!~"2.*"}[$interval])) by (verb,resource,code)

统计非2xx返回值(除成功以外的所有情况,例如4xx、5xx等)的写请求QPS。

Apiserver对etcd请求时延

histogram_quantile($quantile, sum(irate(etcd_request_duration_seconds_bucket[$interval])) by (le,operation,type,instance))

统计API Server对etcd的请求时延。

准入控制器和Webhook

可观测性展示

47

功能解析

名称

PromQL

说明

准入控制器时延[admit]

histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_controller_admission_duration_seconds_bucket{type="admit"}[$interval])) )

使用到的admit类型的Admission Controller名称、操作、是否拒绝以及相应的执行时间。

指标Bucket的阈值为{0.005、0.025、0.1、0.5、2.5}。单位:秒。

准入控制器时延[validate]

histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_controller_admission_duration_seconds_bucket{type="validate"}[$interval])) )

使用到的validate类型的Admission Controller名称、操作、是否拒绝以及相应的执行时间。

指标Bucket的阈值为{0.005、0.025、0.1、0.5、2.5}。单位:秒。

准入Webhook时延[admit]

histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_webhook_admission_duration_seconds_bucket{type="admit"}[$interval])) )

使用到的admit类型的Webhook名称、操作、是否拒绝以及相应的执行时间。

指标Bucket的阈值为{0.005、0.025、0.1、0.5、2.5},单位:秒。

准入Webhook时延[validating]

histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_webhook_admission_duration_seconds_bucket{type="validating"}[$interval])) )

使用到的admit类型的Webhook名称、操作、是否拒绝以及相应的执行时间。

指标Bucket的阈值为{0.005、0.025、0.1、0.5、2.5}。单位:秒。

准入Webhook请求QPS

sum(irate(apiserver_admission_webhook_admission_duration_seconds_count[$interval]))by(name,operation,type,rejected)

准入Webhook的请求QPS。

客户端分析

可观测性展示

45

功能解析

名称

PromQL

说明

按Client维度分析QPS

sum(irate(apiserver_request_total{client!=""}[$interval])) by (client)

按Client维度分析QPS。用于分析访问API Server的客户端以及QPS。

按Verb+Resource+Client维度分析QPS

sum(irate(apiserver_request_total{client!="",verb=~"$verb", resource=~"$resource"}[$interval]))by(verb,resource,client)

按Verb+Resource+Client维度分析QPS。

按Verb+Resource+Client维度分析LIST请求QPS(无resourceVersion字段)

sum(irate(apiserver_request_no_resourceversion_list_total[$interval]))by(resource,client)

  • 按Verb+Resource+Client维度分析LIST请求的QPS(无resourceVersion字段)。

  • 可以分析对API Server的全部LIST请求中、到etcd的部分LIST请求,帮助识别以及优化API Server客户端的LIST行为。

常见指标异常


如果组件的常见指标异常,请对照下文的情况说明排查是否为预期内情况。

读/写请求成功率

情况说明

正常情况

异常情况

说明

读请求成功率写请求成功率接近100%。

读请求成功率写请求成功率维持在较低百分比,例如小于90%。

存在较多非200返回值请求。

推荐解决方案

查看面板,定位非2xx返回值的读请求QPS非2xx返回值的写请求 QPS中导致非200返回值请求类型和资源。请评估该类请求是否符合预期,并随之采取措施进行优化。

例如,如果有GET/deployment 404,表示存在GET Deployment返回404的请求,会导致读请求成功率降低,请判断是否为预期行为。

GET/LIST读请求时延和写请求时延


情况说明

正常情况

异常情况

说明

GET读请求时延LIST读请求时延写请求时延访问的集群资源数量和集群规模项关联,没有固定的正常与异常的时间分界,只要不影响业务即在接受范围内。

例如,如果访问的某种资源量越大,那么LIST请求时间就会越长。一般情况下,GET读请求时延写请求时延小于1s,LIST读请求时延小于5s,为正常现象。

  • GET读请求时延写请求时延大于1s。

  • LIST读请求时延大于5s。

请求的响应时延过长时,需要排除集群资源数量多、Webhook调用慢等因素的影响。

推荐解决方案
  • 查看面板,定位GET读请求时延LIST读请求时延写请求时延导致非200返回值的请求类型和资源,并才去解决措施。

    请求延时指标apiserver_request_duration_seconds_bucket的最大阈值是60s,超过60s的请求都会统计为60s。而登录Pod的请求POST pod/exec、读取日志的请求会建立长链接,该类请求时间通常会超过60s。问题定位时可忽略该类请求。

  • 参见准入Webhook时延,分析是否由于Webhook执行较慢,导致API Server请求延时长。

在处理读/写请求数量和请求限流速率


情况说明

正常情况

异常情况

说明

通常情况下,在处理读请求数量 、在处理写请求数量小于100, 请求限流速率为0,为正常现象。

  • 在处理读请求数量在处理写请求数量大于100。

  • 请求限流速率大于0。

当前在处理请求的队列积压时,需要排除短时请求量涌入导致处理延时、Webhook调用慢等因素的影响。超过队列长度时,API Server会限流,导致请求限流速率大于0,影响集群稳定性。

推荐解决方案
  • 查看QPS和时延和客户端分析,分析请求中占比位于头部的请求,评估是否符合预期。如果请求为实际业务发起,您可以判断是否需降低请求量。

  • 参见准入Webhook时延,分析是否因为Webhook执行慢导致API Server请求处理慢。

  • 如果持续出现请求限流速率大于0,请提交工单获取技术支持。

准入Webhook时延

情况说明

正常情况

异常情况

说明

准入Webhook时延小于0.5s。

持续出现准入Webhook时延大于0.5s。

Webhook响应慢会影响API Server的响应时延。

推荐解决方案

排查Webhook日志等信息,判断是否符合预期。如果不需要某个Webhook,请卸载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1822508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Winform 侧边栏,切换不同页面

在项目中我们经常遇到需要在主界面上切换不同子页面的需求,常用做法是左侧显示子页面菜单,用户通过点击左侧菜单,实现右边子页面的展示。 实例项目实现: 项目左侧侧边栏实现FlowLayoutPanel使用显示不同子窗体 实例链接&#xf…

苹果设备上的livp格式是什么?怎么转换?

livp格式是苹果公司推出的一种图片格式,它允许用户在iOS设备上拍摄的照片中包含声音和动作,从而创造出一种动态的照片效果。 livp格式的照片不仅记录了图像,还记录了拍摄前后1.5秒的音频和视频,使得照片能够“活”起来。 ✨livp…

植物大战僵尸(杂交版)最新版V2.1来袭!

【新手指导】最新版v2.1来袭 1.闪退怎么办? 答:窗口模式可以解决大部分问题。输入法转换成英文也可以。最后一种办法管理员运行,再后台可运行,即便不是窗口也不会闪退,亲测有效 2.哪里下载? 答:夸克网盘htt…

【Android】实现Recyclerview的Item可以左右侧滑动的效果

项目需要 使用Recyclerview进行列表的数据加载的时候,需要对这个Item进行左右滑动进行操作的功能, 比如这样 需求实现 上面图来源于 https://github.com/anzaizai/EasySwipeMenuLayout 这是一个可以用来进行列表左滑、右滑的项目,可以集…

盒马鲜生礼品卡如何使用?

盒马鲜生的礼品卡除了在门店用以外,还有什么用处啊 毕竟家附近的盒马距离都太远了,好多卡最后都闲置下来了,而且以前都不知道盒马卡还会过期,浪费了好多 还好最近发现了 盒马鲜生礼品卡现在也能在收卡云上兑现了,而且…

01_点亮LED

这节课的标题是点亮 LED,虽然任务很简单,但是需要大家了解的单片机基础知识的内容却很多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,课程最后通过点亮一个 LED 小灯来增加初学者对单片机的兴趣和自信。 …

GLS-3004K 端子排静态双位置继电器 AC115V 导轨安装约瑟 JOSEF

系列型号: GLS-3002K端子排静态双位置继电器; GLS-3204K端子排静态双位置继电器; GLS-3220端子排静态双位置继电器; GLS-3004K端子排静态双位置继电器; 一、用途 GLS系列端子排静态双位置继电器用于交直流操作的各种保护与自动控制系统中,作为…

Dubbo-使用zookeeper作为注册中心时节点的概述

本文内容很容易理解,会阐述当dubbo使用zookeeper作为注册中心时候,zookeeper节点是什么样子的 本文的代码使用的dubbo版本是2.7.x,几年前的版本了,但是不影响探究 首先我们创建一个简单的maven项目,然后写出一段dubb…

分布式事务的八种方案解析(1)

针对不同的分布式场景业界常见的解决方案有2PC、TCC、可靠消息最终一致性、最大努力通知等方案,以下总结8 种常见的解决方案,帮助大家在实际的分布式系统中更好地运用事务。 1.2PC 二阶段提交协议(Two-phase commit protocol)&…

Tensorflow入门实战 T04-猴痘识别

本篇文章主要:tensorflow 运行环境:本地cpu 运行epoch:50 1、tensorflow官网 tensorflow的官网教程。初学者的 TensorFlow 2.0 教程 | TensorFlow Core 官网上有图像分类的相关详细描述还有代码示例。 2、完整代码展示 from tensorflo…

进阶篇04——视图

简介及基本语法 视图的检查选项 可以通过视图进行数据的增删改查操作,但由于视图是一张虚拟表,所以操作的实际上是视图的基表,即创建视图时select语句操作的表 cascaded 自己还测试了一下这种情况:当V1和V2都没有加检查选项&…

华三HCL模拟器安装及华三防火墙配置

0、前言 最近跟模拟器杠上了,主要是需要运行防火墙,目前已经成功模拟出华为、山石防火墙,而且模拟出来的设备能与物理网络环境进行互联。现在我又盯上华三防火墙了。 首先下载模拟器: 下载地址:H3C网络设备模拟器官方免…

EasyExcel文件导出,出现有文件但没有数据的问题

一开始由于JDK版本过高,我用的17,一直excel没有数据,表头也没有,后来摸索了好久,找了资料也没有,后来改了代码后报了一个错误(com.alibaba.excel.exception.ExcelGenerateException: java.lang.…

进程状态及其转换

0号进程(idle):在linux系统启动的时候最先运行的进程就是0号进程,0号进程又叫空闲进程。如果系统上没有其他进程执行那么0号进程就执行。0号进程是1号进程和2号进程的父进程 1号进程(init):init进程是由0号进程创建得到的,它的主要工作是系统的初始化。…

Spring Security 与 JWT、OAuth 2.0 整合详解:构建安全可靠的认证与授权机制

Spring Security 与 OAuth 2.0 整合详解:构建安全可靠的认证与授权机制 将 JWT(JSON Web Token)与 OAuth 2.0 整合到 Spring Security 中可以为应用程序提供强大的认证和授权功能。以下是详细的整合步骤和代码示例。 1. 引入依赖 首先&am…

【开源项目】重庆智慧城市案例~实景三维数字孪生城市CIM/BIM

飞渡科技数字孪生重庆管理平台,以实景三维平台为支撑,以城市数据库对接为核心,利用数字孪生技术,结合云计算、物联网IOT等技术,对接城市规划、智能交通、和公共安全等系统。 利用平台强大的国产自研渲染引擎&#xff0…

怎么压缩视频大小

在数字时代,视频已成为我们日常生活和工作中不可或缺的一部分。然而,视频文件的大小也越来越大,这给存储和传输带来了不小的挑战。因此,学会如何有效地压缩视频文件,就显得尤为重要。本文将详细介绍一种常用的视频压缩…

vscode中模糊搜索和替换

文章目录 调出搜索(快捷键)使用正则(快捷键)替换(快捷键)案例假设给定文本如下目标1:查找所有函数名目标2:替换所有函数名为hello目标3:给url增加查询字符串参数 调出搜索…

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 01

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econ…

如何用Xcode创建你的第一个项目?学起来

前言 上一期,咱们已经有安装XCode的教程了。有小伙伴说建议跳过,嗯。。。如果你对开发很熟悉,那可以。但如果不熟悉,建议还是按照教程一步步来哦! 毕竟统一了开发工具,咱们后续讲的内容学习起来也会简单一…