Kubernetes v1.34: Kubernetes 中的 PSI 指标进入 Beta 阶段
随着 Kubernetes 集群规模和复杂性的增长,了解各个节点的健康状况和性能变得越来越关键。 我们很高兴地宣布,从 Kubernetes v1.34 开始,压力停滞信息 (PSI) 指标已升级到 Beta 版本。
什么是压力停滞信息 (PSI)?
压力停滞信息 (PSI) 是 Linux 内核(4.20 及更高版本)的一项功能, 它提供了一种规范化的方式来量化基础设施资源的压力, 即资源需求是否超过当前供应。 它超越了简单的资源利用率指标,而是测量任务因资源竞争而停滞的时间。 这是识别和诊断可能影响应用程序性能的资源瓶颈的强大方法。
PSI 暴露了 CPU、内存和 I/O 的指标,分为 some 或 full 压力:
some- 至少一个任务在资源上停滞的时间百分比。这表明存在某种程度的资源竞争。
full- 所有非空闲任务同时在资源上停滞的时间百分比。这表明存在更严重的资源瓶颈。
PSI:'Some' 与 'Full' 压力对比
这些指标在 10 秒、1 分钟和 5 分钟的滚动窗口上进行聚合,提供了随时间变化的资源压力的全面视图。
Kubernetes 中的 PSI 指标
启用 KubeletPSI 特性门控后,kubelet 现在可以从 Linux 内核收集 PSI 指标,
并通过两个渠道暴露它们:Summary API
和 /metrics/cadvisor Prometheus 端点。这允许你在节点、Pod 和容器级别监控和告警资源压力。
以下新指标可通过 /metrics/cadvisor 以 Prometheus 暴露格式获得:
container_pressure_cpu_stalled_seconds_totalcontainer_pressure_cpu_waiting_seconds_totalcontainer_pressure_memory_stalled_seconds_totalcontainer_pressure_memory_waiting_seconds_totalcontainer_pressure_io_stalled_seconds_totalcontainer_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 指标。
接下来是什么?
我们很高兴为 Kubernetes 社区带来 PSI 指标,并期待你的反馈。 作为 Beta 功能,我们正在积极改进和扩展此功能,以实现稳定的 GA 发布。 我们鼓励你试用并与我们分享你的经验。
要了解有关 PSI 指标的更多信息,请查看官方 Kubernetes 文档。 你还可以参与 #sig-node Slack 频道的对话。