本文基于《Kubernetes源码剖析》整理,结合k8s v1.22.0代码分析
概述
k8s声明式API的思想,以资源描述对象为中心,声明对象的spec
,通过系统维持status
状态始终是用户声明的资源描述spec
,具体可以参考理解k8s资源对象。k8s是一个完全以资源为中心的系统,本质是一个资源控制系统–注册、管理、调度资源并维护资源的状态。k8s将资源进行再次分组和版本化,形成Group(资源组)、Version(资源版本)、Resource(资源)【其中kind表示资源种类】
资源描述对象
资源描述对象必须的声明元素如下:
- apiVersion:kubernetes API的版本,包含
<group>/<version>
- kind:kubernetes对象的类型
- metadata:唯一标识该对象的元数据,包括name,UID,可选的namespace
- spec:标识对象的详细信息,不同对象的spec的格式不同,可以嵌套其他对象的字段。
说明:
-
<group>/<version>/<resource>
表示唯一一种资源对象,例如apps/v1/deployment
。 -
每种资源对象都有增删改查的操作方法。具体可包含8类操作接口:
-
增:create
-
删:delete,deletecollection
-
改:update,patch
-
查:get,list,watch
- 除了内置的k8s资源对象,可用CRD自定义资源对象,在k8s系统中使用。
示例:
1 | apiVersion: apps/v1 |
资源对象分类及代码目录
资源对象通用结构
赞赏一下