k8s--架构基础--云控制器管理器

具体来说,云控制器管理器允许用户将集群与云服务提供商的 API 进行连接,以获取与云平台相关的信息和资源。通过这种连接,Kubernetes 可以利用云服务提供商的功能和特性,例如虚拟机、负载均衡器、对象存储等。与此同时,云控制器管理器也负责与云平台进行交互,以执行与云资源的管理和操作相关的任务。

云控制器管理器的作用是将 Kubernetes 集群与云服务提供商的 API 进行链接,并在集群内部负责与云平台进行交互,以实现对云资源的管理和操作。它实现了集群与云平台之间的松耦合,使得 Kubernetes 可以充分利用云服务提供商的功能和特性,提供强大而灵活的容器管理能力

设计

云控制器管理器以一组复制的进程(通常是在 Pod 中的容器)的形式在控制平面中运行。每个云控制器管理器在单个进程中实现了多个控制器

好处

控制器是 Kubernetes 中负责监视集群状态并采取相应操作的组件。通过将多个控制器实现在云控制器管理器的同一个进程中,可以减少进程和资源的开销。这些控制器在云控制器管理器中共享相同的进程,并且彼此之间可以共享和复用一些资源和功能。这种共享和复用的机制提高了资源利用率,减少了系统开销,同时也简化了部署和管理

Cloud controller manager functions

云控制器管理器中的控制器功能包括:

节点控制器(Node controller)

节点控制器负责在云基础设施中创建新的服务器时更新 Node 对象
节点控制器通过与云服务提供商的API交互,获取有关在您的租户中运行的主机的信息。

节点控制器执行以下功能:

  1. 使用从云服务提供商API获取的相应服务器的唯一标识符来更新 Node 对象
  2. 使用特定于云的信息对 Node 对象进行注释和标记,例如节点部署的区域以及可用的资源(CPU、内存等)。
  3. 获取节点的主机名和网络地址
  4. 验证节点的健康状况。如果一个节点变得无响应,该控制器会通过云服务提供商的API检查服务器是否已被停用/删除/终止。如果节点已从云中删除,则控制器会从您的 Kubernetes 集群中删除 Node 对象。

一些云服务提供商的实现将此功能分为节点控制器单独的节点生命周期控制器
节点生命周期控制器负责与云服务提供商的API交互,管理节点的生命周期操作,例如创建、启动、停用、删除等。这种拆分可以使节点控制器和节点生命周期控制器各自专注于不同的任务,提供更灵活和可维护的代码结构。

路由控制器

作用

  1. 路由控制器根据需要配置云中的路由,确保来自不同节点上的容器之间的网络流量能够正确地路由和转发。它确保每个节点上的容器都能够与其他节点上的容器建立网络连接,以实现跨节点通信

  2. 根据云服务提供商的不同,路由控制器可能还会分配一组 IP 地址块用于 Pod 网络。这意味着路由控制器除了配置路由规则之外,还负责分配和管理用于容器之间通信的 IP 地址。

总之,路由控制器负责在云中配置适当的路由规则,以便 Kubernetes 集群中的容器可以相互通信。它确保容器之间的网络流量能够正确路由和转发,并且在需要时分配 IP 地址块供 Pod 网络使用。

服务控制器(Service controller)

服务控制器(Service controller)与云基础设施组件集成,如托管的负载均衡器、IP 地址、网络数据包过滤和目标健康检查。当您声明一个需要这些组件的服务资源时,服务控制器与您的云服务提供商的API进行交互,设置负载均衡器和其他基础设施组件。

在Kubernetes中,服务(Service)是一种抽象,用于公开一组逻辑相关的Pod并提供网络访问。
服务控制器的作用是根据您的配置和声明,与云服务提供商的API交互,并设置与服务相关的负载均衡器和其他基础设施

服务控制器扮演着与云服务提供商API交互的角色,以创建、配置和管理与服务相关的资源。

例如,当您创建一个负载均衡型的服务时,服务控制器将通过云服务提供商的API创建和配置一个负载均衡器,以将流量分发到服务背后的Pod。服务控制器还可以协调与服务相关的其他组件,如IP地址分配和网络数据包过滤。

通过与云服务提供商的API交互,服务控制器可以实现与云基础设施的集成,以提供更高级的服务功能,如负载均衡和网络策略

授权

授权是指云控制器管理器在执行操作时所需的对不同 API 对象的访问权限。在 Kubernetes 中,访问控制是通过 Role-Based Access Control (RBAC) 进行管理的。

云控制器管理器需要不同程度的访问权限来执行其操作。这些权限通常定义为 Kubernetes 中的角色(Role)和角色绑定(Role Binding)。角色定义了可以执行的操作(例如创建、读取、更新和删除)和允许的资源类型。角色绑定将角色分配给用户、组或服务账户以授予它们对相应资源的权限。

云控制器管理器可能需要访问以下不同的 API 对象以执行其操作:

  • Node 对象:云控制器管理器可能需要读取和更新 Node 对象,以反映云基础设施中服务器的状态和资源信息。

  • Pod 对象:云控制器管理器可能需要读取和更新 Pod 对象,以根据调度规则、网络设置等信息在集群中创建、更新和删除 Pod。

  • Service 对象:云控制器管理器可能需要读取和更新 Service 对象,以设置和管理负载均衡器、IP 地址等服务相关的资源。

  • Endpoint 对象:云控制器管理器可能需要读取和更新 Endpoint 对象,以更新负载均衡器或服务关联的目标地址。

  • Route 对象:云控制器管理器可能需要读取和更新 Route 对象,以配置云中适当的路由规则,以便容器在不同节点之间进行通信。

为了确保安全性,云控制器管理器应该只被授予所需的最低权限。根据具体情况和云服务提供商的实现,可能需要对其他 API 对象进行访问控制,以确保云控制器管理器可以安全地执行其任务。

总之,授权是指云控制器管理器在执行操作时所需的对不同 API 对象的访问权限。访问控制是通过 Kubernetes 中的 RBAC 机制进行管理的,通过定义角色和角色绑定,将适当的访问权限分配给云控制器管理器。云控制器管理器可能需要对 Node、Pod、Service、Endpoint、Route 等各种 API 对象进行访问和更新,以执行其操作。

Node控制器(Node controller)

Node控制器(Node controller)仅与Node对象一起工作。它需要完全访问权限以读取和修改Node对象。

下面是对Node对象的访问操作:

  • get:获取一个特定的Node对象。
  • list:获取所有Node对象的列表。
  • create:创建一个新的Node对象。通常由云控制器管理器在云基础设施中创建新服务器时使用。
  • update:更新现有的Node对象。可以用于更新节点的状态、标签、注释等信息。
  • patch:对现有的Node对象进行局部更新。可以部分地更新节点的信息,而不影响其他字段。
  • watch:监视Node对象的变化。该操作允许控制器实时监测节点的状态变化。
  • delete:删除一个Node对象。通常在节点从云中删除时使用。

总而言之,Node控制器需要对Node对象具有完全的读写权限。它可以执行各种操作,包括获取、创建、更新、删除等,以管理节点在Kubernetes集群中的状态和属性。

Route控制器(Route controller)

在Kubernetes中,Route控制器(Route controller)监听Node对象的创建并适当地配置路由。
它需要对Node对象具有Get访问权限

对于Node对象的Get访问权限,意味着Route控制器可以获取特定的Node对象的信息。通过获取Node对象的状态和属性,Route控制器可以了解到集群中节点的详细信息,如IP地址、标签、资源情况等。

获取Node对象对于Route控制器来说是必要的,因为它需要知道有哪些节点在集群中,并且为了配置适当的路由规则,它需要了解节点的IP地址和相关信息。通过获取Node对象,Route控制器可以根据节点的状态和属性进行相应的操作,确保在不同节点之间进行网络通信时的正确路由设置。

服务控制器(Service controller)

监视Service对象的创建、更新和删除事件,然后相应地为这些服务配置Endpoints资源(对于EndpointSlices资源,kube-controller-manager按需进行管理)。

为了访问Service对象,服务控制器需要list和watch访问权限。为了更新Service对象,它需要patch和update访问权限。

为了为这些服务设置Endpoints资源,服务控制器需要create、list、get、watch和update的访问权限。

下面是对Service对象的访问操作:

  • list:获取所有Service对象的列表。
  • get:获取一个特定的Service对象。
  • watch:监视Service对象的变化。
  • patch:对现有的Service对象进行局部更新。
  • update:更新现有的Service对象。

通过这些操作,服务控制器能够获取和更新Service对象的信息。它可以监视Service对象的变化,并相应地设置或更新与之关联的Endpoints资源,以确保服务与Pod的连接正确建立和维护。

其他

  1. 以下是对Event对象的访问操作:
  • create:创建一个新的Event对象。
  • patch:对现有的Event对象进行局部更新。
  • update:更新现有的Event对象。

通过这些操作,云控制器管理器能够创建和更新Event对象,这些对象用于记录集群中发生的事件和状态变化。

  1. 对于ServiceAccount对象,云控制器管理器需要创建访问权限,以创建新的ServiceAccount对象。ServiceAccount用于在Kubernetes中管理身份验证和授权,云控制器管理器可能需要为自身创建一个ServiceAccount以执行特定任务。

至于RBAC ClusterRo 管理器的实现,具体实现会根据云服务提供商和集群的配置而异。
RBAC ClusterRole定义了在整个集群范围内将授予云控制器管理器的权限

RBAC ClusterRole的具体配置取决于云控制器管理器所需的操作和访问权限。它可能涵盖对集群范围的各种资源的访问权限,如Node、Pod、Service、Endpoint等。此外,它还可以涉及到一些底层云基础设施的访问权限和操作权限,以便云控制器管理器能够执行特定的云操作。

官网文档

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

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

相关文章

“益路同行”栏目专访第11期——柳州市雨花敬老服务中心陈勇梅

中国善网在本届(第十届)慈展会上特别推出了《益路同行》采访栏目,《益路同行》栏目旨在寻觅公益之路上同行者的故事,挖掘公益更深层次的内涵,探索新时代公益发展道路。希望公益企业、人物、故事被更多人看到&#xff0…

2.物联网射频识别,RFID通信原理,RFID读写器与标签无线交互方式、数据反馈方式,RFID调制与解调、编码方式,不同RFID标签与读写器

一。RFID无线识别的原理 1.RFID系统无线通信基本原理 如下图所示,左边是读写器(刷卡器),右边是标签(卡),中间通过无线通信方式。 标签:(卡) 读写器&#xff…

实战项目:VB实现小鸟快跑小游戏

文章目录: 一:效果演示 二:实现思路 三:代码实现 form1 效果图 代码 form2 效果图 代码 一:效果演示 效果图◕‿◕✌✌✌ 代码下载 二:实现思路 窗口1 就是实现窗口的跳转和关闭窗口2 1.先添加背…

CSS详细基础(三)复合选择器

前两章介绍了CSS中的基础属性,以及一些基础的选择器,本贴开始介绍复合选择器的内容~ ​ 在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形…

ElementUI之动态树+数据表格+分页

目录 前言 一.ElementUI之动态树 1.前端模板演示 2.数据绑定 2.1 通过链接获取后台数据 2.2 对链接进行绑定 2.3添加动态路由 2.4 配置路由 3.效果演示 二.数据表格动态分页 1.前端模板 2.通过JS交互获取后端数据 3 效果演示 前言 Element UI 是一个基于 Vue.js 的开…

IDEA Debug技巧大全,看完就能提升工作效率

作者简介 目录 1.行断点 2.方法断点 3.异常断点 4.字段断点 5.条件表达式 1.行断点 行断点就是平时我们在代码行旁边单击鼠标打上的断点,这个没有什么好说的。关键点在于很多人不知道的,行断点其实是可以右击选择是对改行的全部调用都生效&#xf…

缓存一致性(cache coherency)解决方案:MESI 协议状态转换详解

MESI 协议 一,MESI状态释义二,MESI状态转换1 Invalid after Reset2, Invalid > Exclusive3, Exclusive > Modified4 Modified > Shared, Invalid > Shared5 Shared > Invalid, Shared > Modified 三,状态转换场景总结Inval…

Go语言strconv包

strconv包 参考资料 常用函数 函数功能备注Atoi(s string) (int, error)string转为intItoa(i int) stringint转为stringIsPrint(r rune) bool查询是否可以打印 了解函数 函数功能备注ParseBool(str string) (value bool, err error)返回字符串表示的bool值。它接受1、0、t…

最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)

源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有…

Vue之ElementUI实现登陆及注册

目录 ​编辑 前言 一、ElementUI简介 1. 什么是ElementUI 2. 使用ElementUI的优势 3. ElementUI的应用场景 二、登陆注册前端界面开发 1. 修改端口号 2. 下载ElementUI所需的js依赖 2.1 添加Element-UI模块 2.2 导入Element-UI模块 2.3 测试Element-UI是否能用 3.编…

APScheduler包——python tornado框架中实现定时任务

介绍: APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时&#xf…

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日,IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题,聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会,与参展观众深入交流。 展会上,美格智能带…

TCP/IP网络江湖——数据链路层的防御招式(数据链路层下篇:数据链路层的安全问题)

目录 引言 一、 数据链路层的隐私与保密 二、数据链路层的安全协议与加密

SpringCloud Gateway--Predicate/断言(详细介绍)中

😀前言 本篇博文是关于SpringCloud Gateway–Predicate/断言(详细介绍)中,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以…

人工智能AI知多少?

摘要 人工智能(Artificial Intelligence,简称AI)是一项前沿技术,正在快速发展并渗透到各个领域。然而,对于大多数人来说,人工智能仍然是一个陌生而复杂的概念。本文旨在对人工智能进行扫盲,介绍其基本概念、应用领域以及当前热门的人工智能模型。通过具体的例子,读者将…

electron之快速上手

前一篇文章已经介绍了如何创建一个electron项目,没有看过的小伙伴可以去实操一下。 接下来给大家介绍一下electron项目的架构是什么样的。 electron之快速上手 electron项目一般有两个进程:主进程和渲染进程。 主进程:整个项目的唯一入口&…

大数据flink篇之一-基础知识

一、起源 2010至2014年间,由柏林工业大学、柏林洪堡大学和哈索普拉特纳研究所联合发起名Stratosphere的研究项目。2014年4月,项目贡献给Apache基金会,成为孵化项目。更名为Flink2014年12月,成为基金会顶级项目2015年9月&#xff…

分析一段js加密代码

源代码 (function(){var KBP,EbW482-471;function wHY(r){var y2043987;var lr.length;var a[];for(var g0;g<l;g){a[g]r.charAt(g)};for(var g0;g<l;g){var vy*(g289)(y%39401);var ty*(g287)(y%31258);var xv%l;var pt%l;var ma[x];a[x]a[p];a[p]m;y(vt)%2251814;};re…

搭建自己的搜索引擎之五

一、前言 接上文 搭建自己的搜索引擎之四&#xff0c;下面继续介绍茴香豆茴字的另外两种写法。 二、Jest Jest是ES的Java Http Rest客户端&#xff0c;它主要是为了弥补以前ES自有API缺少HttpRest接口客户端的不足&#xff0c;但因为现在ES官方已经提供了RestClient ,该项目已…

JIT介绍

JIT全称&#xff1a;Just in time。中文译为&#xff1a;即时的、实时的。 JVM中的这项技术名为&#xff1a;实时编译技术&#xff0c;也叫即时编译技术。就是在java程序运行的过程中&#xff0c;将字节码编译为机器码运行在本地&#xff0c;而不是通过JVM解释运行&#xff08;…