kubernetes之client-go总览

169 阅读2分钟

client-go总览可参考

@TOC

client-go总览

applyconfigurations包

用于构建服务端 Apply requests(类似于kubectl apply 但是kubectl的是客户端) 详情可参考

discovery包

用于发现服务器支持的API 组、版本和资源的方法及服务端支持的swagger api 详情可参考上篇 详情可参考下篇

dynamic包

用于动态生成informer/lister/client等 详情可参考上篇 详情可参考下篇

informers包

用于生成各种gvk对应的informer(注意这里这是针对原生k8s的对象) 详情可参考

kubernetes包

生成原生k8s的对象的client,用于访问kubernetes API(create、update、patch等等)

listers包

从cache.Indexer中获取原生k8s的对象/列表

metadata包

根据metadata信息(包括gvr)获取informer/lister/client

pkg包

用于插件(plugin包)的执行凭证(和apiserver进行tls认证)

pkg包

apis/clientauthentication用于插件(plugin包)的执行凭证(和apiserver进行tls认证),version用于获取系统版本信息(包含git)

plugin包

主要是对接外部插件(azure/gcp/oidc/openstack),获取认证信息(token等)

rest包

主要是提供对接kubernetes rest http(s)相关的基础类/接口,client、config、exec、request等具体实现和构造的基础

restmapper包

获取实现了RESTMapper(对应一个gv下的resources)接口的结构体

scale包

定义获取scale client的结构体,用来get/update/patch scale子资源。scheme包用来定义包括k8s api/extension在内的所有关于scale的type

third_party包

目前是从go library赋值过来的,只是把私有方法改为公共的

tools包

提供给用户使用的包,用来自定义程序

transport包

定义了传输层实体,用于执行request的http(s)请求,读取http conn的stream到response

util包

提供工具类