K8S控制器理解-摘录自《云原生操作系统Kubernetes》

news/2024/10/12 12:42:27

摘录自罗建龙等著的《云原生操作系统Kubernetes》,详细了解请查看原著。

虽然控制器是Kubernetes比较复杂的组件,但是控制器这个概念本身,对我们来说并不陌生。我们生活中使用的洗衣机、冰箱、空调等,都要有控制器才能正常工作。
以下我们通过思考一个简易冰箱的设计过程,来理解Kubernetes集群控制器的原理和实现。

设计一台冰箱

如下图所示是一台简易冰箱。

冰箱包括五个组件,分别是箱体、制冷系统、照明系统、温控器和门。

冰箱有两个典型使用场景:

  • 当有人打开冰箱门的时候,冰箱内的灯会自动开启;
  • 当有人调节温控器的时候,制冷系统会根据温度设置调节冰箱内的温度。

统一操作入口

实际上,我们可以把冰箱简单抽象成下图图中的两个部分:统一的操作入口其他组件。用户只有通过操作入口才能操作冰箱,这个入口为用户提供了开关门和调节温控器这两个接口。用户调用这两个接口的时候,入口逻辑会调整冰箱门或温控器的状态。

但是这里有一个问题,就是用户通过这两个接口,既不能让冰箱内部的灯打开,也不能调节冰箱内的温度,因为这两个接口和照明或者制冷系统没有任何必然的联系

引入控制器

如下图所示,控制器就是为了解决上面的问题而产生的。控制器是用户操作和冰箱各个组件状态之间的一座桥梁。当用户打开门的时候,控制器“观察”到了门的变化,帮助用户打开冰箱内的灯;当用户调节温控器的时候,控制器“观察”到了用户设置的温度,替用户管理制冷系统以便调整冰箱内温度。

统一管理控制器

因为冰箱有照明系统和制冷系统,所以与一个控制器管理着两个组件相比,为每个组件分别设置一个控制器是更为合理的选择。同时为了方便管理,可以设置一个控制器管理器来统一维护所有这些控制器,以确保这些控制器在正常工作。

Shared Informer

有了控制器和控制器管理器之后,冰箱的设计看起来已经相当不错了。但是随着冰箱功能的增加,必然会有新的控制器不断地加进来。这些控制器都需要通过冰箱入口,时刻监控自己“关心”的组件的状态变化,就如同照明系统控制器在时刻监控冰箱门状态一样。当大量控制器不断地和操作入口通信的时候,就会增加操作入口的压力。

如下图所示,这时我们可以把监控冰箱组件状态变化这件事情,交给一个新的模块Shared Informer来做。Shared Informer作为控制器的代理,替控制器监控冰箱组件的状态变化,并根据控制器的“喜好”,把不同组件状态的变化通知对应的控制器。

Shared Informer模块的增加,实际上可以极大地缓解冰箱操作入口的压力。

List Watcher

Shared Informer方便了控制器对冰箱组件的监控,而这个机制最核心的功能,当然是主动获取组件状态被动接收组件状态变化的通知。这两个功能加起来,就是List Watcher机制。

假设Shared Informer和冰箱入口通过HTTP协议通信的,那么HTTP分块编码(chunked transfer encoding)就是实现List Watcher的一个好的选择。

控制器通过List Watcher给冰箱入口发送一个查询请求然后等待,当冰箱组件有变化的时候,入口通过分块的HTTP响应通知控制器。控制器“看到”Chunked响应,会认为响应数据还没有发送完成,所以会持续等待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ABAP面向对象视频课程 语法篇 共26节(SAP开发)

ABAP面向对象视频课程上线B站了,感兴趣的小伙伴可以去试看一下~ 课程地址:https://www.bilibili.com/cheese/play/ss33355?bsource=link_copy

【日记】强烈地意识到了:她对我而言,真的很重要

写在前面2164 字 | 情感内容 | 亲密关系 | HSP | 暴言注意正文最安静的一集。今天所有客户经理都出差去了。一楼只有我、柜面主管、前台和门卫四个人。两个小时没人说一句话。社恐天堂。工作上没什么好说的。中午明明人很少,但是食堂阿姨做了很多菜,就很奇怪。虽这么说,倒是…

ORCLE与MySQL的相互转化

1.情景展示 在实际开发中,不同的地方可能所需使用的数据库是不同的。 这就要求,我们开发的程序需要兼容不同的数据库,放到程序里面就是: 需要有不同类型的sqlMap文件。以既要兼容MySQL,也要兼容Oracle进行举例说明。 2.准备工作 第一步 根据已经写好的一套sql进行复制,然…

【解决方案】Sublime Text 4 按下 Esc 键后无法输入任何内容

在最后编辑博客内容时,我的 Sublime 版本为 4180。我基本用 Sublime Text 4 替代了系统自带的 Notepad,我用它编辑任何东西(除了代码,手动狗头)。 开始我怀疑是 Package Control 安装了过多依赖导致的兼容性问题,但由于 Sublime 多次更新,我的 Package Control 再次从命…

dirxk轻量目录扫描器

公司找个一个外包团队给客户写了一套系统,存在一些敏感信息泄露漏洞,这些漏洞不定期被主管部门检测到,从而需要进行整改操作 项目经理求助于公司内部的安全团队,希望能够检测系统还存在哪些敏感信息泄露漏洞,至此形成了本文中的一个主因 在实际的检测过程中,发现御剑、DI…

推荐一款支持Vue3的管理系统模版:Vue-Vben-Admin

近年来,随着前端技术的飞速发展,各类后台管理系统框架层出不穷。Vue 作为热门的前端框架,也有许多优秀的后台模板涌现。而 Vue-Vben-Admin,凭借其高效、灵活的架构设计和完善的功能体系,成为了许多前端开发者的不二选择。其Github Star达到了24K之多,可见其受欢迎程度。本…

Vmware中linux图形化界面安装《 VMware Tools》

VMWare 回收空间(方法一) 1.安装VMware Tools# 创建文件拷贝目录 mkdir /usr/temp # 创建挂在目录 mkdir /mnt/cdrom # 挂镜像文件 mount /dev/cdrom /mnt/cdrom # 复制安装文件 cp /mnt/cdrom/VMwareTools-10.3.25-20206839.tar.gz /usr/temp # 解压文件 cd /usr/temp &…

三、Spring Boot集成Spring Security之securityFilterChain过滤器链详解

二、默认过滤器链 1、默认配置系统启动日志2、默认配置的过滤器及顺序如下org.springframework.security.web.session.DisableEncodeUrlFilter org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter org.springframework.security.web.co…