监控Kubernetes 控制面组件的关键指标

news/2024/10/21 7:32:02/

控制面组件的监控,包括 APIServer、Controller-manager(简称 CM)、Scheduler、etcd 四个组件。

1、APIServer

APIServer 的核心职能是 Kubernetes 集群的 API 总入口,Kube-Proxy、Kubelet、Controller-Manager、Scheduler 等都需要调用 APIServer,所以 APIServer 的监控,完全按照 RED 方法论来梳理即可,最核心的就是请求吞吐和延迟。

  • apiserver_request_total:请求量的指标,可以统计每秒请求数、成功率。
  • apiserver_request_duration_seconds:请求耗时的指标。
  • apiserver_current_inflight_requests:APIServer 当前处理的请求数,分为 mutating(非 get、list、watch 的请求)和 readOnly(get、list、watch 请求)两种,请求量过大就会被限流,所以这个指标对我们观察容量水位很有帮助。

2、Controller-manager

Controller-manager 负责监听对象状态,并与期望状态做对比。如果状态不一致则进行调谐,重点关注的是任务数量、队列深度等。

  • workqueue_adds_total:各个 controller 接收到的任务总数。
  • workqueue_depth:各个 controller 的队列深度,表示各个 controller 中的任务的数量,数量越大表示越繁忙。
  • workqueue_queue_duration_seconds:任务在队列中的等待耗时,按照控制器分别统计。
  • workqueue_work_duration_seconds:任务出队到被处理完成的时间,按照控制器分别统计。
  • workqueue_retries_total:任务进入队列的重试次数。

3、Scheduler

Scheduler 在 Kubernetes 架构中负责把对象调度到合适的 Node 上,在这个过程中会有一系列的规则计算和筛选,重点关注调度这个动作的相关指标。

  • leader_election_master_status:调度器的选主状态,1 表示 master,0 表示 backup。
  • scheduler_queue_incoming_pods_total:进入调度队列的 Pod 数量。
  • scheduler_pending_pods:Pending 的 Pod 数量。
  • scheduler_pod_scheduling_attempts:Pod 调度成功前,调度重试的次数分布。
  • scheduler_framework_extension_point_duration_seconds:调度框架的扩展点延迟分布,按 extension_point 统计。
  • scheduler_schedule_attempts_total:按照调度结果统计的尝试次数,“unschedulable”表示无法调度,“error”表示调度器内部错误。

4、etcd

etcd 在 Kubernetes 的架构中作用巨大,相对也比较稳定,不过 etcd 对硬盘 IO 要求较高,因此需要着重关注 IO 相关的指标,生产环境建议至少使用 SSD 的盘做存储。

  • etcd_server_has_leader :etcd 是否有 leader。
  • etcd_server_leader_changes_seen_total:偶尔切主问题不大,频繁切主就要关注了。
  • etcd_server_proposals_failed_total:提案失败次数。
  • etcd_disk_backend_commit_duration_seconds:提交花费的耗时。
  • etcd_disk_wal_fsync_duration_seconds  :wal 日志同步耗时。

5、KSM

Kube-state-metrics 这个组件,采集的很多指标都只是充当元信息,单独拿出来未必那么有用,但是和其他指标做 group_left、group_right 连接的时候可能又会很有用。

  • kube_node_status_condition:Node 节点状态,状态不正常、有磁盘压力等都可以通过这个指标发现。
  • kube_pod_container_status_last_terminated_reason:容器停止原因。
  • kube_pod_container_status_waiting_reason:容器处于 waiting 状态的原因。
  • kube_pod_container_status_restarts_total:容器重启次数。
  • kube_deployment_spec_replicas:deployment 配置期望的副本数。
  • kube_deployment_status_replicas_available:deployment 实际可用的副本数。

 

此文章为8月Day11学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。


http://www.ppmy.cn/news/1026002.html

相关文章

从后往前读取列表的方法

从后往前读取列表的方法 方法1:使用for循环遍历列表时,可以使用reverse()函数将列表反转,然后再遍历。 # 列表 num [0, 1, 2, 3]# 反向遍历 for i in reversed(num):print(i)输出结果: 3 2 1 0方法2:先计算列表长度…

并发和并行的概念

并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的是使程序能够并发执行 注意同一时间间隔(并发&#xff0…

mybatis 中的<![CDATA[ ]]>用法及说明

<![CDATA[ ]]>作用 <![CDATA[ ]]> 在mybatis、ibatis等书写SQL的xml中比较常见&#xff0c;是一种XML语法&#xff0c;他的作用是 可以忽略xml的转义&#xff08;在该标签中的语句和字符原本是什么样的&#xff0c;在拼接成SQL后还是什么样的&#xff09; 使用&a…

ubuntu22.04-无法update:

1、报错原因 使用命令&#xff1a;sudo apt-get update 报错 获取:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic InRelease [242 kB] 获取:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease [88.7 kB] 获取:3 https://mirrors.t…

IDEA提示:StringBuffer xxx‘ may be declared as ‘StringBuilde

如图所示&#xff0c;编写代码时遇见了如下IDEA警告&#xff1a; 原因&#xff1a;StringBuilder是线程不安全的&#xff0c;但是其效率高&#xff0c;而StringBuffer则相反&#xff0c;虽然其线程安全&#xff0c;但是效率低下。 由于 StringBuilder 相较于 StringBuffer 有速…

对文件的读取和修改 JAVA

目录 1、try catch:2、hasNextLine():3、java读取某个文件夹信息&#xff1a;4、修改&#xff1a; 1、try catch: 1、try语句对你觉得可能会有问题的语句进行尝试 2、try内语句出现错误会被catch语句捕捉&#xff0c;且整个程序不会崩溃 3、try语句出错才会执行下方catch语句…

TZOJ 3326: Barn Repair 线性DP

题意&#xff1a; 在一个夜黑风高、下着暴风雨的夜晚&#xff0c;farmer John的牛棚的屋顶、门都被吹飞了。所幸&#xff0c;许多牛都在度假&#xff0c;所以牛棚并没有住满。 牛棚一个挨着一个相邻排列成一行&#xff0c;牛就在里面过夜。一些牛棚里面有牛&#xff0c;而一些…

浅析MySQL InnoDB的隔离级别

隔离性简介 隔离性主要是指数据库系统提供一定的隔离机制,意思就是多个事务并发执行时&#xff0c;一个事务的执行不应影响其它事务的执行。 数据库中并发一致性问题&#xff1f; 在并发环境下&#xff0c;事务的隔离性很难保证&#xff0c;因此会出现很多并发一致性问题。 …