Kubernetes v1.34: 面向 Kubernetes 的 PSI 指标进阶至 Beta
随着 Kubernetes 集群的规模和复杂性不断增长,了解单个节点的健康状况和性能变得越来越重要。我们很高兴地宣布,自 Kubernetes v1.34 起,压力失速信息(Pressure Stall Information,PSI)指标已晋升为 Beta 版。
什么是压力失速信息(PSI)?
压力失速信息(PSI)是 Linux 内核(4.20 及更高版本)的一项功能,它提供了一种规范化的方法来量化基础设施资源的压力,即判断对某一资源的需求是否超过了当前的供应。它超越了简单的资源利用率指标,转而衡量任务因资源争用而停滞的时间。这是一种识别和诊断可能影响应用程序性能的资源瓶颈的强大方法。
PSI 为 CPU、内存和 I/O 暴露了指标,分为 some
(部分)或 full
(完全)压力。
some(部分)
- 至少一个任务因资源而停滞的时间百分比。这表明存在一定程度的资源争用。
full(完全)
- 所有非空闲任务同时因某资源而停滞的时间百分比。这表明存在更严重的资源瓶颈。
PSI:“部分”压力与“完全”压力
这些指标在 10 秒、1 分钟和 5 分钟的滚动窗口内进行聚合,提供了资源压力随时间变化的全面视图。
Kubernetes 中的 PSI 指标
启用 KubeletPSI
特性门控后,kubelet 现在可以从 Linux 内核收集 PSI 指标,并通过两个渠道将其暴露出来:Summary API 和 /metrics/cadvisor
Prometheus 端点。这使你能够在节点、Pod 和容器级别监控和告警资源压力。
通过 /metrics/cadvisor
可以获取以下新的 Prometheus 暴露格式的指标:
container_pressure_cpu_stalled_seconds_total
container_pressure_cpu_waiting_seconds_total
container_pressure_memory_stalled_seconds_total
container_pressure_memory_waiting_seconds_total
container_pressure_io_stalled_seconds_total
container_pressure_io_waiting_seconds_total
这些指标,连同来自 Summary API 的数据,提供了资源压力的细粒度视图,使你能够精确定位性能问题的根源并采取纠正措施。例如,你可以使用这些指标来:
- 识别内存泄漏: 内存的
some
压力持续增加可能表明应用程序存在内存泄漏。 - 优化资源请求和限制: 通过了解工作负载的资源压力,你可以更准确地调整其资源请求和限制。
- 自动扩缩工作负载: 你可以使用 PSI 指标来触发自动扩缩事件,确保你的工作负载拥有实现最佳性能所需的资源。
如何启用 PSI 指标
要在你的 Kubernetes 集群中启用 PSI 指标,你需要:
- 确保你的节点运行 Linux 内核版本 4.20 或更高版本,并使用 cgroup v2。
- 在 kubelet 上启用
KubeletPSI
特性门控。
启用后,你可以开始使用与 Prometheus 兼容的监控解决方案抓取 /metrics/cadvisor
端点,或查询 Summary API 来收集和可视化新的 PSI 指标。请注意,PSI 是一个 Linux 内核特性,因此这些指标在 Windows 节点上不可用。你的集群可以包含 Linux 和 Windows 节点的混合,在 Windows 节点上,kubelet 不会暴露 PSI 指标。
接下来是什么?
我们很高兴能将 PSI 指标带给 Kubernetes 社区,并期待你的反馈。作为一个 Beta 特性,我们正在积极努力改进和扩展此功能,以期发布稳定的 GA 版本。我们鼓励你试用并与我们分享你的体验。
要了解有关 PSI 指标的更多信息,请查看官方的 Kubernetes 文档。你也可以在 #sig-node Slack 频道上参与讨论。