![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
client-go
文章平均质量分 69
client-go
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
这个作者很懒,什么都没留下…
展开
-
client-go开发示例
【代码】client-go开发示例。原创 2023-04-03 23:25:04 · 430 阅读 · 0 评论 -
client-go dynamic包
用于动态生成informer/lister/client等。原创 2023-03-21 22:10:51 · 486 阅读 · 0 评论 -
client-go discovery包源码解析
discovery包主要用来发现服务器支持的API组、版本和资源的方法,及服务端支持的api。原创 2023-03-19 05:27:48 · 670 阅读 · 4 评论 -
client-go源码-applyconfigurations
用于构建服务端 Apply(类似于kubectl apply 但是kubectl的是客户端),通过源码看起来和kubernetes/api的各种类型和结构相似。原创 2023-03-15 23:59:19 · 147 阅读 · 0 评论 -
client-go源码包总览
applyconfigurations包用于构建服务端 Apply requests(类似于kubectl apply 但是kubectl的是客户端)discovery包用于发现服务器支持的API 组、版本和资源的方法及服务端支持的swagger apidynamic包用于动态生成informer/lister/client等informers包用于生成各种gvk对应的informer(注意这里这是针对原生k8s的对象)kubernetes包生成原生k8s的对象的client,用于访问k原创 2023-03-15 23:58:13 · 158 阅读 · 0 评论 -
client-go dynamicClient解析
dynamicClient为各种类型的资源都提供统一的操作API,资源需要包装为Unstructured数据结构内部使用了Restclient与kubernetes交互;原创 2023-03-15 01:04:08 · 410 阅读 · 0 评论 -
client-go——WorkQueue源码分析(八)
本文介绍对WorkQueue组件进行分析说明。前面我们把Informer的整个流程完整分析了一遍,我们可以通过监听对象的变化,将资源对象写入到事件处理器的回调函数中,但是如果我们直接在回调函数中处理这些数据会比较慢,对于这种情况往往我们就会使用队列来直接接收这些数据,然后再通过其他协程去处理这些数据,可以大大加快数据的处理速度。这个其实和channel有点类似,但是channel功能过于简单,无法满足各类场景的需求,比如限制数据队列的写入速度。为此client-go中单独提供了一个workqueue的组件来原创 2022-06-07 01:06:50 · 412 阅读 · 1 评论 -
client-go——DeltaFIFO(七)
文章目录1. 介绍2.Delta3. FIFO4. DeltaFIFO1. 介绍Reflector中通过ListAndWatch获取到数据后传入到本地的存储中,也就是DeltaFIFO中.从DeltaFIFO的名字可以看出它是一个FIFO,也就是一个先进先出的队列,而Delta表示的是变化的资源对象存储,包含操作资源对象的类型和数据,Reflector就是这个队列的生产者。2.Delta在了解DeltaFIFO之前我们需要了解下什么事Delta,我们先来看看client-go中是如何定义的,Delt原创 2022-05-29 17:56:05 · 278 阅读 · 0 评论 -
client-go——informer 原理(五)
文章目录1. 介绍2. 运行原理3. 示例1. 介绍前面我们在使用clientset的时候了解到我们可以使用clientset来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断查询List()操作?这显然是不合理的,实际上除了常用的CRUD操作之外,我们还可以进行watch操作,可以监听资源对象的增、删、改、查操作,这样我们就可以根据自己的业务逻辑去处理这些数据了。 watch通过一个event接口监听对象的所有变化(增加、删除、更新):// 任何知道原创 2022-05-28 23:14:25 · 638 阅读 · 6 评论 -
client-go—— Reflector(k8s)(六)
文章目录本文主要对Informer的Reflector组件进行分析说明下图是整个client-go的完整结构图,或者说使我们实现一个定义的控制器的完整流程,其中黄色图标是我们开发者需要自行开发的部分,而其它的部分是client-go已经提供的,直接使用即可。由于client-go实现非常复杂,我们这里先对上图中最核心的部分Informer进行说明。在Informer的架构中包含如下几个核心组件:Informers是client-go中非常重要的概念 ,接下来我们来仔细分析下Informers的实现原理,原创 2022-05-28 23:01:49 · 523 阅读 · 0 评论 -
client-go之clientset原理(四)
文章目录1.介绍2.示例3.ClientSet对象1.介绍Clientset是调用kubernetes资源对象最常用的客户端,可以操作所有的资源对象。前面我们说了在staging/src/k8s.io/api下面定义了各种资源类型的规范,然后将这些规范注册到了全局的Scheme中,这样就可以在Clientset中使用这些资源了。那么我们应该如何使用Clientset呢?2.示例首先我们来看下如何通过clientset来获取资源对象,我们这里来创建一个Clientset对象,然后通过该对象来获取默认原创 2022-05-23 00:25:59 · 592 阅读 · 0 评论 -
kubernetes-资源类型scheme(三)
文章目录1.介绍2.types.go文件3.zz_generated.deepcopy.go:使用deepcopy-gen工具生成的文件4.register.go文件:1.介绍当我们操作资源类型和apiserver进行通信的时候,需要根据资源对象类型的Group、Version、kind以及规范定义、编解码等内容构成Schema类型,然后Clientset对象就可以来访问和操作这些资源了,Scheme的定义主要在api子项目之中,源码仓库地址:https://github.com/kubernetes/原创 2022-05-20 03:01:47 · 486 阅读 · 0 评论 -
client-go源码学习--环境搭建(一)
文章目录1.运行环境2. 源码下载3. IDE1.运行环境这里我们选用MAC作为源码分析系统go 版本:go version 2 ↵ 9630 01:12:14go version go1.17.6 darwin/amd642. 源码下载目录结构介绍#tree . -L 1.├── BUILD.bazel├── CHANGEL原创 2022-05-19 01:17:50 · 306 阅读 · 0 评论 -
client-go代码实例
获取所有命名空间下的pod的相关信息package mainimport ( "context" "flag" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" "k8s.io/klog" "path/filepath")func原创 2022-05-16 00:09:35 · 234 阅读 · 0 评论