![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
client-go源码解析
client-go是所有k8s组件通信使用的包
来自万古的忧伤
努力,勿让自己继续活在后悔中
展开
-
client-go之SharedInformerFactory 支持多条件索引过滤(and)
package mainimport ( "fmt" "github.com/gin-gonic/gin" "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cl原创 2022-03-10 17:20:50 · 550 阅读 · 0 评论 -
client-go实现kubectl apply操作
dynamicClient实现kubectl apply 操作,采用动态的client来针对任何类型package mainimport ( "bytes" "fmt" "io" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" //"k8s.io/apimachinery/pkg/types" "k8s.io/client-go/dynamic" "k8s.io/apimach原创 2022-03-06 10:12:46 · 1900 阅读 · 0 评论 -
Client-go之tools(EventBroadcaster)
Kubernetes的事件(Event)是一种资源对象(Resource Object),用于展示集群内发生的情况,Kubernetes系统中的各个组件会将运行时发生的各种事件上报给Kubernetes API Server。例如,调度器做了什么决定,某些Pod为什么被从节点中驱逐。可以通过kubectl get event kubectldescribe pod命令显示事件,查看Kubernetes集群中发生了哪些事件。执行这些命令后,默认情况下只会显示最近(1小时内)发生的事件。注意:此处的Event原创 2020-08-27 19:17:28 · 1580 阅读 · 0 评论 -
Client-go之util(DeltaFIFO补充之Resync机制)
参考https://github.com/cloudnativeto/sig-k8s-source-code/issues/11一 DeltaFIFO队列为什么需要Resync为什么需要 Resync 机制呢?因为在处理 SharedInformer 事件回调时,可能存在处理失败的情况,定时的 Resync 让这些处理失败的事件有了重新 onUpdate 处理的机会。主要的目的是为了不丢数据,处理 resync 机制还有边缘触发与水平获取的设计,一起来保证不丢事件、数据同步并能及时响应事件。图来自原创 2020-08-22 16:15:27 · 620 阅读 · 5 评论 -
Client-go之util(workqueue)
一、简介二、FIFO队列三、延迟队列四、限速队列1.令牌桶算法2.排队指数算法3.计数器算法4.混合模式原创 2020-08-20 19:00:59 · 456 阅读 · 0 评论 -
Client-go之tools(informer)
本文为《Kubernetes 源码剖析》读书笔记,书籍简介:http://www.broadview.com.cn/book/6104一、简介在kubernetes系统中,组件之间通过http协议进行通信,通过informer来做到了消息的实时性、可靠性、顺序性, 通过infromer机制与api-server进行通信二、架构设计Reflector 详细可以看我的这篇总结ReflectorDeltaFIFO详细可以看我的这篇总结DeltaFIFOReflectorDeltaFIFOInde原创 2020-08-16 13:40:27 · 869 阅读 · 0 评论 -
Client-go之tools(Indexer)
本文为《Kubernetes 源码剖析》读书笔记,书籍简介:http://www.broadview.com.cn/book/6104参考https://blog.ihypo.net/15763910382218.html我的另一篇文章https://blog.csdn.net/weixin_45413603/article/details/107745576一、简介indexer是client-go用来存储资源对象并自带索引功能的本地存储,Reflector从DeltaFIFO中江晓飞出来的资源对原创 2020-08-16 10:26:50 · 628 阅读 · 0 评论 -
Client-go之tools(DeltaFIFO)
本文为《Kubernetes 源码剖析》读书笔记,书籍简介:http://www.broadview.com.cn/book/6104一、简介DeltaFIFO可以拆分开来理解 FIFO是一个先进先出的队列。Delta是一个资源对象存储,它可以保存资源对象的操作类型type DeltaFIFO struct { // lock/cond protects access to 'items' and 'queue'. //锁 保护items 和queue的访问和写 lock sync.RWM原创 2020-08-16 00:17:42 · 528 阅读 · 0 评论 -
Client-go之tools(Reflector)
一、Reflector简介和初始化1.简介informer可以对kubernetes api server 的资源执行监控(watch)操作 ,类型可以是kubernetes内置资源也可以是crd 自定义资源 ,其中最核心的功能是Reflector,Reflector用于监控指定资源的kubernetes资源,当资源发生变化的时候,例如发生了Added 资源添加等事件 会将其资源对象存放在本地缓存DeltaFIFO中2.初始化通过NewRefector实例化Reflector对象,实例化过程中必须传原创 2020-08-14 23:31:29 · 783 阅读 · 0 评论