k8s--架构基础--云控制器管理器
具体来说,云控制器管理器允许用户将集群与云服务提供商的 API 进行连接,以获取与云平台相关的信息和资源。通过这种连接,Kubernetes 可以利用云服务提供商的功能和特性,例如虚拟机、负载均衡器、对象存储等。与此同时,云控制器管理器也负责与云平台进行交互,以执行与云资源的管理和操作相关的任务。
云控制器管理器的作用是将 Kubernetes 集群与云服务提供商的 API 进行链接,并在集群内部负责与云平台进行交互,以实现对云资源的管理和操作。它实现了集群与云平台之间的松耦合,使得 Kubernetes 可以充分利用云服务提供商的功能和特性,提供强大而灵活的容器管理能力
设计
云控制器管理器以一组复制的进程(通常是在 Pod 中的容器)的形式在控制平面中运行。每个云控制器管理器在单个进程中实现了多个控制器
好处
控制器是 Kubernetes 中负责监视集群状态并采取相应操作的组件。通过将多个控制器实现在云控制器管理器的同一个进程中,可以减少进程和资源的开销。这些控制器在云控制器管理器中共享相同的进程,并且彼此之间可以共享和复用一些资源和功能。这种共享和复用的机制提高了资源利用率,减少了系统开销,同时也简化了部署和管理
Cloud controller manager functions
云控制器管理器中的控制器功能包括:
节点控制器(Node controller)
节点控制器负责在云基础设施中创建新的服务器时更新 Node 对象。
节点控制器通过与云服务提供商的API交互,获取有关在您的租户中运行的主机的信息。
节点控制器执行以下功能:
- 使用从云服务提供商API获取的相应服务器的唯一标识符来更新 Node 对象。
- 使用特定于云的信息对 Node 对象进行注释和标记,例如节点部署的区域以及可用的资源(CPU、内存等)。
- 获取节点的主机名和网络地址。
- 验证节点的健康状况。如果一个节点变得无响应,该控制器会通过云服务提供商的API检查服务器是否已被停用/删除/终止。如果节点已从云中删除,则控制器会从您的 Kubernetes 集群中删除 Node 对象。
一些云服务提供商的实现将此功能分为节点控制器和单独的节点生命周期控制器。
节点生命周期控制器负责与云服务提供商的API交互,管理节点的生命周期操作,例如创建、启动、停用、删除等。这种拆分可以使节点控制器和节点生命周期控制器各自专注于不同的任务,提供更灵活和可维护的代码结构。
路由控制器
作用
-
路由控制器根据需要配置云中的路由,确保来自不同节点上的容器之间的网络流量能够正确地路由和转发。它确保每个节点上的容器都能够与其他节点上的容器建立网络连接,以实现跨节点通信。
-
根据云服务提供商的不同,路由控制器可能还会分配一组 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的连接正确建立和维护。
其他
- 以下是对Event对象的访问操作:
- create:创建一个新的Event对象。
- patch:对现有的Event对象进行局部更新。
- update:更新现有的Event对象。
通过这些操作,云控制器管理器能够创建和更新Event对象,这些对象用于记录集群中发生的事件和状态变化。
- 对于ServiceAccount对象,云控制器管理器需要创建访问权限,以创建新的ServiceAccount对象。ServiceAccount用于在Kubernetes中管理身份验证和授权,云控制器管理器可能需要为自身创建一个ServiceAccount以执行特定任务。
至于RBAC ClusterRo 管理器的实现,具体实现会根据云服务提供商和集群的配置而异。
RBAC ClusterRole定义了在整个集群范围内将授予云控制器管理器的权限。
RBAC ClusterRole的具体配置取决于云控制器管理器所需的操作和访问权限。它可能涵盖对集群范围的各种资源的访问权限,如Node、Pod、Service、Endpoint等。此外,它还可以涉及到一些底层云基础设施的访问权限和操作权限,以便云控制器管理器能够执行特定的云操作。
官网文档
相关文章:
k8s--架构基础--云控制器管理器
具体来说,云控制器管理器允许用户将集群与云服务提供商的 API 进行连接,以获取与云平台相关的信息和资源。通过这种连接,Kubernetes 可以利用云服务提供商的功能和特性,例如虚拟机、负载均衡器、对象存储等。与此同时,…...
OpenAI 更新 ChatGPT:支持图片和语音输入【附点评】
一、消息正文 9月25日消息,近日OpenAI宣布其对话AI系统ChatGPT进行升级,添加了语音输入和图像处理两个新功能。据OpenAI透露,这些新功能将在未来两周内面向ChatGPT Plus付费用户推出,免费用户也将很快可以使用这些新功能。这标志着ChatGPT继续朝着多模态交互的方向发展,为用户提…...
数据结构:堆的简单介绍
目录 堆的介绍:(PriorityQueue) 大根堆:根节点比左右孩子节点大 小根堆:根节点比左右孩子节点小 堆的存储结构: 为什么二叉树在逻辑上用满二叉树结构,而不是普通二叉树呢? 因为如果是普通二叉树会造成资源的浪费编辑 堆的介绍:(PriorityQueue) 堆又称优先级队列,何为优先…...
【LeetCode-中等题】654.最大二叉树
文章目录 题目方法一:递归 题目 方法一:递归 class Solution {int[] num null; public TreeNode constructMaximumBinaryTree(int[] nums) {num nums;return myTree(0,num.length-1);}public TreeNode myTree( int begin , int end){if(begin > end…...
基于微信小程序的刷题考试系统设计与实现(适用于各类考试类、答题类程序)
文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...
用Java打印长方形、平行四边形 、三角形、菱形、空心菱形
今天复习使用嵌套for来完成一些任务,于是想着打印一些图形来练习 思考感悟 长方形 行数 和 每行的星星数嵌套遍历即可 平行四边形 核心:每行空格数总行数-行数 行数空格数132231 三角形 核心:每行星星数2*当前行数-1 行数星星数1123…...
es6模块化,怎么判断当前文件使用的是es6的模块化还是commenjs的模块化
es6的模块化,文件中的this,指向undefined,不是指向window import.meta - JavaScript | MDN...
Ubuntu 基础配置
源配置 源路径: /etc/apt/sources.list aliyun源 20.04 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.a…...
CISSP学习笔记:人员安全和风险管理概念
第二章 人员安全和风险管理概念 2.1 促进人员安全策略 职责分离: 把关键的、重要的和敏感工作任务分配给若干不同的管理员或高级执行者,防止共谋工作职责:最小特权原则岗位轮换:提供知识冗余,减少伪造、数据更改、偷窃、阴谋破坏和信息滥用的风险&…...
ubuntu18.04 OpenGL开发(显示YUV)
源码参考:https://download.csdn.net/download/weixin_55163060/88382816 安装opengl库 sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev 安装opengl工具包 sudo apt install mesa-utils 检查opengl版本信息(桌面终端执行)…...
React(react18)中组件通信06——redux-toolkit + react-redux
React(react18)中组件通信06——redux-toolkit react-redux 1 前言1.1 redux 和 react-redux1.2 关于redux-toolkit1.2.1 官网1.2.2 为什么要用Redux Toolkit? 1.3 安装 Redux Toolkit1.4 Redux Toolkit相关API 2. 开始例子——官网例子2.1 …...
第七章 查找 九、B+树
目录 一、定义 二、B树需要满足的条件 三、重要考点 一、定义 1、B树是一种常用的数据结构,用于实现关系型数据库中的索引。 2、其特点是可以在磁盘等外存储器上高效地存储大量数据,并支持快速的查询、插入、删除等操作。 3、B树的结构类似于二叉搜…...
XPD911协议系列-集成同步降压多口互联控制器
产品描述: XPD911 是一款集成 USB Type-C、USB Power Delivery(PD) 3.1 以及 PPS、 QC3.0/3.0 /2.0 快充协议、华为 FCP/SCP/HVSCP 快充协议、三星 AFC 快充协议、VOOC 快充协议、MTK PE 快充协议、BC1.2 DCP 以及苹果设备 2.4A 充电规范的多…...
数字反转(蓝桥杯)
数字反转 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见实例 2)。 输入描述 输入共 1 行&…...
十一.EtherCAT开发之microchip MCU D51+ LAN9253 的开发FOE应用(SPI directly 模式)
十一.EtherCAT开发之microchip MCU D51+ LAN9253 的开发FOE应用(SPI directly 模式) 文章目录 十一.EtherCAT开发之microchip MCU D51+ LAN9253 的开发FOE应用(SPI directly 模式)11.0 软件更新方式11.1 SSC TOOL配置11.2 MCU D51 FOE函数支持11.2.1 下载download11.2.2 上传up…...
【分布式计算】二、架构(Architectures)
1.中心化架构(Centralized Architectures) 1.1.经典C/S模型 服务器:一个或多个进程提供服务 客户端:一个或多个进程使用服务 客户端和服务器可以在不同的机器上 客户端遵循请求/回复模型 1.2.传统三层视图 用户界面层&#x…...
Springboot对MVC、tomcat扩展配置
Springboot在web层的开发基本都是采用Springmvc框架技术,但是Springmvc中的某些配置在boot是没有的,我们就应该根据自己的需求进行对mvc扩展配置 Springboot1.x版本如何配置 通过注解Configuration一个类,继承webmvcconfigureradapter&#…...
网络子网划分练习
网络子网划分练习 1.背景: 在一个仓储企业网络拓朴结构如图1-所示,该企业占地500亩。有五层办公楼1栋,大型仓库10栋。每栋仓库内、外部配置视频监控16台,共计安装视频监控160台,Switch A、服务器、防火墙、管理机、Rou…...
Leetcode刷题笔记--Hot51-60
1--环形链表II 主要思路: 快慢指针,快指针每次走两步,慢指针每次走一步; 第一次相遇时,假设慢指针共走了 f 步,则快指针走了 2f 步; 假设起点到环入口结点的长度为 a(不包括入口结点…...
广告牌安全监测系统,用科技护航大型广告牌安全
城市的街头巷尾,处处可见高耸的广告牌,它们以各种形式和颜色吸引着行人的目光。然而,作为城市景观的一部分,广告牌的安全性常常被我们所忽视。广告牌量大面大,由于设计、材料、施工方法的缺陷,加上后期的检…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
