K8S四种client简单介绍
client-go支持RESTClient、ClientSet、DynamicClient、DiscoveryClient四种客户端与Kubernetes Api Server进行交互
RESTClient客户端
restclient客户端为其他客户端的父类
ClientSet客户端
ClientSet是在RESTClient的基础上封装了对Resource和Version的管理方法。每一个Resource可以理解为一个客户端,而ClientSet是多个客户端的集合,每一个Resource和
Version都以函数的方式暴露出来。ClientSer仅能访问Kubernetes自身内置的资源,不能直接访问CRD自定义的资源
DynamicClient客户端
DynamicClient是一个动态客户端,可以对任意Kubernetes资源进行RESTFful操作,包括CRD自定义资源。DynamicClient与ClientSet操作类似,同样是封装了RESTClient。
DiscoveryClient客户端
DiscoveryClient是发现客户端,主要用于发现Kubernetes API Server所支持的资源组、资源版本、资源信息。除此之外,还可以将这些信息存储到本地,用户本地缓存,以减轻对Kubernetes API Server访问的压力。
kubectl的api-versions和api-resources命令输出也是通过DiscoversyClient实现的