client-go学习
云原生手记
欢迎大家关注我的公众号“云原生手记”,将定期更新云计算技术文章
展开
-
Client-go之Informer机制本地存储Indexer
Client-go之Informer机制本地存储Indexer若想与作者沟通交流问题,请关注微信公众号“云原生手记”背景client-go Informer机制的主要逻辑是controller控制reflector从apiserver获取感兴趣的资源对象的数据,然后将数据放入DeltaFIFO队列中,controller将从队列中消费出对象增量数据,然后将增量存入本地存储,同时根据增量类型(Added,Update,Delete)进行事件通知。那么client-go中的本地存储是什么样的存在呢?我们原创 2020-09-18 08:27:24 · 1473 阅读 · 1 评论 -
Client-go Informer之 DeltaFIFO队列
Client-go Informer之 DeltaFIFO队列欢迎关注微信公众号“云原生手记”背景上一篇讲到reflector监控指定的k8s资源,当监控的资源发生变化时,将资源对象的变化存放到DeltaFIFO队列中。本篇的内容就是剖析DeltaFIFO队列,顺便再看下goland如何实现FIFO队列。队列client-go中有两个队列,一个是FIFO队列,另一个是DeltaFIFO队列。我们通过学习其中的FIFO队列来了解Golang语言中设计FIFO队列的基本技巧,而学习DeltaFIF原创 2020-09-17 21:38:48 · 745 阅读 · 0 评论 -
client-go: Informer机制之reflector源码分析
client-go: Informer机制之reflector源码分析目的为了能充分了解Inform机制的原理,我们需要了解Inform机制的起点——reflector,那么,reflector是如何将数据从api-server拉下来?又是如何将数据存入本地的呢?解决这两个疑问就是本篇文章的重点。希望大家也能在此过程中能顺便了解k8s中list-watch机制缓存对象数据的原理。源码分析的大致流程首先,需要了解reflector结构体中的各个属性,然后是reflector是如何初始化,最后针对ref原创 2020-09-15 08:36:08 · 1406 阅读 · 0 评论 -
Client-go之Informer机制初探
Client-go之Informer机制初探启航本篇将开始我的源码剖析之路,先会讲client-go中的一些经典的机制和代码,然后讲一些我是用client-go中的一些小示例。最后开始读k8s scheduler源码。背景在k8s系统中,组件之间仅通过Http协议进行通信,没有中间件,其实蛮好奇k8s内部通信是如何保证消息实时性、可靠性和顺序性的,实现这些性能的关键在于Informer机制,Informer机制中的ListAndWatch、DeltaFIFO队列和Indexer等对于实现以上特性非原创 2020-09-14 11:29:18 · 1208 阅读 · 0 评论 -
client-go源码解析(一):client-go客户端对象
client-go源码解析(一):client-go客户端对象client-go的重要性client-go是对K8s集群的二次开发工具,所以client-go是k8s开发者的必备工具之一。本篇目的本篇的目的旨在教会大家k8s集群的客户端有哪些种类,大家可能之前都使用过client-go去操作k8s中的资源对象,但是对于其中原理可能一知半解,client-go github那边只是给出了简单的几个例子,没有太多深入讲解。本讲就先跟大家介绍下,client-go到底有几种客户端对象去和集群交互,这些客原创 2020-08-10 19:58:10 · 2708 阅读 · 0 评论 -
Client-go中的watch接口的resultChan会自动关闭
Client-go中的watch接口的resultChan会自动关闭文章目录Client-go中的watch接口的resultChan会自动关闭问题描述resultChan会自动关闭的原因解决办法问题描述在client-go工程中,有时候需要用到watch接口,实际场景如下:namespacesWatch, err := clientSet.CoreV1().Namespaces().Wa...原创 2019-12-05 14:53:50 · 4055 阅读 · 11 评论