kubectl explain 是什么
explain 是内置在 kubectl 里的字段手册:它从集群自身的 API 描述信息中读取某类资源在某个层级支持哪些字段、类型是什么、含义如何,因此解释内容与当前集群版本严格对齐,比翻过期博客可靠。写 YAML 时用它逐级确认字段名与嵌套结构,能避免大量“字段名写错却以为是集群问题”的往返。加 --recursive 可以一次性展开全部子字段,代价是输出非常长。
基本信息
| 语法 | kubectl explain <资源>.<字段路径>,用点号逐级深入 |
|---|---|
| 适用平台 | 所有受支持的 kubectl 版本;内容来自当前集群的 API 描述 |
| 递归展开 | --recursive 展开全部子字段,输出很长,建议配合 head 或 grep |
| 指定版本 | --api-version 可指定 API 组版本,用于同名资源多版本并存的情况 |
| 自定义资源 | CRD 是否可 explain 取决于它是否提供结构描述 |
| 输出结构 | 每段包含 KIND、VERSION、FIELD、DESCRIPTION 与 TYPE |
典型使用场景
- 写 YAML 时确认字段名与层级,尤其是探针、策略、亲和性这类嵌套字段
- 判断某字段是字符串、数组还是对象,避免括号与缩进写错
- 核对自定义资源的可用字段,先看它有没有提供结构描述
- 排查“字段被忽略”的问题:确认该版本是否真的支持这个字段
- 学习某类资源的全貌,用递归展开配合 grep 快速定位
使用示例
使用示例
kubectl explain deployment.spec.strategy # 查滚动更新策略字段
kubectl explain pod.spec.containers.livenessProbe # 查探针支持的字段
kubectl explain deploy.spec.template.spec --recursive | head -60 # 递归展开,注意刷屏
kubectl explain ingress --api-version=networking.k8s.io/v1 # 指定 API 组版本
kubectl explain cronjob.spec.jobTemplate.spec --recursive | grep -A3 -i concurrency # 定位并发策略字段
kubectl explain networkpolicy.spec.ingress # 查网络策略的入向规则结构输出段读法
| 字段 | 含义 | 怎么用 |
|---|---|---|
| KIND | 资源类型 | 确认查的是不是同一类对象 |
| VERSION | API 版本 | 与 YAML 里的 apiVersion 对齐 |
| FIELD | 字段名 | 点号路径逐级拼接使用 |
| DESCRIPTION | 字段含义说明 | 看语义与默认行为描述 |
| TYPE | 数据类型 | 判断是 string、array 还是 object |
explain 的内容来自集群自身的 API 描述,比外部文档更贴近当前版本:字段查不到,基本可以断定该版本确实没有这个字段。
递归输出适合配合 grep 使用,例如先展开再搜关键字,比从头读几十屏快得多。