- Kubernetes源碼剖析
- 鄭東旭
- 531字
- 2020-07-23 17:12:19
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代碼示例如下:


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

以Deployment資源為例,資源信息描述如下:

在vendor/k8s.io/apimachinery/pkg/runtime/schema包中定義了常用的資源數據結構,如表3-1所示。
表3-1 常用的資源數據結構說明

Group、Version、Resource核心數據結構詳情如圖3-2所示。

圖3-2 Group、Version、Resource核心數據結構詳情
- iOS 9 Game Development Essentials
- Java應用開發與實踐
- Cassandra Design Patterns(Second Edition)
- DevOps Automation Cookbook
- 差分進化算法及其高維多目標優化應用
- Redis Essentials
- 單片機C語言程序設計實訓100例
- OpenGL Data Visualization Cookbook
- Statistical Application Development with R and Python(Second Edition)
- Python青少年趣味編程
- Julia數據科學應用
- 數字媒體技術概論
- 啊哈C語言!:邏輯的挑戰(修訂版)
- Ionic3與CodePush初探:支持跨平臺與熱更新的App開發技術
- Effective C++:改善程序與設計的55個具體做法(第三版)中文版(雙色)