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实现的
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具