• Client-go学习(1)


    GVR和GVK

    kubernetes API是通过Http协议以RESTful的形式提供的,同时支持JSON和Protobuf的数据格式,Protobuf是为了方便集群内部调用而支持的。我们自己平时调用kubernetes接口,一版都是使用json数据格式。
    在 kubernetes API中一版使用GVR或GVK来区分特定的资源,更具不同的分组,版本及资源,进行URL的定义,有了分组和多版本的支持,即便是后续的版本中,需要去掉资源对象的某些字段或者重构API资源,也可以保证版本之间的兼容性。
    kubernetes API的分组可以分为无组名资源组和有组名资源组,无组名资源组也被称为核心资源组Core Group
    有组名资源组:
    在这里插入图片描述
    无组名资源组:
    在这里插入图片描述

    GVR/GVK含义

    G(Group):资源组,包含一组资源操作的集合。
    V(version):资源版本,用于区分不同API的稳定程度及兼容性。
    R(Resource):资源信息,用于区分不同的资源API。
    K(Kind):资源对象的类型,每个资源对象都需要Kind来区分他自身代表的资源类型。

    一般在接口调用的时候,我们只需要知道GVR即可。通过GVR操作对应的资源对象。
    通过GVR组成RESTful API请求路径,例如,针对apps/v1下面的Deployment的RESTful API请求路径如下。

    GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}
    
    • 1

    GVK相反通过GVK信息则可以获取要读取的资源对象的GVR,进而构建RESTful API请求获取对应的资源。这种GVK与GVR的映射叫做RESTMapper
    RESTMapper其主要作用是在ListerWatcher时,根据Schema定义的类型GVK解析出GVR,向APIServer发起HTTP请求获取资源,然后watch。

    client-go

    client-go是负责与kubernetes APIServer服务进行交互的客户端库,利用Client-go与Kubernetes APIServer进行交互访问,由此对k8s中的各类资源对象进行管理操作,包括内置的资源对象及CRD。
    client-go不仅被k8s进行使用,其他围绕k8s的生态也被大量使用,例如:kubectl ETCD-operator等。
    client-go一共提供了4种与kubernetes APIServer交互的客户端对象,分别为RESTClientDiscoveryClientClientSetDynamicClient
    RESTClient::最基础的客户端,主要对HTTP请求进行了封装,支持json和protobuf格式的数据。
    DiscoveryClient:发现客户端,负责发现APIServer支持的资源组、资源版本和资源信息。
    ClientSet:负责操作k8s内置的资源对象,比如:pod,service。
    DynamicClient:动态客户端,可以对任意的k8s资源对象进行通用操作,包括CRD。
    在这里插入图片描述

  • 相关阅读:
    Spring表达式语言(SPEL)学习(03)
    Springboot毕设项目绿色生鲜5954z(java+VUE+Mybatis+Maven+Mysql)
    「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(一)
    React 使用JSX或者TSX渲染页面
    Linux Makefile配置问题
    力扣 215. 数组中的第K个最大元素
    hello react
    全球农业经济论坛 丰收节贸促会-万祥军:产业链解决中国方案
    [非线性控制理论]8_三种鲁棒控制器的比较
    mysql转sqlite3实战+部署sqlite3应用
  • 原文地址:https://blog.csdn.net/passnetY/article/details/126176514