首页/云/云与容器速查/kubectl -o 输出格式(yaml/jsonpath/custom-columns)
Kubernetes68 条

kubectl -o 输出格式(yaml/jsonpath/custom-columns)

把资源按需输出:yaml/json 用于查看完整对象,jsonpath 与 custom-columns 用于脚本取字段。取状态、IP、镜像版本这类信息比 grep 稳得多。

云与容器速查云更新于 2026-10-13

kubectl -o 输出格式是什么

-o 参数决定 kubectl get 等命令的输出形态:yaml 与 json 输出完整对象定义,适合查看结构与保存快照;jsonpath 与 custom-columns 用于精确取字段,写脚本或做批量检查时比 grep 稳定得多;name 输出 kind/name 形式,方便接管道进一步处理。日常取状态、IP、镜像版本这类信息,用 jsonpath 和自定义列比肉眼翻表格更可靠。

基本信息

yaml / json-o yaml 查看完整定义(含 status),适合对比与留档
jsonpath-o jsonpath='{.items[*].metadata.name}',支持 range 遍历
custom-columns-o custom-columns=名字:.metadata.name,节点:.spec.nodeName
name-o name 输出 kind/name 形式,便于管道传递
排序与筛选--sort-by 配合字段使用,复杂需求交给 jq 处理

典型使用场景

  • 批量导出资源清单留档,或对比变更前后的对象定义
  • 脚本中稳定提取字段(Pod IP、节点、镜像版本)做巡检与报表
  • 发布核对:确认 Deployment 中实际运行的镜像 tag 与预期一致
  • 排查时挑出特定状态的资源清单,再逐个 describe 深入
  • 把资源导出为 yaml 作为模板,修改后重新应用

实用示例

实用示例
kubectl get pods -o custom-columns=名字:.metadata.name,IP:.status.podIP,节点:.spec.nodeName
kubectl get deploy web -o jsonpath='{.spec.template.spec.containers[*].image}'
kubectl get pods -o name | head
kubectl get pods -o yaml > pods.yaml   # 完整定义留档
kubectl get pods --sort-by=.status.startTime -o wide

输出格式选择

格式输出内容适用场景
-o wide表格加额外列(IP、节点)人工快速浏览
-o yaml / json完整对象定义留档、对比、改造成模板
-o jsonpath按路径取字段脚本提取单个或少量字段
-o custom-columns自选列的输出表巡检报表、多字段对照
-o namekind/name 列表接管道做批量操作
jsonpath 里用 {range .items[*]}…{end} 做遍历,注意加 -n 指定命名空间;当需求变复杂(多字段组合、条件过滤)时,直接用 -o json 交给 jq 处理更省事。
用 -o name 或 jsonpath 得到清单后接批量删除时要格外谨慎:先不加 | xargs 跑一遍确认输出,再执行删除,选择器写宽一点就是一次批量误操作。
输出格式也能用于提交前的干跑校验:kubectl create -f x.yaml --dry-run=client -o yaml 会打印将要提交的对象内容,用来确认字段拼写与嵌套层级,避免带着错误字段直接打到集群上;结合 diff 还能对比线上对象与本地模板的差异。

易错点

  • jsonpath 表达式被 shell 展开:整条用单引号包住最稳妥,否则大括号与星号会被提前处理
  • custom-columns 的列名包含空格或中文时显示错位,脚本解析直接崩溃
  • 忘了指定命名空间,取到的清单为空,误判资源不存在
  • -o yaml 输出的内容直接当模板回灌:其中残留的 status 与 uid 等字段会导致应用失败

数据来源与参考

  • Kubernetes Docs:kubectl JSONPath Support
  • Kubernetes Docs:kubectl get

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌