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条目)。

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

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

相关文章

【how2j练习题】HTML DOM部分阶段练习

练习1 <!-- 验证账号是否已经存在 那么就在js使用简单的验证规则&#xff1a; 如果账号是以a或者A开头的&#xff0c;那么就提示已经存在了。 --> <!-- 1.需要一个输入框和一个按钮 2.按钮上绑上一个事件。 3.编写事件&#xff0c;并输出答案 --><html><…

002 数据提取工具 WebPlotDigitizer 使用教程

一、WebPlotDigitizer 安装方法 直接在官网上进行下载 automeris.io&#xff0c;选择右上角的下载按钮&#xff0c;再根据电脑位数选择对应版本进行下载。 下载后将得到一个压缩包&#xff0c;直接解压缩&#xff0c;双击WebPlotDigitizer-4.7.exe即可运行&#xff0c;得到如下…

02 - Git 之命令 +

1 Git相关概念 1.1 以下所谈三个区&#xff0c;文件并不只是简单地在三个区转移&#xff0c;而是以复制副本的方式转移 使用 Git 管理的项目&#xff0c;拥有三个区域&#xff0c;分别是 Working area工作区&#xff08;亦称为 工作树Working Tree&#xff09;、stage area …

贪心算法|435.无重叠区间

力扣题目链接 class Solution { public:// 按照区间右边界排序static bool cmp (const vector<int>& a, const vector<int>& b) {return a[1] < b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.siz…

Go gorm库(详细版)

目录 01. 什么是ORM 02. 环境搭建 03. 连接数据库 高级设置 gorm 的命名策略 创建表 日志显示 04. 模型定义 定义一张表 自动生成表结构 修改表字段大小 字段标签 05. 单表查询 5.1 表结构 5.2 添加单条记录 5.3 批量插入 5.4 单条数据查询 5.5 根据主键查询…

微服务-7 Docker

一、镜像、容器、仓库 容器是镜像的实例&#xff0c;仓库中存储着镜像。 二、镜像的操作 三、容器的操作 创建容器停止容器&#xff0c;查看后发现没有了(docker ps 默认只展示没有停止的) docker ps -a (可以展示运行中和停止的镜像)删除容器&#xff1a;(docker rm 不能删除…

新手尝试硬件买单片机还是树莓派?

新手尝试硬件买单片机还是树莓派&#xff1f; 新手的话&#xff0c;先学单片机吧&#xff0c;51&#xff0c;stm32&#xff0c;都可以&#xff0c;很多学习平台给的例子比较多&#xff0c;程序相对都比较简单&#xff0c;更贴近硬件&#xff0c;玩起来比较容易做出小东西&…

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装&#xff0c;需要先参考以下博客进行处理后&#xff0c;再根…

HarmonyOS实战开发-图片编辑、使用 TextArea 实现多文本输入

介绍 本示例使用 TextArea 实现多文本输入&#xff0c;使用 ohos.app.ability.common 依赖系统的图库引用&#xff0c;实现在相册中获取图片&#xff0c;使用 ohos.multimedia.image 生成pixelMap&#xff0c;使用pixelMap的scale()&#xff0c;crop()&#xff0c;rotate()接口…

学习云计算HCIE选择誉天有什么优势?

誉天云计算课程优势实战性强 课程注重实践操作&#xff0c;通过实际案例和实验操作&#xff0c;让学员深入了解云计算的应用场景和实际操作技能。课程内容全面 涵盖所有云计算涉及的IT基础知识、服务器、存储、网络等方面的基础知识&#xff0c;开源操作系统Linux&#xff0c;开…

HarmonyOS实战开发-拼图、如何实现获取图片,以及图片裁剪分割的功能。

介绍 该示例通过ohos.multimedia.image和ohos.multimedia.mediaLibrary接口实现获取图片&#xff0c;以及图片裁剪分割的功能。 效果预览 使用说明&#xff1a; 使用预置相机拍照后启动应用&#xff0c;应用首页会读取设备内的图片文件并展示获取到的第一个图片&#xff0c;…

【muzzik 分享】3D模型平面切割

# 前言 一年一度的征稿到了&#xff0c;倒腾点存货&#xff0c;3D平面切割通常用于一些解压游戏里&#xff0c;例如水果忍者&#xff0c;切菜这些&#xff0c;今天我就给大家讲讲怎么实现3D切割以及其原理&#xff0c;帮助大家更理解3D中的 Mesh(网格)&#xff0c;以及UV贴图和…

机器学习和深度学习--李宏毅(笔记与个人理解)Day11-12

Day11 when gradient is small…… 怎么知道是局部小 还是鞍点&#xff1f; using Math 这里巧妙的说明了hessan矩阵可以决定一个二次函数的凹凸性 也就是 θ \theta θ 是min 还是max&#xff0c;最后那个有些有些 哈 是一个saddle&#xff1b; 然后这里只要看hessan矩阵是不…

Element-UI 下拉框单选转多选回显不清空绑定的值

需求 根据radio切换来更改下拉框是否多选 原因 单选和多选这两个 input 看上去没差别&#xff08;自身和层级都一致&#xff09;&#xff0c;vue出于提高性能&#xff0c;所以 vue 给复用了 解决方案 <template><section><el-radio-group v-model"radi…

风储微网虚拟惯性控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 风储微网虚拟惯性控制系统simulink建模与仿真。风储微网虚拟惯性控制系统是一种模仿传统同步发电机惯性特性的控制策略&#xff0c;它通过集成风力发电系统、储能系统和其他分…

聚丙烯PP它的化学特性是什么? UV胶水能够粘接聚丙烯PP吗?

聚丙烯PP它的化学特性是什么? UV胶水能够粘接聚丙烯PP吗&#xff1f; 聚丙烯&#xff08;Polypropylene&#xff0c;简称PP&#xff09;是一种热塑性聚合物&#xff0c;属于聚烯烃类塑料之一。以下是聚丙烯的一些化学特性&#xff1a; 1. 分子结构&#xff1a; 聚丙烯是由丙烯…

再说vue响应式数据

请说一下你对响应式数据的理解 如何实现响应式数据据 对象 vue2 响应式核心代码 数组 vue2 处理缺陷Vue3则采用 proxy - vue3 响应式核心代码 请说一下你对响应式数据的理解 如何实现响应式数据据 数组和对象类型当值变化时如何劫持到。 对象 对象内部通过defineReactive方…

如何将普通maven项目转为maven-web项目

文件-项目结构&#xff08;File-->Project Structure &#xff09; 模块-->learn&#xff08;moudle-->learn&#xff09; 选中需要添加web的moudle&#xff0c;点击加号&#xff0c;我得是learn&#xff0c;单击选中后进行下如图操作&#xff1a; 编辑路径 结果如下…

Centos7 k8s 集群 - Rook Ceph 安装

环境准备 基础环境 系统名称操作系统CPU内存硬盘Kubernete 版本Docker版本IPmasterCentos74c4gsdb 20G1.17.023.0.1192.168.1.128node01Centos74c4gsdb 20G1.17.023.0.1192.168.1.129node02Centos74c4gsdb 20G1.17.023.0.1192.168.1.130node03Centos74c4gsdb 20G1.17.023.0.1…

OpenHarmony4.0分布式任务调度浅析

1 概述 OpenHarmony 分布式任务调度是一种基于分布式软总线、分布式数据管理、分布式 Profile 等技术特性的任务调度方式。它通过构建一种统一的分布式服务管理机制&#xff0c;包括服务发现、同步、注册和调用等环节&#xff0c;实现了对跨设备的应用进行远程启动、远程调用、…