Kubernetes v1.36:Kubernetes 中的 PSI 指标已毕业至 GA 阶段
压力停滞信息(PSI)自 2018 年起已集成到 Linux 内核中,为在故障发生前识别资源饱和提供了高保真信号。与传统利用率指标不同,PSI 量化了 CPU、内存和 I/O 上的停滞任务及丢失时间。随着 Kubernetes v1.36 的发布,现已提供稳定的接口,用于在节点、Pod 和容器级别观察资源争用。PSI 提供停滞时间的累计总量以及移动平均值(10 秒、60 秒、300 秒),以区分瞬时尖峰与持续的资源紧张。SIG Node 对高密度工作负载(80+ 个 Pod)进行了广泛的性能测试,证明了 PSI 在生产环境中的就绪状态。通过切换 KubeletPSI 功能门控来测量的 Kubelet 开销显示,其对资源使用的影响微乎其微。Kubelet 的收集逻辑被证明非常轻量,能够无缝融入标准的维护周期,消耗的 CPU 资源低于 0.1 个核心或节点总容量的 2.5%。关于内核开销,在 Linux 内核中启用 PSI(psi=1 对比 psi=0)在重负载下导致一致的差值,为 0.037 至 0.125 个核心(占节点容量的 0.925% - 3.125%)。作为主要收集器的 kubelet 进程也保持了极低的 CPU 使用率,其尖峰不超过 0.25 个核心(6.25%),且持续时间未超过一秒。v1.36 中的改进包括更智能的指标发布机制:Kubelet 现在会在报告之前通过 cgroup 配置检测操作系统级别的 PSI 支持,从而防止出现误导性的零值指标。要使用 PSI,节点必须运行 Linux 内核 4.20+,使用 cgroup v2,并在操作系统层面启用 PSI(CONFIG_PSI=y,且无 psi=0 启动参数)。PSI 指标在 v1.36 中通常可用,无需功能门控选项。用户可以通过抓取 /metrics/cadvisor 端点或查询 Summary API 来获取数据。PSI 是 Linux 内核功能,在 Windows 节点上不可用。通过控制平面的 API 服务器代理到 Kubelet 的 HTTP API 可从 Summary API 获取实时压力数据,但这属于特权操作。