K8S 四种client简单介绍

一、K8S四种client简单介绍

client-go支持RESTClient、ClientSet、DynamicClient、DiscoveryClient四种客户端与Kubernetes Api Server进行交互

RESTClient客户端

restclient客户端为其他客户端的父类

RESTClient案例

clientcmd.BuildConfigFromFlags的返回值config可以进行一些处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 从本机加载kubeconfig配置文件,因此第一个参数为空字符串
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
 
// kubeconfig加载失败就直接退出了
if err != nil {
    panic(err.Error())
}
 
// 参考path : /api/v1/namespaces/{namespace}/pods
config.APIPath = "api"
// pod的group是空字符串
config.GroupVersion = &corev1.SchemeGroupVersion
// 指定序列化工具
config.NegotiatedSerializer = scheme.Codecs
 
// 根据配置信息构建restClient实例
restClient, err := rest.RESTClientFor(config)
if err!=nil {
    panic(err.Error())
}
 
// 保存pod结果的数据结构实例
result := &corev1.PodList{}
 
//  指定namespace
namespace := "kube-system"
// 设置请求参数,然后发起请求
// GET请求
err = restClient.Get().
//  指定namespace,参考path : /api/v1/namespaces/{namespace}/pods
    Namespace(namespace).
// 查找多个pod,参考path : /api/v1/namespaces/{namespace}/pods
    Resource("pods").
        // 指定大小限制和序列化工具
    VersionedParams(&metav1.ListOptions{Limit:100}, scheme.ParameterCodec).
    // 请求
    Do(context.TODO()).
    // 结果存入result
    Into(result)

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实现的



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted @   南昌拌粉的成长  阅读(1165)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示