Kubernetes v1.37:Metrics API 升级为稳定版

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

Kubernetes v1.37将metrics.k8s.io API升级为稳定版(v1),提供节点和Pod的CPU及内存使用数据,支持kubectl top和自动扩缩容。v1与v1beta1字段相同,仅版本升级,无需功能开关。实现需同时支持v1和v1beta1以兼容旧客户端,HPA暂仅支持v1beta1,未来将自动选择版本。

🔎

延伸解读

稳定版的意义

metrics.k8s.io/v1 的稳定化意味着该 API 现在享有 Kubernetes 稳定版 API 的稳定性保证。对于集群运维人员和开发者来说,这降低了因 API 变更导致的中断风险,使得基于资源指标的工具和自动化可以更放心地依赖此接口。

兼容性与迁移

v1 与 v1beta1 字段完全相同,仅版本号变化。实现方需同时提供两个版本以兼容旧客户端。kubectl top 已支持自动选择 v1,但 HPA 控制器目前仍仅支持 v1beta1,未来计划支持自动选择。因此,在过渡期内,确保 metrics-server 等实现同时支持两个版本至关重要。

API 的定位与限制

该 API 刻意保持精简,仅提供节点和 Pod 的 CPU 与内存使用数据,用于自动扩缩容和基本检查。它并非全功能监控管道的替代品,也不涵盖自定义指标(custom.metrics.k8s.io)。对于更复杂的监控需求,仍需依赖其他监控解决方案。

Q&A

Kubernetes v1.37 中 metrics.k8s.io API 升级为稳定版有什么意义?

这意味着该 API 现在具有 Kubernetes 稳定 API 的稳定性保证,对于集群运维人员和应用开发者来说,可以依赖它进行生产环境使用。

metrics.k8s.io v1 与 v1beta1 在字段和功能上有什么区别?

v1 与 v1beta1 的资源类型和字段完全相同,没有重命名字段、新增字段或改变返回的 CPU 和内存值的含义,只是 API 版本升级。

如何通过 kubectl 获取节点和 Pod 的 metrics.k8s.io v1 数据?

可以使用 kubectl get --raw /apis/metrics.k8s.io/v1/nodes 获取节点指标,使用 kubectl get --raw /apis/metrics.k8s.io/v1/namespaces/default/pods 获取指定命名空间下的 Pod 指标。

kubectl top 和 HPA 对 metrics.k8s.io v1 的支持情况如何?

kubectl top 支持 v1 和 v1beta1,优先使用 v1,并在集群不支持 v1 时自动回退到 v1beta1。HPA 控制器目前仅支持 v1beta1,计划支持基于发现的版本选择,但该功能在 v1.37 中尚未提供。

metrics.k8s.io API 提供哪些资源类型?它是否替代完整的监控管道?

该 API 提供 NodeMetrics 和 PodMetrics 两种资源类型,用于自动扩缩容和基本检查。它不替代完整的监控管道或自定义指标 API(custom.metrics.k8s.io)。

在 Kubernetes v1.37 中,如何启用 metrics.k8s.io v1 API?

无需启用任何功能开关。该 API 通过 API 聚合层提供服务,需要你的 metrics 实现(如 metrics-server)支持 v1.metrics.k8s.io 并注册相应的 APIService。

在过渡期间,metrics 实现应该如何处理 v1 和 v1beta1 版本?

实现应同时提供 v1 和 v1beta1 版本,以保持与旧客户端的兼容性。v1beta1 在 v1.37 中仍然可用。

🏷️

标签

➡️

继续阅读