1. 概述
在使用k8s进行服务的部署过程中我们会使用到Deployment、Service、Pod等资源,在 yaml 文件中我们需要指定对应的 API 版本,我们可以通过访问相应的接口来管理相应的资源信息,在 k8s 中为了提高 API 的可扩展性,采用了 API Groups 进行标识这些接口,在 client-go 源码中就是通过指定的 API Groups 来访问 k8s 集群的,这里向大家介绍 API Groups 都有哪些,希望对你有帮助。
2. 分组
k8s的api以层级结构组织在一起,每个api群组表现为一个以/apis为根路径的rest路径,不过核心群组core有一个专用的简化路径“/api/v1”.目前,常用的api群组分为两类:
-
核心群组 或core API GROUP:rest路径为/api/v1,在资源的配置信息apiversion字段中引用时
不指定路径
,而仅给出版本,如“apiVersion:v1”。
在权限定义rules: - apiGroups: [""] //空字符串就是指Core API GROUP resources: ["pod"]
-
命名的群组:rest路径为
/apis/$GROUP_NAME/$VERSION
,例如/apis/apps/v1,它在apiversion字段中引用的格式为:“apiVersion:$GROUP_NAME/$VERSION
”,例如 apiVersion: batch/v1
2.1. Core Groups(核心组)
该分组也可以称之为 Legacy Groups,作为 k8s 最核心的 API ,其特点是没有组的概念,例如 “v1”,在资源对象的定义中表示为 “apiVersion: v1”,属于核心组的资源主要有下面几种:
- Container
- Pod
- ReplicationController
- Endpoint
- Service
- ConfigMap
- Secret
- Volume
- PersistentVolumeClaim
- Event
- LimitRange
- PodTemplate
- Binding
- ComponentStatus
- Namespace
- Node
2.2. 具有分组信息的 API
命名的群组:rest路径为/apis/$GROUP_NAME/$VERSION
,例如/apis/apps/v1,它在apiversion字段中引用的格式为:“apiVersion:$GROUP_NAME/$VERSION
”,例如 apiVersion: batch/v1
例如 “apiVersion: batch/v1”,常见的 Group 及资源主要有下面几种:
apps/v1
-
DaemonSet
-
Deployment
-
StatefulSet
-
ReplicaSet
batch/v1 -
Job
batch/v1beta -
CronJob
参考
k8s资源对象及API群组