cAdvisor 路线图深度解读:K8s 去耦合与 standalone 模式向 OpenTelemetry Collector 迁移
可观测性指标监控云原生【免费下载链接】cadvisorAnalyzes resource usage and performance characteristics of running containers.项目地址https://gitcode.com/gh_mirrors/ca/cadvisor点击查看免费下载cAdvisorContainer Advisor是谷歌开源的容器资源监控组件其 docs/roadmap.md 由 Kubernetes SIG Node 提出2026 年 1 月更新系统性地规划了 cAdvisor 未来几年的走向K8s 侧逐步停止将 cAdvisor 作为内置库 vendoring 进 kubeletstandalone 独立模式则整体迁移至 OpenTelemetry Collector最终进入维护模式直至关闭。本文以该路线图为骨架结合当前仓库的源码、API 文档与运行时选项逐条拆解迁移计划、时间表与每个技术要点的取舍依据帮助读者理解 cAdvisor 的功能边界及其在可观测性生态中的定位演变。路线图定位一份面向未来的战略规划文档路线图文档开篇即声明其状态与性质提案方Kubernetes SIG Node更新日期2026 年 1 月后续步骤先达成 OpenTelemetryOtel社区协议再产出详细迁移计划detailed plans。它并不是一份已经冻结的实施方案而是待讨论的路线草案其直接触发因素是社区持续提出的 cAdvisor standalone 模式新需求——这些需求提醒维护者在 K8s 项目与工具生态都已发生深刻变化的今天有必要为 cAdvisor 明确一个长期方向。一、cAdvisor 的双重身份Kubelet 内置库与独立二进制理解这份路线图的前提是认清 cAdvisor 由两个相互交织的部分组成作为链接进 kubelet 的库向 Kubernetes 提供容器资源使用信息是 K8s 项目资源管理所依赖的关键数据源作为独立二进制供用户监控容器化工作负载覆盖范围不限于 Kubernetes还包括 Docker 容器、Mesos 等场景并支持 Intel PMU perf 等专用硬件指标。这种双重身份在当前仓库的代码结构中可以得到印证。核心抽象定义在 lib/container/container.go 中ContainerType枚举枚举了 cAdvisor 支持的容器来源类型const ( ContainerTypeRaw ContainerType iota ContainerTypeDocker ContainerTypeCrio ContainerTypeContainerd ContainerTypePodman )同时ContainerHandler接口lib/container/container.go定义了所有容器实现必须提供的能力获取ContainerReference、资源隔离规格GetSpec、当前统计值GetStats、子容器列表、进程列表、cgroup 路径、容器标签与 IP 等。各运行时的具体 handler 分布在 lib/container 目录的 docker、containerd、crio、podman、systemd、raw 等子包中。入口程序 cmd/cadvisor.go 通过空导入注册容器 provider、云厂商信息AWS/Azure/GCE与 resctrl 插件再启动 HTTP 服务这体现了 standalone 模式开箱即用的设计一个二进制即可承担全部监控职责。路线图指出这个项目诞生于行业环境完全不同的年代其双重身份今天已成为结构性问题的主要来源。二、为什么要制定路线图三个结构性矛盾路线图将当前困境归结为三点1. 项目归属错位cAdvisor 是 Google 项目而非 Kubernetes 项目但 Google 对项目拥有超比例的所有权与责任同时开源治理模型有限责任与权力并不匹配。2. 维护意愿错位当前实际维护 cAdvisor 的 K8s 贡献者对 standalone 模式的使用场景缺乏切身利益vested interest其投入重心天然偏向 kubelet 集成侧。3. 依赖地狱Kubernetes 每次发布都要把 cAdvisor vendoring 进 k8s 源码树这会带来显著的依赖地狱问题同时也反过来限制了 standalone 模式能做的事情——因为库形态的约束会传导到独立二进制的能力边界上。针对这一点仓库中已有去耦合的铺垫Kubernetes 的 cAdvisor-less, CRI-full Container and Pod Stats 增强提案KEP 2371是去 vendoring 的第一阶段KEP 合并后仍需继续推进机器级指标向 containerd 的迁移。路线图进一步给出两个方向性判断一旦容器指标向容器运行时CRI迁移完成cAdvisor 项目将不再处于 K8s 贡献者范围内而会与 OpenTelemetry 项目更对齐除非 SIG Instrumentation 接手维护否则 cAdvisor 端点kubelet 的cadvisorendpoint将被弃用类似Configurable cAdvisor Metrics Collection这类诉求也不会被接受——因为它们更贴近遥测场景而非编排场景。三、K8s 侧路线图按年度推进的去耦合时间表路线图给出了 K8s 侧清晰的三阶段时间线2026 年完成 Pod 指标向 K8s 的迁移落地 cAdvisor-less, CRI-full Container and Pod StatsKEP 2371启动机器级指标向容器运行时的迁移对应 KEP 待定 TBD决策cadvisor端点去向很可能宣布弃用 kubelet 的cadvisor端点。2027 年停止将 cAdvisor vendoring 进 K8s。2027 年及以后可能远超此时点移除 kubelet 的cadvisor端点。可以看出K8s 侧的策略是先迁移指标、再弃用端点、最后移除代码每一步都以对应 KEP 的推进为前提节奏偏保守。四、cAdvisor standalone 的未来整体迁移到 OpenTelemetry Collector对于 standalone 模式路线图的提案是将场景迁移到 OpenTelemetry Collector新的 receiver 将采集与 cAdvisor 今天采集的类似信息Otel Collector 可配置为以 Prometheus 端点或其他任意受支持的 exporter 导出因此存在一条从 cAdvisor standalone 到 Otel Collector 的过渡路径transition path。与此同时cAdvisor 项目将进入**维护模式maintenance mode**并最终关闭。如果未来有项目或第三方愿意接手并希望将项目移交给 CNCF 或其他组织路线图明确表示会就此展开开放讨论。这里需要强调路线图声称cAdvisor 的分布式分发模式优势不足以使其优于 Otel Collector原因是 Otel Collector 在采集更多场景遥测数据时更灵活且拥有广为人知的配置体系而 cAdvisor 使用的是自定义配置。五、迁移要点一分发模型与配置模式路线图明确说明本节不是迁移到 Otel Collector 的详细规范而是指出编写迁移规范时必须澄清的张力点tension points。分发模型对比维度cAdvisorOtel Collector定位面向容器指标采集的专用软件通用遥测采集器上手难度配置更简单需要按需编译 receiver / exporter 并正确配置资源占用可能更轻量取决于启用的组件配置体系自定义配置行业公认的通用配置模型灵活性聚焦容器监控可覆盖更多遥测场景路线图的判断是cAdvisor 在分发模型上的收益简单、轻量不足以让它在这场比较中胜出因此倾向整体迁移。六、迁移要点二指标体系路线图建议将所有指标迁移到 Otel Collector以保证经过时间检验的指标集合能够平滑迁移但最终决策仍需详细计划支撑。设计中允许将指标拆分为多个 receiver如果这样更便于实现和维护。作为背景参考当前 cAdvisor 暴露的指标体系非常庞大详见 docs/storage/prometheus.md容器指标container 系列涵盖 CPUcontainer_cpu_usage_seconds_total、CFS 周期与节流统计、内存container_memory_usage_bytes、container_memory_working_set_bytes、hugepage、NUMA 页、磁盘与 IOcontainer_fs_*、blkio 设备用量、网络收发字节/包/错误/丢弃、TCP/UDP 连接、进程与文件描述符、perf 事件、resctrlLLC 占用与内存带宽、OOM 事件等硬件指标machine 系列CPU 核数、内存、swap、NUMA 拓扑machine_node_*、machine_cpu_cache_capacity_bytes、DIMM 容量依赖内核 3.6 的 sysfs edac 接口、NVM 持久内存需 libipmctl 构建等。这些指标的开关由--disable_metrics/--enable_metrics参数控制完整参数说明见 docs/runtime_options.md迁移时需逐一映射到对应的 Otel receiver。文档也提示Prometheus 端点上的指标命名偏好用下划线而 Otel 倾向于点号且指标名会向 Otel Semantic Convention 对齐因此改名rename是迁移中不可避免的工作。七、迁移要点三端点分析路线图指出除 Prometheus 指标外cAdvisor 还支持若干端点完整清单见 docs/api.md迁移时必须逐项处理。7.1 Prometheus 端点cAdvisor 默认在/metrics端点暴露 Prometheus 指标注册逻辑见 cmd/internal/http/handlers.go 的RegisterPrometheusHandler该端点可通过-prometheus_endpoint、-disable_metrics、-enable_metrics等 flag 自定义。迁移到 Otel Collector 后的关键变化命名格式差异Prometheus 端点可能以不同于 Otel 偏好的格式暴露指标Otel 偏好下划线命名而非点号其他改名也可能发生因为指标名要与 Otel Semantic Convention 对齐单端点聚合Otel Collector 将暴露单一 Prometheus 端点包含所有容器、所有指标不再支持容器专属端点cAdvisor 现有的按容器维度的应用指标访问方式将不再提供。这类端点目前定义在 docs/application_metrics.md 中例如http://localhost:8080/api/v2.0/appmetrics/containerName http://localhost:8080/api/v2.0/spec/containerName http://localhost:8080/api/v2.0/stats/containerName应用指标application metrics是 cAdvisor 的独立能力通过容器 labelio.cadvisor.metric.*声明配置从容器内端点采集自定义指标如 nginx_status、Prometheus 格式端点配置样例同样见 docs/application_metrics.md。7.2 Events 端点路线图建议将事件作为Otel events采集但指出一个关键设计冲突Otel Collector 中没有与 events 端点对应的现成机制因此消费方需要从拉取模型pull改为推送模型push。cAdvisor 当前的 events 端点定义在 docs/api.md 中/api/v1.3/events/absolute container name支持如下查询参数参数说明默认值start_time查询事件起始时间streamfalse 时时间起点end_time查询事件结束时间streamfalse 时当前时刻stream是否流式推送新事件false 返回历史事件falsesubcontainers是否同时返回所有子容器的事件falsemax_events返回的最大事件数streamfalse 时10all_events是否包含所有支持的事件类型falseoom_events是否包含 OOM 事件falseoom_kill_events是否包含 OOM kill 事件falsecreation_events是否包含容器创建事件falsedeletion_events是否包含容器删除事件false事件的序列化对象定义在 info/v1/container.goEventJSON 对象。拉取到推送的转变意味着下游消费端架构需要重新设计。7.3 其余端点不支持与替代方案端点/能力迁移方案docker/api/v1.2/docker/...不支持无替代方案subcontainers/api/v1.1/subcontainers/...不支持无替代方案containers/api/v1.0/containers/...不支持无替代方案machine/api/vX.Y/machine不支持改用 Node Feature Discovery这些端点目前的行为在 docs/api.md 中有完整描述例如/api/v1.0/containers/返回容器规格、最近 N 秒N 在 cAdvisor 中全局可配置的详细资源统计以及自容器创建以来的资源使用直方图machine 端点返回逻辑 CPU 核数、内存容量、最大 CPU 频率、可用文件系统、网络设备以及 NUMA 拓扑对应MachineInfo结构体见 info/v1/machine.go。迁移后这些数据要么由 Otel Collector 的通用机制覆盖要么由 Node Feature Discovery 等专门组件承接cAdvisor 专属的 REST 语义将消失。八、迁移要点四运行时与操作系统支持8.1 运行时路线图建议将基于容器的指标采集迁移到 Otel Collector使 Otel Collector 支持与 cAdvisor 今天相同的一套环境与运行时——实现方式可以是直接从 cAdvisor 拷贝代码。cAdvisor 当前支持的运行时即 lib/container/container.go 中枚举的 raw、docker、crio、containerd、podman另有 systemd 支持各运行时均有对应的 handler、factory 与 fs 实现目录。同时路线图提出一个更轻量的替代实现基于 KEP 2371cAdvisor-less, CRI-full Container and Pod Stats中CRI 暴露的指标来实现 receiver。这种方案的权衡是更不灵活局限于 Kubernetes 场景更可靠不依赖直接访问容器运行时内部机制。最终提案是按完整场景集设计但不排斥 CRI-based 指标 receiver 的实现即全量设计、灵活实现。8.2 操作系统这里有一个明确的现状声明cAdvisor 不支持 Windows 容器监控而 Otel Collector 支持。Otel Collector 存在实现 Windows 容器监控场景的潜力但这属于本路线图文档范围之外的事项。换言之Windows 容器监控是迁移到 Otel Collector 后可能新增的能力而不是 cAdvisor 现有能力的平移。九、总结对使用者的启示综合整份路线图可以提炼出如下关键结论kubelet 集成侧Pod 指标先完成向 CRI/容器运行时的迁移KEP 2371随后机器级指标跟进2027 年停止 vendoring最终移除cadvisor端点依赖 cAdvisor 提供的 kubelet 指标的用户应关注对应 KEP 的演进。standalone 侧cAdvisor 单机监控场景的既定方向是迁移到 OpenTelemetry Collector——通过新 receiver 承接采集、以 Prometheus 或其他 exporter 输出形成平滑过渡路径迁移过程中指标命名将向 Otel Semantic Convention 对齐事件消费模型将从拉取改为推送。功能落差需要提前评估docker、subcontainers、containers 端点迁移后没有直接替代machine 端点改用 Node Feature Discovery容器专属的应用指标端点见 docs/application_metrics.md将让位于单一 Prometheus 端点。项目终局cAdvisor 将进入维护模式并最终关闭但前提讨论Otel 社区协议、详细迁移计划仍在进行中且不排除第三方接手并移交 CNCF 的可能。对仍在生产环境使用 cAdvisor standalone 的团队而言这份路线图的现实意义在于提前盘点自身依赖的端点与指标对照 docs/api.md 与 docs/storage/prometheus.md规划到 Otel Collector 的迁移路径并密切跟踪 KEP 2371 及后续机器级指标迁移 KEP 的进展以决定何时切换、如何切换。赞分享可观测性指标监控云原生【免费下载链接】cadvisorAnalyzes resource usage and performance characteristics of running containers.项目地址https://gitcode.com/gh_mirrors/ca/cadvisor点击查看免费下载相关推荐OpenTelemetry Collector Go API Changelog 深度解读组件开发者 API 演进与迁移指南OpenTelemetry Collector Go API Changelog 深度解读组件开发者 API 演进与迁移指南 OpenTelemetry Co可观测性后端运维观测Kubernetes 项目基础设施迁移实录SIG K8s Infra 2020 年度报告解读与 CNCF 迁移路线图Kubernetes 项目基础设施迁移实录SIG K8s Infra 2020 年度报告解读与 CNCF 迁移路线图 本文基于 SIG K8s Infra 2开源治理文档研发协作Flutter 2026 路线图深度解读Impeller 迁移、Wasm 默认化与 GenUI/Agentic 开发范式演进Flutter 2026 路线图深度解读Impeller 迁移、Wasm 默认化与 GenUI/Agentic 开发范式演进 Flutter 官方每年会在 d跨平台移动开发前端UI组件桌面应用上一篇Dagster 如何用 dagster/priority 标签自定义运行队列优先级下一篇fheroes2重燃英雄无敌II经典传奇的现代游戏引擎 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

n8n 集成 Talend、Informatica、Apache NiFi:3 条数据管道 0 到 1 完整实战指南

n8n 集成 Talend、Informatica、Apache NiFi:3 条数据管道 0 到 1 完整实战指南

n8n 集成 Talend、Informatica、Apache NiFi:3 条数据管道 0 到 1 完整实战指南 【免费下载链接】n8n-workflows all of the workflows of n8n i could find (also from the site itself) 项目地址: https://gitcode.com/GitHub_Trending/n8nworkflo/n8n-workflow…

2026/9/20 18:04:08 阅读更多 →
Atlas 300V 24G昇腾推理卡部署YOLOv5全流程解析

Atlas 300V 24G昇腾推理卡部署YOLOv5全流程解析

有不少同行私下问我:Atlas 300V 24G到底是不是运算加速卡?能不能拿它部署 YOLO 这类目标检测模型?说实话,刚接触昇腾硬件的人确实容易被“300V”这个命名整懵,它既不像 310 那样是纯推理卡,又不像 910 那样…

2026/9/20 18:04:08 阅读更多 →
Atlas 300V部署YOLO目标检测:从模型转换到推理优化全指南

Atlas 300V部署YOLO目标检测:从模型转换到推理优化全指南

1. 为什么要把YOLO模型部署到Atlas加速卡上在AI部署圈子里,"Atlas"这个名字基本默认是和华为的Atlas系列加速卡绑定在一起的。你手里的标题"atlas"搭配"部署YOLO"和"300V 24G",指向已经很明确了——就是要在Atl…

2026/9/20 18:03:08 阅读更多 →

最新新闻

TiXL 的 Clamp 运算节点:浮点数区间钳制原理与实战指南

TiXL 的 Clamp 运算节点:浮点数区间钳制原理与实战指南

TiXL 的 Clamp 运算节点:浮点数区间钳制原理与实战指南 【免费下载链接】t3 TiXL is an open source software to create realtime motion graphics. 项目地址: https://gitcode.com/GitHub_Trending/t3/t3 Clamp 是 TiXL(t3 项目)Lib…

2026/9/20 19:37:35 阅读更多 →
Linux面试题高频考点与实战拆解:从命令原理到应答技巧

Linux面试题高频考点与实战拆解:从命令原理到应答技巧

简介:这份《Linux面试题大全及答案》以 PDF 形式收录了 30 道高频 Linux 面试问答,覆盖文件系统、设备管理、进程管理、网络管理、安全管理、系统管理、DNS 与 Web 服务等核心模块。每个问题均配有清晰答案与关键知识点,例如 inode 的作用、超…

2026/9/20 19:37:35 阅读更多 →
计算机组成原理期末复习指南:从B卷看核心考点与答题策略

计算机组成原理期末复习指南:从B卷看核心考点与答题策略

简介:2021年重庆理工大学软件工程专业《计算机组成原理》期末试卷B(含答案)以PDF格式发布,面向软件工程及相关专业本科生,适配期末考试冲刺、研究生入学考试自测和课程知识点整理。试卷内容覆盖存储器多体交叉编址、相…

2026/9/20 19:37:35 阅读更多 →
Qt JSON解析架构:用QJsonObject构建集中式解析层实战

Qt JSON解析架构:用QJsonObject构建集中式解析层实战

去年我把手头一个设备管理客户端的网络层从“边请求边解析”改成“集中式数据解析层”,折腾了一周才彻底理顺。那时候项目里已经堆了上千行散落在业务代码里的JSON取值逻辑,每次接口升级都要靠全文搜索找完所有调用点,改漏一个字段就是线上事…

2026/9/20 19:37:35 阅读更多 →
golangci-lint 路线图解读:版本化策略、Linter 弃用周期与未来计划

golangci-lint 路线图解读:版本化策略、Linter 弃用周期与未来计划

golangci-lint 路线图解读:版本化策略、Linter 弃用周期与未来计划 【免费下载链接】golangci-lint Fast linters runner for Go 项目地址: https://gitcode.com/gh_mirrors/go/golangci-lint 本文以仓库中的 roadmap.md 为骨架,系统解读 golangc…

2026/9/20 19:37:35 阅读更多 →
NocoBase低代码实践:TypeScript+Docker构建可维护内部系统

NocoBase低代码实践:TypeScript+Docker构建可维护内部系统

1. 项目概述:为什么一个“自己搭”的内部系统,会越用越顺手?NocoBase 这个名字,第一次听到时我下意识以为是某个小众数据库的变体,直到在团队晨会上看到同事用十分钟拖拽出一个带审批流、权限分级、数据看板的采购申请…

2026/9/20 19:36:35 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →