kubernetes中应用编排和管理

kubernetes资源对象
spec 期望状态
status 观测到的状态
资源标签:labels
selector标签选择
annotations
存储资源的非标示性信息
扩展资源spec/status
控制器模式:
最重要是控制循环的概念
controller system sensor
外界通过修改资源的spec来控制资源,控制器比较资源的spec status 计算一个diff diff决定对系统执行什么操作 控制操作会使系统产生新的输出,并且别传感器以资源status的形式上报上来,各组件独立自主运行。
sensor 传感器
reflector 通过list和watch api server来获取资源的数据
list在controller重启或者watch中断的情况下,进行系统资源的群亮更新
watch在多次list之间进行资源增量更新
reflector在获取新的资源数据后,会在一个delta队列中塞入一个资源信息对象本身以及资源数据类型的delta记录,在队列中可以保证同一个对象在队列中只有一个地址,保证watch和list没有重复的记录
informer不断的从delta队列弹出delta记录,方便把资源对象交给回调函数,同时,又将资源对象交给indexer
indexer 把资源记录在一个缓存中,缓存在默认设置下由命名空间做索引可以被controller中多个controller共享
控制循环中的控制器组件主要由时间处理函数,事件处理函数会监听资源对象informer中事件的更新删除,并根据控制器逻辑判断是否需要处理,对于需要处理的,会把时间关联的资源的命名空间以及名字,塞入一个工作队列,让后续的worker处理
worker在处理时需要用资源的名字重新获得资源数据,处理失败会重新加入队列
举例:
当replicas由2改为3时
reflector会watch replicas和pod两种资源的变化,在delta队列中塞入类型和对象,informer把新的对象更新在缓存中并且以一个namespace作为索引
kubernetes中应用编排和管理
kubernetes中应用编排和管理
k8s控制器模式依赖声明时的api