首页 > 编程语言 >Kubernetes编程——client-go基础—— 深入 API Machinery —— REST 映射

Kubernetes编程——client-go基础—— 深入 API Machinery —— REST 映射

时间:2023-06-30 10:14:19浏览次数:41  
标签:资源类型 映射 Kubernetes REST API GVR

深入 API Machinery —— REST 映射

  GVK 与 GVR 之间的映射关系被称为 REST 映射。

我理解意思是说: 在 Kubernetes 中,RESTMapping(REST 映射)用于将 GroupVersionKind(GVK)与 GroupVersionResource(GVR)之间建立映射关系。

    1. GVK 是 API 对象的唯一标识,包括 API 组、版本和资源类型。
    2. GVR 是 API 资源的标识,包括 API 组、版本和资源类型的名称。

REST 映射是 Kubernetes 提供的 API 功能之一,它负责处理客户端到服务器的 API 请求和响应,并确保请求发送到正确的 API 资源上。通过 REST 映射,客户端可以通过 GVK 来指定要操作的资源类型,然后 REST 映射会将其转换为服务器理解的 GVR 形式。

RESTMapping 对象包含以下属性:

    1. GroupVersionKind (GVK):指定要操作的资源类型的 API 组、版本和类型信息。
    2. GroupVersionResource (GVR):指定要操作的资源类型的 API 组、版本和资源名称信息。
    3. Scope:指定资源的作用范围,可以是 "Cluster" 或 "Namespaced",表示资源是集群范围的还是命名空间范围的。
    4. Kind:表示资源类型的字符串,例如 "Pod"、"Deployment" 等。
    5. APIVersion:表示资源类型的 API 版本,例如 "v1"、"apps/v1" 等。
    6. Resource:表示资源类型的字符串,例如 "pods"、"deployments" 等。

通过 RESTMapping,客户端可以根据 GVK 获取与其关联的 GVR,从而发送正确的 API 请求以操作相应的资源。这对于构建 Kubernetes 客户端或开发 Kubernetes 控制器等应用程序非常有用,因为它们需要与不同的 API 资源进行交互。

需要注意的是,RESTMapping 是根据已知的 Kubernetes API 服务器上的信息生成的,并且可能随着各个 Kubernetes 集群之间的配置和版本而有所不同。因此,要正确地进行 REST 映射,需要通过适当的方式与 Kubernetes API 服务器进行交互,获得有关 GVK 和 GVR 的准确信息。

RestMapper 是一个 Golang 接口,用于请求一个 GVK 所对应的 GVR,以下展示了如何根据给定的 GroupKind 和版本信息创建一个 RESTMapping 的实例:

    import (
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/client-go/rest"
        "k8s.io/client-go/restmapper"
    )

    func GetRestMapping(gk schema.GroupKind, versions ...string) (*restmapper.RESTMapping, error) {
        config := &rest.Config{
            // 配置您的Kubernetes集群连接信息
            // ...
        }

        mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(restmapper.ExtractAPIGroupVersionsOrDie(config)), dynamic.VersionInterfaces)

        groupResources, err := mapper.RESTMapping(gk, versions...)
        if err != nil {
            return nil, err
        }

        if len(groupResources) == 0 {
            return nil, fmt.Errorf("unable to find REST mapping for GroupKind: %v, versions: %v", gk, versions)
        }

        return &groupResources[0], nil
    }

标签:资源类型,映射,Kubernetes,REST,API,GVR
From: https://www.cnblogs.com/zuoyang/p/17515840.html

相关文章

  • 全栈测试开发系列----WebDriver API及对象识别技术(二)---selenium验证码处理的多种实现
    前言对于测试人员而言,不管是进行性能测试还是自动化测试,验证码的处理都是棘手的存在,在WEB应用中,大部分系统在用户登录的时候都要求用户输入验证码,且验证码的种类繁多,如纯数字、纯字母、汉子组合、数学题运算、滑动图标、图片、短信、邮箱、语音等。既然要实现验证码的处......
  • 【Azure 存储服务】记一次调用Storage Blob API使用 SharedKey Authorization出现的40
    问题描述使用AzureStoragBlobRESTAPI上传文件,用SharedKey作为Authorization出现403错误。错误消息b'\xef\xbb\xbf<?xmlversion="1.0"encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Serverfailedtoau......
  • Kubernetes 对象以及部署nginx服务示例(四)
    什么是Kubernetes对象?在k8s中管理员与平台交互的最重要方式之一就是创建和管理Kubernetes对象,对象有助于帮助用户部署应用程序和维护集群。理解Kubernetes对象的另一种方法是将它们视为类实例。每个创建的对象都引用一个预定义的类,该类告诉apiserver如何处理系统资源并......
  • 亚马逊国际获得AMAZON商品详情API接口采集sku商品规格信息列表Java调用演示案例
    ​亚马逊商品详情API接口的作用是获取Lazada电商平台上的某一商品的详情信息,包括商品的名称、销售价格、库存数量、图片、商品描述、品牌、产地、售后保障等信息。开发者可以使用该API接口获取到商品的原始数据,进行分析、筛选等操作。通过该接口获取到的商品详情数据可以结合其......
  • Kubernetes编程——client-go基础—— 深入 API Machinery —— Kind
    深入APIMachinery——Kind 在Kubernetes中,APIMachinery是一个核心的软件库,用于构建Kubernetes的API服务器和控制器。它提供了一些基本的功能,如对象存储、认证鉴权、API请求处理和验证等。 在APIMachinery中,Kind是一个重要的概念。在Kubernetes中,每个资源......
  • 作为用户我该如何调用API 接口获取商品数据
    作为用户,如果你想要获取商品数据,可以通过调用API接口来实现。下面是一些步骤和注意事项,帮助你成功获取商品数据。了解开放平台:首先,你需要了解开放平台,注册一个开发者账号,并创建一个应用。在创建应用时,需要填写一些必要的信息,如应用名称、应用描述等。获取访问权限:在开放平台......
  • Kubernetes编程——client-go基础—— 工作队列(workqueue)
    工作队列(workqueue[wɜːk][kjuː])https://github.com/kubernetes/kubernetes/tree/release-1.27/staging/src/k8s.io/client-go/util/workqueue我理解意思是说:这里说的"工作队列"指的一个数据结构。用户可以按照队列所预定义的顺序向这个队列中添加和取出......
  • 04-ES6语法:默认参数和rest参数
    本文我们分别介绍ES6中的默认参数和rest参数,下面我们分别进行说明和演示。下面是简单的屏幕分享,不爱看文字的同道中人可以看视频。-_-一、默认参数首先,我们先看看在ES5中是如何定义默认参数的方式,代码如下://ES5的默认参数值。functioncreateBox(width,height,color){......
  • C# HttpClient、API访问插件、接口访问
    关于使用插件访问接口.Net版本:NETFramework4.7.2 RestSharp版本:105.2.3.0Post访问 staticstringPostAction(){//公共apiconststringurl="https://api.uomg.com/api/rand.qinghua";//添加api访问......
  • Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
    目录一.系统环境二.前言三.仪表板(Dashboard)简介四.部署Kubernetes仪表板(Dashboard)五.访问Kubernetes仪表板(Dashboard)5.1使用token登录Dashboard5.2对sa账号kubernetes-dashboard授权5.3访问Dashboard六.总结七.附加信息一.系统环境本文主要基于Kubernetes1.21.9和Linux操作......