Kubernetes 官方文档怎样识别已弃用 API
Kubernetes 的 API 弃用不是看到一个 v1beta1 就直接改成 v1。在规模较大的集群里,YAML、控制器、脚本和旧版客户端可能分别调用不同入口,真正需要确认的是:哪个 group/version/resource 被调用、它将在什么版本停止服务、迁移后是否有字段语义变化。
官方地址:https://kubernetes.io/docs/reference/using-api/deprecation-guide/
最稳妥的判断顺序是“官方文档定范围,Warning 定请求,审计和指标定调用面”。这样得到的是一份可交给迁移负责人的证据清单,而不是只在仓库里搜索字符串。
先把弃用问题从版本表中圈出来
官方 Deprecated API Migration Guide 按 Kubernetes 版本列出停止服务的 API,并给出替代版本和 notable changes。先记录四个字段:API group、version、resource、removed release。比如 batch/v1beta1 的 CronJob 在 v1.25 停止服务,迁移目标是 batch/v1;Ingress 的旧版本迁移还伴随 pathType 必填等语义变化。
这一步解决的是“文档上已经知道什么”,但不能证明你的集群仍在使用它。不要把历史清单里的旧 apiVersion 当成线上调用证据,也不要因为对象已经存储过就认为旧 endpoint 还在被访问。

用响应 Warning 找到真实请求
Kubernetes 从 1.19 开始,对已弃用 REST API 的请求返回 Warning 响应头。它适合在客户端、网关或 API 调试链路中快速确认“这次请求确实命中了弃用接口”。下面的示例只读取接口,不修改对象:
# 读取资源接口的响应头,保留 Warning 以便判断是否命中弃用 API kubectl get --raw='/apis/batch/v1beta1/cronjobs' -v=6 2>&1 | grep -i 'warning' # 也可以在客户端日志中记录 group、version 和 resource,方便回溯调用方 # 生产环境不要把完整 Authorization 头或敏感对象内容写入日志
如果没有看到 Warning,只能说明这次请求没有返回该提示,不能证明整个集群没有旧客户端。批量控制器、定时任务和外部集成往往不会经过你正在观察的那条命令。
让审计事件给出调用身份和移除版本
启用 Kubernetes Audit 后,可以在审计事件里查找 k8s.io/deprecated: "true"。如果官方为该 API 标出了目标移除版本,还会出现 k8s.io/removed-release。审计记录能把资源请求与 user、userAgent、sourceIPs 等字段联系起来,适合定位“是谁还在调用”。
# 从导出的审计 JSONL 中筛选已弃用 API 请求
# jq 只读取标记字段,避免把完整对象内容带入排查输出
jq 'select(.annotations["k8s.io/deprecated"] == "true")
| {user: .user.username, verb: .verb, uri: .requestURI,
removed: .annotations["k8s.io/removed-release"]}' audit.log
# 对输出按 userAgent 和 requestURI 汇总,帮助拆分控制器、脚本和人工客户端
# 汇总前先确认审计策略确实记录了 requestMetadata 与 requestObject 所需字段
审计证据的价值在于身份和时间范围,但它受审计策略、保留周期和采集链路影响。若历史窗口不完整,应把结论写成“在观察窗口内未发现”,不要写成绝对的“没有调用”。
用指标补齐集群级调用面
API Server 会暴露 apiserver_requested_deprecated_apis 指标。它包含 group、version、resource、subresource 和 removed_release 标签,可与 apiserver_request_total 按维度关联。指标适合回答“哪些资源仍有流量”,审计更适合回答“哪个身份发起了请求”,两者不要混为一谈。
# 查询仍有请求的已弃用 API,先看移除版本和资源维度 apiserver_requested_deprecated_apis > 0 # 只聚合调用量,避免面板被 userAgent 等高基数标签放大 sum by (group, version, resource, subresource, removed_release) ( apiserver_requested_deprecated_apis )
若指标存在但审计里找不到身份,通常是观察窗口、审计策略或指标抓取范围不同;若 Warning、审计和指标都没有信号,也只代表当前采集面未发现证据。

把识别结果变成迁移清单
建议每个弃用项保留一行记录:group/version/resource、来源证据、调用身份或 userAgent、removed_release、目标 API、字段差异、负责人和回归窗口。这样可以把“文档已弃用”与“线上仍在调用”分开排优先级。
| 证据 | 能确认什么 | 不能单独确认什么 |
|---|---|---|
| 官方弃用指南 | 停止服务版本、替代版本、字段变化 | 你的集群是否正在调用 |
| Warning 响应头 | 某次请求命中了弃用接口 | 所有调用方都已覆盖 |
| 审计注解 | 请求身份、URI 和移除版本线索 | 未记录窗口内的调用 |
| Prometheus 指标 | 集群范围的资源流量线索 | 具体调用身份 |
上线前用禁用旧 API 做一次演练
迁移完成后,可以在隔离环境按官方迁移指南提供的方式,用 API Server 的 --runtime-config= 禁用目标旧版本,模拟未来停止服务的结果。演练的重点不是“命令成功”本身,而是确认控制器、部署脚本和外部客户端都能切换到新版本。
# 在隔离集群的 API Server 参数中禁用一个已完成迁移的旧版本 # 先确认回滚方案和控制面配置来源,再重启或滚动更新 API Server --runtime-config=admissionregistration.k8s.io/v1beta1=false # 演练后检查控制器日志、审计事件和发布流水线结果 # 发现旧调用时回到调用方修复,不要只改数据库中的已存对象
最终的完成标准是:文档中的替代版本已确认,旧请求在 Warning、审计和指标观察窗口内归零,禁用旧版本的隔离演练没有新的调用方。存储对象是否能被新版本读取,还要根据具体资源的官方迁移说明单独确认。
几个容易混淆的问题
看到 v1beta1 就一定要立刻迁移吗?
不应只按字符串判断。要先对照官方弃用指南确认该资源的停止服务版本,再结合集群实际请求证据排优先级;Alpha、Beta 和 GA 的生命周期规则也不同。
没有 Warning 是否代表可以不管?
不是。Warning 是单次请求证据,批处理、控制器或外部客户端可能没有出现在你的观察路径中,应该继续看审计和指标。
kubectl convert 能替代迁移评审吗?
不能。官方文档明确提示转换可能使用不理想的默认值,具体资源仍需查 API reference 和迁移说明;转换工具本身也不是默认安装的 kubectl 子命令。
识别已弃用 API 的关键不是记住一张版本表,而是建立“官方定义—实际请求—调用身份—迁移验证”的闭环。规模越大,越应该把四类证据分开保存,再按移除版本和调用方责任推进迁移。
OpenTelemetry Collector 怎样选择接收器和导出器
- 上一篇
- OpenTelemetry Collector 怎样选择接收器和导出器
- 下一篇
- CNCF 项目采用者怎样查找真实生产案例
-
- 科技周边 · 业界新闻 | 30分钟前 |
- SPIFFE 与 SPIRE 怎样配合工作负载身份
- 310浏览 收藏
-
- 科技周边 · 业界新闻 | 33分钟前 | 云原生 · CNCF 采用者 生产案例 云原生案例 End User Community
- CNCF 项目采用者怎样查找真实生产案例
- 106浏览 收藏
-
- 科技周边 · 业界新闻 | 39分钟前 |
- OpenTelemetry Collector 怎样选择接收器和导出器
- 162浏览 收藏
-
- 科技周边 · 业界新闻 | 40分钟前 |
- Gateway API v1.6 的 TCPRoute 和 UDPRoute 有哪些变化
- 210浏览 收藏
-
- 科技周边 · 业界新闻 | 44分钟前 |
- CNCF 沙箱项目进入孵化阶段通常意味着什么
- 290浏览 收藏
-
- 科技周边 · 业界新闻 | 45分钟前 | 容器 · 兼容性 · OCI image-spec container-runtime
- OCI 镜像规范怎样影响不同容器运行时兼容性
- 334浏览 收藏
-
- 科技周边 · 业界新闻 | 47分钟前 | 可观测性 · Logs OpenTelemetry Metrics traces
- OpenTelemetry 怎样理解 traces metrics logs 的关系
- 166浏览 收藏
-
- 科技周边 · 业界新闻 | 47分钟前 |
- GitHub Actions 怎样让工作流按锁定提交运行
- 394浏览 收藏
-
- 科技周边 · 业界新闻 | 50分钟前 |
- CNCF 怎样查看一个项目的成熟度和治理状态
- 188浏览 收藏
-
- 科技周边 · 业界新闻 | 54分钟前 | 云原生 · kubernetes · Kubernetes 发布说明 Feature Gates GA
- Kubernetes 发布说明怎样判断一个特性是否稳定
- 340浏览 收藏
-
- 科技周边 · 业界新闻 | 9小时前 |
- Go 1.27 response file 怎样理解工具链参数
- 238浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 694次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 706次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 775次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 735次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 568次使用
-
- 蒙面演唱引争议,旺仔小乔被平台封禁
- 2025-08-08 501浏览
-
- openGauss向量驱动升级,RAC多写突破内核
- 2025-07-30 501浏览
-
- 安普瑞斯工厂放假,电芯供应受影响
- 2025-07-04 501浏览
-
- 农产品APP开发优势与功能全解析
- 2025-04-30 501浏览
-
- 开店省钱妙招,外卖系统同城配送运营攻略
- 2025-04-26 501浏览

