k8s 中资源清单中 apiVersion 字段详解
注意:



在 Kubernetes 中,apiVersion 字段用于指定 Kubernetes API 的组和版本。为了便于扩展和管理,Kubernetes 将 API 分成了不同的API 组(API Group)。
1. 核心组(Core Group)
核心组是 Kubernetes 最基础、最核心的一组 API,包含了 Pod、Service 等最原始的资源。
- 特点:没有显式的组名(Group 为空)。
- API 路径:
/api/v1 - YAML 写法:在
apiVersion中直接写版本号v1。 - 常见资源:Pod, Service, Node, Namespace, ConfigMap, Secret, PersistentVolume 等。
2. 命名组(Named API Groups)
随着 Kubernetes 的发展,为了支持更多功能(如应用管理、网络、批处理等),引入了命名组机制。
- 特点:有明确的组名,按功能划分。
- API 路径:
/apis/{组名}/{版本} - YAML 写法:在
apiVersion中写组名/版本。 - 常见资源:Deployment (apps 组), Ingress (networking.k8s.io 组), Job (batch 组) 等。
常见 API 组与资源对照表
| API 组 (Group) | apiVersion 写法 | 常见资源 (Kind) |
|---|---|---|
| 核心组 (Core) | v1 (core/v1) |
Pod, Service, Node, ConfigMap, Secret, Namespace |
| 应用管理 (apps) | apps/v1 |
Deployment, StatefulSet, DaemonSet, ReplicaSet |
| 批处理 (batch) | batch/v1 |
Job, CronJob |
| 网络 (networking) | networking.k8s.io/v1 |
Ingress, NetworkPolicy |
| 存储 (storage) | storage.k8s.io/v1 |
StorageClass, CSI 相关资源 |
| 权限控制 (rbac) | rbac.authorization.k8s.io/v1 |
Role, ClusterRole, RoleBinding |
实际应用中的注意事项
- RBAC 权限配置:
在编写 Role 或 ClusterRole 时,核心组的资源需要用空字符串""来表示。
- 访问 Pod(核心组):
apiGroups: [""] - 访问 Deployment(apps 组):
apiGroups: ["apps"]
-
API 版本弃用:
Kubernetes 会不断演进,旧的 API 版本(如extensions/v1beta1)会被弃用并最终移除。在升级集群版本时,务必检查 YAML 文件中的apiVersion是否依然受支持,以免导致资源创建失败。 -
如何查看集群支持的 API 组:
你可以直接在终端运行以下命令,查看当前集群支持的所有 API 组和版本:
kubectl api-versions

或者查看具体的资源属于哪个 API 组:
kubectl api-resources

欢迎来撩 : 汇总all
