系列文章目录

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.源码分析

github 地址

// 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 数据结构,所以要了解其设计原理,并且可以做到使用它。

参考

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐