Kubernetes集群中如何利用北极星因果指标设置正确的POD规格——CPU篇
· 阅读需 13 分钟
在 Kubernetes 容量规划中,追求的是集群的稳定性和资源使用效率之间的平衡:
- 资源分配过多会造成浪费。
- 资源分配过少则会导致用户请求时延上升,影响集群的稳定性。
背景
公众号之前翻译了一篇 Sysdig 的文章,Kubernetes 容量规划:如何合理设置集群资源介绍了如何设置合理的资源参数。
虽然按照那篇文章设置可以有一定的帮助,但仍然可能存在风险。本文将详细说明这些风险,并介绍如何通过北极星指标对 POD 的规格进行调整,以达到时延和资源的完美平衡。
Kubernetes 中的 POD CPU 规格参数
在 Kubernetes 中,POD 的 CPU 规格主要包括以下两个参数:
-
requests: POD 启动时请求的 CPU 资源量。Kubernetes 调度器会根据这个参数将 POD 调度到能够满足资源需求的节点上。
-
limits: POD 运行时能够使用的最大 CPU 资源量。如果 POD 尝试使用超过这个限制的 CPU 资源,会被限制在定义的 limit 值内。
Kubernetes 中的现存指标
要判断 POD 规格是否合适,需通过合适的指标来评估。当前 Kubernetes 中常见的 CPU 指标包括:
- CPU 利用率(container_cpu_usage_seconds_total): 通过类似 PQL 语句获得:
irate(container_cpu_usage_seconds_total{namespace="XXXX", container="XXXX"}[5m])
该指标反映了 CPU 利用率。
-
系统负载:node_load1、node_load5、node_load15 表示系统在 1 分钟、5 分钟和 15 分钟内的平均负载。一般认为负载与 CPU 核数相当即可。
-
CPU 节流(throttle):container_cpu_cfs_throttled_seconds_total, 通过 类似 PQL 语句获得:
irate(container_cpu_cfs_throttled_seconds_total{namespace="XXXX", container="XXXX"}[5m])
该指标表示容器由于 CPU 配额不足而被节流的 CPU 核心时间总量。
尽管这些指标对了解 CPU 资源使用情况有帮助,但各自存在局限性,难以单独作为唯一且关键的指标。
北极星指标的应用
所谓北极星指标,是指唯一且最关键的指标。在 Kubernetes 中,该用哪个指标来衡量容器的 CPU 资源是否充足呢?