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}

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。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值