命令定位
kubectl api-resources 列出当前集群支持的全部资源类型及其元信息:短名、API 组、是否属于命名空间、对应的 Kind。适用平台是 Kubernetes。它回答的是「这个集群里到底有哪些资源、该用哪个名字调用」,写 RBAC 规则、配 CRD、排障时找不到资源别名或分不清命名空间级与集群级资源,都先从这条命令入手最省时间。
基本信息
| 适用平台 | Kubernetes,任意 kubectl 版本 |
|---|---|
| 输出列 | NAME、SHORTNAMES、APIVERSION、NAMESPACED、KIND |
| 补充命令 | kubectl api-versions 只看 API 组与版本列表 |
| 权限要求 | 集群级 discovery 权限,普通用户默认就有 |
典型使用场景
- 确认资源名与缩写:写 YAML 或命令前核对正确的复数名与短名
- 写 RBAC 时区分范围:用 --namespaced=false 列出集群级资源,避免把 Role 写成 ClusterRole
- 核对 API 版本:确认当前集群推荐用哪个 group/version(如 networking.k8s.io/v1)
- 排查 CRD:检查自定义资源是否已正确注册、出现在列表里
- 核对短名冲突:多个 CRD 抢同一个短名时,以这里的输出为准
常用示例
常用示例
kubectl api-resources # 全量资源清单
kubectl api-resources --namespaced=false # 只看集群级资源,写 ClusterRole 用
kubectl api-resources --api-group=apps # 只看 apps 组
kubectl api-resources --verbs=list --namespaced=true # 带指定动词的命名空间级资源
kubectl api-resources | grep -i networkpolicy # 找具体资源
kubectl api-versions | sort # 只看可用的 API 版本输出逐列读法
| 列 | 含义 | 使用注意 |
|---|---|---|
| NAME | 资源的复数名(含部分短名备注) | 写清单时用这个复数名 |
| SHORTNAMES | 命令行可用的缩写 | 不是所有资源都有,如 job、secret 无短名 |
| APIVERSION | 所属 API 组与版本 | 清单里 apiVersion 要与此处推荐版本一致 |
| NAMESPACED | true 表示命名空间级 | false 是集群级,删除时影响面更大 |
| KIND | YAML 里的 kind 值 | 与 apiVersion 必须配对使用 |
CRD 注册成功后其自定义资源会自动出现在这个列表里;如果没出现,先查 CRD 是否 Established,而不是怀疑 kubectl 版本。
同一个 Kind 可能同时存在多个 API 版本(如旧版 extensions/v1beta1 与新版本),清单必须写当前集群推荐的版本,写废弃版本在升级后会直接失败。