kubernetes源码剖析读后感(五)
注:结合书中的大概内容以及笔者自身的k8s经验 总结学到的一些新知识每一篇篇幅不会很长书很棒强烈推荐买一本读本次读书来自于《kubernetes源码剖析》 作者郑东旭总结中包含部分书中内容 包含部分笔者读书学习到的知识点以及根据笔者结合书的一些总结第五章 Client-go编程式交互1.源码结构2.client客户端详情见client-go客户端3.informer机制4.workquery5.E
本次读书来自于《kubernetes源码剖析》 作者郑东旭
书籍简介:http://www.broadview.com.cn/book/6104**
第五章 Client-go编程式交互
1.源码结构
不做介绍,书中介绍非常详细。
2.client客户端
详情见client-go客户端
3.informer机制
详情见informer
组件之间不依赖中间件,直接进行http协议通信,如何保证消息的实时性、可靠性、顺序性等
设计主要有三部分
(1)Reflector
用于监控(watch)k8s资源,当资源发生变化的时候出发变更事件
详情请见reflector
(2)DeltaFIFO
FIFO是一个先进先出的队列,可以保留资源对象的操作类型比如added(添加)等等
详情见deltafifo
(3)Indexer
存储资源对象并自带索引的本地存储,Reflector从DeltaFIFO消费出来的对象存在Indexer,与etcd保持一致,来减轻api的压力
详情见indexer
4.workquery
详情见workquery
(1)FIFO队列
最基本的队列方法,运行在高并发场景下,在队列中如果要继续插入相同的元素那么就不会被直接添加在队列里,来保持元素即使被添加了很多次也只处理一次
(2)延迟队列
在FIFO队列的基础上增加了延迟,就是延迟一段时间再将元素插入队列中
(3)限速队列
利用延迟队列的特性,延迟某个元素插入的时间来达到限速
提供了4种限速方法
令牌桶算法
排队指数算法
计数器算法
混合模式
5.EventBroadCaster事件管理器
k8s的事件也是一种资源对象 用来描述发生了什么事情,例如某个pod重启 因为什么重启,或者重新调度等等我们通过describe就可以看到event时间信息,存储在etcd中为了防止磁盘被写满,当最后一次事件发生后会删除前面1小时之前发生的事件event事件管理器
6.代码生成器
client-gen
是一种为资源生成ClientSet客户端的工具
lister-gen
是一种为资源生成lister的工具
informer-gen
是一种为资源生成informer的工具
通过本章节的学习 首先从client入手 如何通过编程式我们去对k8s集群做一些操作,然后针对于controller manager 这块的核心informer reflector indexer deltafifo分别做了介绍,然后对于workqueue 的一些封装 以及队列如何去限速 做了详细的解读 ,最后EventBroadCaster事件管理器做了介绍
更多推荐
所有评论(0)