To use this feature, you (or a cluster administrator) will need to enable the PodAndContainerStatsFromCRI feature gate for all relevant components in your cluster.
See Enable Or Disable Feature Gates for more information.
kubelet 通过
cAdvisor 收集 Pod 和容器指标。作为一个 Beta 特性,
Kubernetes 允许你通过容器运行时接口(CRI)
配置收集 Pod 和容器指标。要使用基于 CRI 的收集机制,你必须启用 PodAndContainerStatsFromCRI
特性门控
并使用兼容的 CRI 实现(containerd >= 2.2, CRI-O >= 1.31.0)。
当启用 PodAndContainerStatsFromCRI 时,kubelet 轮询底层容器运行时以获取
Pod 和容器统计信息,而不是直接使用 cAdvisor 检查主机系统。同直接使用 cAdvisor
收集信息相比,依靠容器运行时获取这些信息的好处包括:
从 Kubernetes v1.37 起,kubelet 中基于 cAdvisor 的 Pod 和容器指标收集已被弃用。 当此特性达到正式发布(GA)阶段时,不支持所需指标的 CRI 运行时将失去 Pod 和容器级别的指标收集能力。
当特性门控启用时,kubelet 会向 CRI 运行时查询 Pod 和容器级别的数据,而非使用 cAdvisor。 节点级别和镜像文件系统的统计信息仍从 cAdvisor 收集。以下端点受到影响:
/stats/summary)kubelet 从 CRI 运行时而非 cAdvisor 获取 Pod 和容器统计信息,用于 Summary API。 这包括 Pod 和容器的 CPU、内存、网络和进程统计信息。
/metrics/cadvisorkubelet 通过 ListPodSandboxMetrics RPC 向 CRI 运行时查询 Pod 和容器指标,
并在 /metrics/cadvisor 端点上提供这些指标。这取代了 Pod 和容器级别上基于 cAdvisor 的收集,
同时保留了相同的端点路径和指标名称。此端点上的节点和机器级别指标继续由 cAdvisor 提供。
kubelet 暴露了一个 kubelet_metrics_provider 指标,其 provider 标签设置为
cri 或 cadvisor。你可以使用此指标来验证在给定节点上是哪个来源正在活跃地提供
Pod 和容器统计信息。
要使用基于 CRI 的指标收集,你需要:
PodAndContainerStatsFromCRI
特性门控CRI-O 从 1.36.3 版本开始,在 /metrics/cadvisor 端点上为 CRI 指标添加了 namespace、
pod 和 container 标签。更早的版本不包含这些标签,这可能会影响依赖它们来匹配
cAdvisor 生成的指标的查询。
如果 CRI 运行时未报告预期的指标,即使特性门控已启用,kubelet 也会回退到使用 cAdvisor 进行 Pod 和容器统计信息收集。你可以通过重启 kubelet 来禁用特性门控,从而完全恢复到基于 cAdvisor 的收集方式。