首页/云/Kubernetes 速查/kubectl get -o yaml/json 导出资源
kubectl 基础56 条

kubectl get -o yaml/json 导出资源

把资源的完整对象(含 spec、status、metadata)导出为 YAML 或 JSON,是备份配置、分析字段结构、改造清单的常用起点。

Kubernetes 速查云更新于 2026-10-13

导出完整对象是什么

把查询结果输出为 YAML 或 JSON,得到的是资源的完整对象,包含定义、运行状态与元数据三部分。它是备份配置、分析字段结构、改造清单的常用起点:先导出,再看清楚哪些字段是你要的,哪些是集群自己写上去的运行时信息。

哪些字段不能回灌

导出结果里混着大量运行态字段:状态段、资源版本、唯一标识、创建时间戳。直接拿导出文件重新提交,轻则报冲突,重则把无关字段覆盖回现网。稳妥做法是只保留定义与关键元数据,状态段整体删掉,做成模板再纳入版本管理。

基本信息

适用环境任何 Kubernetes 发行版,主流资源类型都支持
语法kubectl get <资源> <名称> -o yaml|json
输出内容定义、运行状态、元数据三部分
保留字段重定向到文件即可长期保存,注意文件权限
敏感数据密钥类对象的内容是编码后的明文,分享前必须脱敏
常见后缀文件扩展名与实际内容无关,格式由参数决定

典型使用场景

  • 备份关键配置:发布前导出工作负载与服务定义,出问题可对照回滚
  • 生成清单草稿:导出现网对象,删掉运行时字段后作为新环境的模板
  • 分析字段结构:确认某个参数在对象里的确切位置与默认值
  • 排查异常:状态段里的条件与详情比列表输出完整得多
  • 对比环境差异:两个集群导出同名对象后逐段比对,找出配置漂移
  • 审计资源占用:批量导出后统计镜像版本、探针与资源声明情况

常用示例

常用示例
kubectl get deploy web -n prod -o yaml > web.yaml      # 导出工作负载
kubectl get svc web -o yaml | grep -v 'resourceVersion\|uid\|creationTimestamp'   # 过滤运行态字段
kubectl get cm app-config -o yaml > app-config.bak.yaml  # 备份配置对象
kubectl get pod web-x -o json | python -m json.tool     # 结构化查看 JSON
kubectl get ingress web-ing -o yaml                      # 导出入口规则
kubectl get deploy web -o yaml --show-managed-fields=false   # 隐藏托管字段,便于对比

导出后要处理的字段

字段为什么处理处理方式
status运行时状态,只读且随环境变化整体删除
metadata.resourceVersion版本标记,重新提交会冲突删除
metadata.uid集群生成的唯一标识删除
metadata.creationTimestamp创建时间,重新提交无意义删除
metadata.annotations 中的托管信息由工具写入的追踪信息按需清理
data 里的内容可能含敏感信息分享前脱敏
密钥类对象导出后内容只是编码并非加密,直接贴到文档或提交到代码仓库等同于泄露。
跨版本迁移时留意接口版本变化:导出的接口版本在新集群可能已废弃,需要按新版本改写后再提交。

易错点

  • 把导出的完整对象直接提交:状态段与版本标记导致请求被拒,或把无关字段写回生产
  • 用导出文件当作唯一备份手段:它只覆盖集群里已有的对象,缺少模板与版本历史,恢复能力有限
  • 导出密钥对象后随手分享:内容等同于明文,造成凭据泄露
  • 只导出单个资源忽略关联对象:服务依赖的配置对象、密钥、存储声明不在其中,换环境时依然跑不起来

数据来源与参考

  • Kubernetes 官方文档 · kubectl get
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌