Kubernetes 核心数据结构GVR

本文解析了Kubernetes中的GVR(GroupVersionResource)数据结构,介绍了其组成、源码实现以及如何通过实例展示。掌握GVR是理解K8s API体系的关键,对于开发者操作和源码阅读至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

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

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k8s-open

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值