Kubernetes v1.32:内存管理器(Memory Manager)进入 GA 阶段

随着 Kubernetes 1.32 的发布,内存管理器已正式进入通用可用性(GA)阶段,这标志着在为容器化应用实现高效且可预测的内存分配方面迈出了重要的一步。自 Kubernetes v1.22 升级到 Beta 版以来,内存管理器已经证明了其可靠性、稳定性,并且是 CPU 管理器 的一个很好的补充功能。

作为 kubelet 工作负载准入过程的一部分,内存管理器提供拓扑提示以优化内存分配和对齐。这使得用户可以为 Guaranteed QoS 等级的 Pod 分配独占内存。关于此过程的更多详细信息,可以在内存管理器进入 Beta 阶段的博客文章中找到。

自 Beta 版本以来引入的大部分更改都是错误修复、内部重构和可观测性改进,例如指标和更好的日志记录。

可观测性改进

作为提高内存管理器可观测性工作的一部分,新增了一些指标来提供内存分配模式的统计数据。

  • memory_manager_pinning_requests_total - 跟踪 Pod 规约要求内存管理器锁定内存页面的次数。

  • memory_manager_pinning_errors_total - 跟踪 Pod 规约要求内存管理器锁定内存页面但分配失败的次数。

提高内存管理器的可靠性和一致性

Kubelet 在重启或重新引导后准入 Pod 时不保证 Pod 的顺序。

在某些边缘情况下,这种行为可能导致内存管理器拒绝某些 Pod,在更极端的情况下,可能会导致 Kubelet 在重启时失败。

此前,Beta 版的实现缺少某些检查和逻辑来防止这些问题。

为了使内存管理器稳定以达到通用可用性(GA)的要求,我们对算法进行了一些微小但关键的改进,提高了其鲁棒性和处理边缘情况的能力。

未来发展

拓扑管理器(Topology Manager)的未来,特别是内存管理器,还有更多值得期待。值得注意的是,我们正在努力将内存管理器的支持扩展到 Windows,从而在 Windows 操作系统上实现 CPU 和内存亲和性。

参与进来

此功能由 SIG Node 社区推动。欢迎加入我们,与社区联系,分享您对上述功能及其他方面的想法和反馈。我们期待您的声音!