![Kubernetes源码剖析](https://wfqqreader-1252317822.image.myqcloud.com/cover/962/32435962/b_32435962.jpg)
3.2 ResourceList
Kubernetes Group、Version、Resource等核心数据结构存放在vendor/k8s.io/apimachinery/pkg/apis/meta/v1目录中。它包含了Kubernetes集群中所有组件使用的通用核心数据结构,例如APIGroup、APIVersions、APIResource等。其中,我们可以通过APIResourceList数据结构描述所有Group、Version、Resource的结构,以最常用的Pod、Service、Deployment资源为例,APIResourceList Example代码示例如下:
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_72_1.jpg?sign=1739276259-l2x9reLN0edknOfcbPRI1srOYEEMOkIQ-0-f94c5cfeb7def0e1cc3f7992f303c10c)
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_73_1.jpg?sign=1739276259-6patvlq2mOY6jqBv76C4FHyPleR8CN9I-0-8bd7d961d9f2a9f989d6a591d76e5659)
Kubernetes的每个资源可使用metav1.APIResource结构进行描述,它描述资源的基本信息,例如资源名称(即Name字段)、资源所属的命名空间(即Namespaced字段)、资源种类(即Kind字段)、资源可操作的方法列表(即Verbs字段)。
每一个资源都属于一个或多个资源版本,资源所属的版本通过metav1.APIVersions结构描述,一个或多个资源版本通过Versions []string字符串数组进行存储。
在APIResourceList Example代码示例中,通过GroupVersion字段来描述资源组和资源版本,它是一个字符串,当资源同时存在资源组和资源版本时,它被设置为<group>/<version>;当资源不存在资源组(Core Group)时,它被设置为/<version>。可以看到Pod、Service资源属于v1版本,而Deployment资源属于apps资源组下的v1版本。
另外,可以通过Group、Version、Resource结构来明确标识一个资源的资源组名称、资源版本及资源名称。Group、Version、Resource简称GVR,在Kubernetes源码中该数据结构被大量使用,它被定义在vendor/k8s.io/apimachinery/pkg/runtime/schema中。代码示例如下:
代码路径:vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_73_2.jpg?sign=1739276259-mCp3VYqZVarbsb8ka15bsWLqEs6cGXfz-0-cab9263df65aa5d61afe18833975c78f)
以Deployment资源为例,资源信息描述如下:
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_74_1.jpg?sign=1739276259-hAKqvNVgRfC9f6OCvRPsxNoChEA6Xno8-0-d1d34fe32a6e7d26f8574a574f47faac)
在vendor/k8s.io/apimachinery/pkg/runtime/schema包中定义了常用的资源数据结构,如表3-1所示。
表3-1 常用的资源数据结构说明
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_74_2.jpg?sign=1739276259-V8ck2KydxlM8WSXHhQpHO8hWGP2wlBSh-0-29d73b66ac5311ab9903f0a3b81813aa)
Group、Version、Resource核心数据结构详情如图3-2所示。
![](https://epubservercos.yuewen.com/FF83E6/17517091906682706/epubprivate/OEBPS/Images/38914_74_3.jpg?sign=1739276259-2VSVVgmqAbjw7DYPipJoRaUTAUkJAZKY-0-f9b9348de5a2382155704a692ad65a1f)
图3-2 Group、Version、Resource核心数据结构详情