系列文章目录
Kubernetes 核心数据结构GVR - Group
Kubernetes 核心数据结构GVR - Version
Kubernetes 核心数据结构GVR - Resource
概述
Kubernetes 是一个完全以资源为中心的系统。其本质是一个资源控制系统,注册、管理、调度资源并维护资源的状态。
一、GVR 是什么?
Kubernetes 将资源进行分组和版本化,形成了 Group(资源组)、Version(资源版本)、Resource(资源)。以下简称为 GVR。
- Group:资源组,在 Kubernetes API Server 中也称其为 APIGroup。
- Version:资源版本,在 Kubernetes API Server 中也称其为 APIVersions。
- Resource:资源,在 Kubernetes API Server 中也称其为 APIResource。
二、GVR 数据结构
1.源码分析
// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion
// to avoid automatic coercion. It doesn't use a GroupVersion to avoid custom marshalling
type GroupVersionResource struct {
Group string
Version string
Resource string
}
以 Deployment 资源为例
schema.GroupVersionResource {
Group "apps",
Version "v1",
Resource "deployments",
}
Kubernetes 系统支持多个 Group,每个 Group 支持多个 Version,每个 Version 支持多个 Resource。
2.示例
代码如下:
package main
import (
"fmt"
"k8s.io/apimachinery/pkg/runtime/schema"
)
func main() {
gvr := schema.GroupVersionResource{
Group: "apps",
Version: "v1",
Resource: "deployments",
}
fmt.Println(gvr)
}
go.mod 代码如下:
go 1.18
require (
k8s.io/api v0.21.0
k8s.io/apimachinery v0.21.0
)
输出结果:apps/v1, Resource=deployments
总结
了解 GVR 核心数据结构,能够对我们后续学习 Kubernetes 源码打好基础,后续在很多地方,都会出现 GVR 数据结构,所以要了解其设计原理,并且可以做到使用它。