K8S之Controller

我们在回顾下pod的启动流程:

  • 用户通过kubectl,向api-server 发起请求
  • api-server接受请求,并将数据写入etcd
  • kube-scheduler通过watch检测到未绑定node 的pod,调度pod到某一node上,并通知给api-server,api-server将其写入etcd
  • kubelet通过watch 检测到有新的pod调度过来,通过container runtime 运行新pod
  • kubelet 通过cri 拉起pause 容器
  • kubelet 通过cni 为pause容器创建网络(虚拟网络设备,ip地址)
  • kubelet 拉起业务容器,业务容器和pause容器共享同一个网络空间

1.Controller Manager原理解析

        一般来说,智能系统和自动系统通常会通过一个“操作系统”不断修正系统的工作状态 。在 Kubernetes 集群中,每个 Controller 都是这样的一个“操作系统”,它们通过 API Server提供的 (List-Watch) 接口实时监控集群中特定资源的状态变化,当发生各种故障导致某资渥对象的状态变化时, Controller 会尝试将其状态调整为期望的状态 。 比如当某个 Node意外岩机时, Node Controller 会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态下 。 Controller Manager 是 Kubernetes 中各种操作系统的管理者,是集群内部的管理控制中心,也是 Kubernetes 自动化功能的核心。

        如下图所示,Controller Manager内部包含Replication Controller、Node Controller、ResourceQuota Controller、Namespace Controller、ServiceAccount Controller、Token Controller、Service Controller、Endpoint Controller、Deployment Controller、Router Controller、Volume Controller等资源控制器,每种Controller都负责一种特定资源的控制流程,而Controller Manager正式这些Controller的核心管理者。

2.副本调度控制器

        具有副本调度控制功能的两个Controller:Deployment Controller和Replication Controller

        2.1 Replication Controller

        Replication Controller(简称RC)的核心作用是确保集群中某个RC关联的Pod副本数量 任何时候都保持预设值。如果发现Pod的副本数量超过预设值,则RC会销毁一些副本,反之,则会重新创建一些副本。注意:只有当Pod的重启策略是Always时(RestartPolicy=Always),RC才会管理该Pod的操作(增加、销毁、重启等)。在通常情况下, Pod 对象被成功创建后都不会消失,唯一 的例外是 Pod 处于succeeded 或 failed 状态的时间过长(超时参数由系统设定),此时该 Pod 会被系统自动回收,管理该 Pod 的副本控制器将在其他工作节点上重新创建 、 运行该 Pod 副本。

        随着Kubernetes的不断升级迭代,旧的RC已不能满足需求,所以就有了Deployment,Deployment可以视为Replication Controller的替代者

        2.2 Deployment Controller

        作用:

                1.确保在当前集群中有且仅有N个Pod实例,N是RC中定义的pod副本数量

                2.通过调整spec.replicas属性来实现系统扩容或缩容

                3.通过修改Pod模板(主要是镜像版本)来实现系统的滚动升级

        主要使用三个场景:重新调度、弹性伸缩、滚动更新

3.Node Controller

        kubelet进程在启动时通过API Server注册自身节点信息,并定时向API Server汇报状态信息,API Server在接收到这些信息后,会将这些信息更新到etcd中,在etcd中存储的节点信息包括节点健康状态、节点资源、节点名称、节点地址信息、操作系统版本、Docker版本、kubelet版本等。节点健康状态包括就绪(True)、未就绪(False)、未知(Unknown)。

        Node Controller通过API Server实时获取node的相关信息,实现管理和监控集群中各个Node的相关功能,Node Controller核心工作流程如下图:

4.ResourceQuota Controller

        资源配额管理确保指定的资源对象在任何时候都不会超量占用系统物理资源,避免由于某些业务进程在设计或实现上的缺陷导致整个系统运行紊乱甚至意外岩机,对整个集群的平稳运行和稳定性都有非常重要的作用 。

        目前kubernetes支持如下三个层次的资源配额管理:

        1.容器级别:可以对CPU和Memory进行限制

        2.Pod级别:可以对一个Pod内所有容器的可用资源进行限制

        3.Namespace级别:为Namespace多租户级别的资源限制,包括:Pod数量、RC数量、Service数量、Secret数量和可持有的PV数量

        Kubernetes的配额管理是通过Admission Control(准入控制)来控制的,Admission Control当前提供了两种方式的配额约束,分别是LimitRanger与ResourceQuota,其中LimitRanger作用于Pod和Container;ResourceQuota则作用于Namespace,限定一个Namespace里各种资源的使用总额

流程图如下:

5.Namespace Controller

        用户通过 API Server 可以创建新的 Namespace 并将其保存在 etcd 中, Namespace Controller 定时通过 API Server 读取这些 Namespace 的信息 。 如果 Namespace 被 API 标识为优雅删除(通过设置删除期限实现,即设置 DeletionTimestamp 属性),则将该 NameSpace的状态设置成 Terminating 并保存在 etcd 中 。 同时, Namespace Controller 删除该 Namespace下的 ServiceAccount、RC、Pod、Secret、PersistentVolurne、ListRange、ResourceQuota 和Event 等资源对象。

        在 Namespace 的状态被设置成 Terminating 后,由 Admission Controller 的 NamespaceL让ecycle插件来阻止为该 Namespace 创建新的资源 。 同时,在 Namespace Controller 删除该Namespace 中的所有资源对象后,Namespace Controller会对该Namespace执行finalize操作,删除Namespace的spec.finalizers域中的信息 。
        如果Namespace Controller观察到Namespace设置了删除期限,同时Namespace的spe c.finalizers域值是空的,那么Namespace Controller将通过API Server删除该Namespace资源

6.Service Controller 与 Endpoints Controller

        Endpoints 表示一个 Service 对应的所有 Pod 副本的访问地址, Endpoints Controller 就是负责生成和维护所有 Endpoints 对象的控制器 。

        Endpoints Controller 负责监听Service和对应的Pod副本的变化,如果监测到Service
被删除,则删除和该 Service同名的Endpoints 对象。如果监测到新的Service被创建或者修改,则根据该Service信息获得相关的 Pod 列表,然后创建或者更新Service对应的Endpoints 对象。如果监测到Pod的事件,则更新它所对应的Service的Endpoints对象(增加、删除或者修改对应的 Endpoint条目)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux高级IO——多路转接之epoll

本章代码Gitee地址&#xff1a;EpollServer 文章目录 1. epoll接口1.1 epoll_create1.2 epoll_wait1.3 epoll_ctl 2. epoll原理3. epoll_server4. epoll两种工作模式 1. epoll接口 1.1 epoll_create #include <sys/epoll.h> int epoll_create(int size);参数int size理…

微信小程序 uniapp+vue城市公交线路查询系统dtjl3

小程序Android端运行软件 微信开发者工具/hbuiderx uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 前端&#xff1a;HTML5,CSS3 VUE 后端&#xff1a;java(springbootssm)/python(flaskdja…

2011年认证杯SPSSPRO杯数学建模B题(第一阶段)生物多样性的评估全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 B题 生物多样性的评估 原题再现&#xff1a; 2010 年是联合国大会确定的国际生物多样性年。保护地球上的生物多样性已经越来越被人类社会所关注&#xff0c;相关的大规模科研和考察计划也层出不穷。为了更好地建立国际交流与专家间的合作&…

文献学习-32-新生儿皮质表面重建的条件时间注意网络

Conditional Temporal Attention Networks for Neonatal Cortical Surface Reconstruction Authors: Qiang Ma, Liu Li, Vanessa Kyriakopoulou, Joseph V. Hajnal, Emma C. Robinson, Bernhard Kainz, and Daniel Rueckert Source: MICCAI 2023 Abstract 皮层表面重建在模拟…

数学杂谈之四:学习数学的方法

数学杂谈之四&#xff1a;学习数学的方法 数学杂谈之一&#xff1a;数学的形态 https://blog.csdn.net/cnds123/article/details/137437208 数学杂谈之二&#xff1a;数学中的概念和理解 https://blog.csdn.net/cnds123/article/details/137500537 数学杂谈之三&#xff1a;…

UTONMOS元宇宙游戏特点

在元宇宙的世界里&#xff0c;游戏不再只是一种娱乐方式&#xff0c;而是一种全新的生活体验。UTONMOS元宇宙游戏带你穿越虚拟与现实的边界&#xff0c;开启一段前所未有的冒险之旅。 在这个充满无限可能的UTONMOS元宇宙游戏中&#xff0c;你将成为自己游戏世界的主角。可以自…

如何恢复未保存或删除/丢失的Word文件?

关闭 Word 应用程序而不保存文档&#xff1f;误删Word文档&#xff1f;许多用户会在不同的情况下丢失Word文档。如果不幸遇到此类问题&#xff0c;如何恢复已删除或未保存的 Word 文档&#xff1f;有一些方法可以恢复未保存/删除的文档。此外&#xff0c;您还可以使用Word文件恢…

程序员如何搞副业?——程序员的副业建议

目录 前言 一、个人项目开发 二、在线教育和培训 三、技术博客和内容创作 总结 前言 程序员不仅拥有将抽象概念转化为实际应用的能力&#xff0c;还通常具备强大的逻辑思维和问题解决能力。然而&#xff0c;许多程序员并不满足于仅仅在一家公司工作&#xff0c;他们渴望通…

ES6: promise对象与回调地狱

ES6&#xff1a; promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作&#xff0c;而异步操作什么时候返回结果是不可控的&#xff0c;所以希望一段程序按我们制定的顺序执…

自定义注解(一)——统一请求拦截

文章目录 一、为什么会用到自定义注解二、关键参数说明三、应用场景示例&#xff1a;统一token认证1. 背景2. 自定义Token注解3. AOP上定义切面方法4. 方法上应用5. 总结 一、为什么会用到自定义注解 自定义注解可以帮助我们更好地组织和管理代码&#xff0c;提高代码的可读性和…

IIS服务器更换即将过期的SSL证书

公司IIS服务器证书快要过期&#xff0c;替换证书的步骤&#xff1a; Winr输入mstsc命令&#xff0c;显示远程登录&#xff1b;输入服务器IP以及密码&#xff0c;进行远程登陆登陆IIS服务器&#xff0c;winr输入inetmgr命令显示IIS操控器&#xff1b;选择服务器证书--点击服务器…

Springboot引入swagger

讲在前面&#xff1a;在spring引入swagger时&#xff0c;由于使用的JDK、Spring、swagger 的版本不匹配&#xff0c;导致启动报错&#xff0c;一直存在版本依赖问题。所以在此声明清楚使用版本。JDK 1.8、Spring boot 2.6.13、 Swagger 2.9.2。 引入maven依赖 <dependency&…

神经射频脉冲术,破解疼痛之锁

一位十余年糖尿病病史的患者&#xff0c;右足开始出现疼痛和麻木的症状三个多月&#xff0c;给他的生活带来了极大的困扰。他曾在多家医院就诊&#xff0c;但治疗效果并不理想。直到他走进了北京精诚博爱医院&#xff0c;这里为他带来了希望和转机。 经过详细的检查&#xff0c…

VR紧急情况模拟|V R体验中心加盟|元宇宙文旅

通过VR技术实现紧急情况模拟&#xff0c;提升安全应急能力&#xff01; 简介&#xff1a;面对突发紧急情况&#xff0c;如火灾、地震、交通事故等&#xff0c;正确的反应和应对能够有效减少伤害和损失。为了提高人们在紧急情况下的应急能力&#xff0c;我们借助先进的虚拟现实…

Unittest单元测试框架之unittest_执行用例的详细信息

unittest_执行用例的详细信息 用unittest.main()执行测试集 这里的verbosity是一个选项,表示测试结果的信息复杂度&#xff0c;有三个值&#xff1a; 0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功801 (默认模式): 非常类似静默模式 只是在…

蓝桥杯 每天2题 day6

碎碎念&#xff1a;哇咔咔 要不是中间缺勤一天就圆满day7了&#xff01;最后一晚上&#xff01;写题复习哇咔咔 唉&#xff0c;睡了一觉就看不下去了&#xff0c;&#xff0c;&#xff0c;看看之前的笔记洗洗睡觉&#xff0c;&#xff0c;&#xff0c; 记得打印准考证带好东西…

快速掌握数据层内置持久化方案-jdbcTemplateSpringBoot内置数据库

环境准备 导入jdbc的起步依赖&#xff0c;mybatis的依赖中就存在jdbc的起步依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>在配置文件中配置datasourse的…

使用腾讯云服务器如何搭建网站?新手建站教程

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…

RPA实战演练UiBot6.0新食堂一楼问卷星(类似于之前的网页表单提交)

要使用RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;帮助新食堂进行调查问卷&#xff0c;我们可以结合UiBot 6.0来实施具体的计划。以下是一个大致的实战演练计划&#xff1a; 一、目标与需求分析 明确调查目标&#xff1a;了解新食堂…

ThignsBoard通过服务端订阅共享属性

MQTT基础 客户端 MQTT连接 通过服务端订阅属性 案例 1、首先需要创建整个设备的信息&#xff0c;并复制访问令牌 ​​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、在MQTT上订阅对应的Topic 5、在客户端添加共享属性信息 6、查看整个设备的遥测数据 M…