k8s从初识到上天系列第二篇:kubernetes的组件和架构

😉😉 欢迎加入我们的学习交流群呀!

✅✅1:这是孙哥suns给大家的福利!

✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、SpringSecurity、Docker、Grpc、各种MQ、Rpc、SpringCloud等等很多应用和源码级别高质量视频和笔记资料,你想学的我们这里都有!

🥭🥭3:QQ群:583783824   📚📚  工作VX:BigTreeJava 拉你进VX群,免费领取!

💞💞4:以上内容,进群免费领取呦~ 💞💞💞💞

🥭🥭5:学完帮你进大厂~~

一:kubernetes组件

1:集群组件概述

官方说法:

        当部署完 Kubernetes,便拥有了一个完整的集群。一组工作机器,称为节点, 会运行容器化应用程序。 每个集群至少有一个工作节点 。工作节点会 托管Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和Pod。

说人话版本:

        集群:cluster,多个几点被组织到一起共同为系统提供服务过程称之为集群。本质上是将承载同一个软件服务节点组织到一起,称之为该软件(服务)的集群,当然集群中的节点身份地位是不一样的。

        k8s集群也是如此,他也是多个节点组成。不过,在k8s世界中,一组工作的机器才被称之为节点。

        k8s集群中有多个节点,我们一般建议是三个节点。三个节点有两种,第一种是Control Plane控制节点,这个类似于我们常规理解的master节点,第二种节点是work node节点类似于我们常规理解的slave。

        控制节点主要是负责调度的,他主要是负责容器的管理和资源分配。真正的work节点才是真正运行咱们得应用程序容器的。

        k8s管理的单元不是容器而是Pod,Pod不是容器,Pod相当于是给容器进行了包裹。一个Pod里边可以运行多个容器。Pod就是负载组件,控制平台管理集群中的工作节点和Pod

·        官方给的这个图:左侧是控制平面组件,右侧是我们的工作节点,一共有三个,工作节点是用来真正运行工作容器的。

        控制节点上边就是运行了一堆k8s的组件,后边我们都会分享。

2:控制平面组件 (Control Plane Components)

官方版:

        控制平面组件会为集群做出全局决策,比如资源的调度。以及检测和响应集群事件,例如当不满足部署的replicas字段时,要启动新的 pod

说人话版:        

        控制平面组件这个组件就是管调度的。检测、资源调度等等。

        控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此物理机上运行用户容器,也就是Master上不会跑Pod。

(一):kube-apiserver

官方版:

        API server是 Kubernetes 控制平面的组件,该组件负责公开了Kubernetes API,负责处理接受请求的工作。API server是 Kubernetes控制平面的前端。Kubernetes API 服务器的主要实现是 kube-apiserver。 kube-apiserver 设计上考虑了水平扩缩,也就是说,它可通过部署多个实例来进行扩缩。 你可以运行kube-apiserver 的多个实例,并在这些实例之间平衡流量。

说人话版:

        说白了就是操作k8s的集群的API总入口,我们操作整个的k8s集群需要些写一些命令,这些命令会优先会被apiserver接收到,我们通过Rest或者是命令的方式去调度就行了。他就是控制平面组件的总入口,就是接口用户命令的。API Server是控制平台组件的前端,但是他的真正底层实现是基于接口实现的方式,基于kube-apiserver他可以通过部署多个实例来进行扩缩,在诸多实例中实现流量平衡。

        这玩意就是接收命令请求的。

(二):etcd

        一致且高度可用的键值存储,用作k8s所有集群数据的后台数据库

        这里边存储的是集群元数据,所谓元数据就是记录集群信息的,类似于MySQL数据库,information_schema下的数据。

(三):kube-scheduler

官方说法:

        kube-scheduler是控制平面的组件,负责监视新创建的、未指定运行节点node的 Pods, 并选择节点来让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 及Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。

(四):kube-controller-manager

        kube-controller-manager 是控制平面的组件,负责运行控制器进。从逻辑上讲,但是为了降低复杂性,它们每个控制器都是一个单独的进程,都被编译到同一个可执行文件,并在同一个进程中运行。

这些控制器包括:

        节点控制器(Node Controller):负责在节点出现故障时进行通知和响应。

        任务控制器(Job Controller):监测代表一次性任务的Job 对象,然后创建 Pods 来运行这些任务直至完成。

        端点分片控制器(EndpointSlice controller):填充端点分片(EndpointSLice)对象(以提供 Service 和 Pod 之间的链接)。

        服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)

(五):cloud-controller-manager

        一个Kubernetes控制平面组件,嵌入了特定云平台的控制逻辑。云控制器管理器(Cloud Controller Manager)允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。

        cloud-controller-manager 仅运行特定于云平台的控制器。 因此如果你在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。与 kube-controller-manager 类似,cloud-controller-manager 将若干逻辑上独立的控制回路组合到同一个可执行文件中, 供你以同一进程的方式运行。 你可以对其执行水平扩容(运行不止一个副本)以提升性能或者增强容错能力。

         下面的控制器都包含对云平台驱动的依赖:
        节点控制器(Node Controller):用于在节点终止响应后检查云提供商以确定节点是否已被删除。

        路由控制器(RouteController):用于在底层云基础架构中设置路由

        服务控制器(Service Controller):用于创建、更新和删除云提供商负载均衡器

        如果咱们使用云平台的话,一般云平台中都直接选用现成的k8s集群使用。这个目前研究太深意义不大。

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

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

相关文章

【JAVA语言-第15话】集合框架(二)——List、ArrayList、LinkedList、Vector集合

目录 List集合 1.1 概述 1.2 特点 1.3 常用方法 1.4 ArrayList集合 1.4.1 概述 1.4.2 练习 1.5 LinkedList集合 1.5.1 概述 1.5.2 特点 1.5.3 常用方法 1.5.4 练习 1.6 Vector类 1.6.1 概述 1.6.2 练习 1.7 List实现类的异同点 List集合 1.1 概述 java.util…

【自动化测试】读写64位操作系统的注册表

自动化测试经常需要修改注册表 很多系统的设置(比如:IE的设置)都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候,经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…

一篇文章带你了解C++中隐含的this指针

文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date,下面这段代码执行的结果是什么呢? class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v…

基于springboot+vue的明星周边产品销售网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

Python tkinter (6) Listbox

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 GUI 目录 Listbox 创建listbox 添加元素…

AI数字人-数字人视频创作数字人直播效果媲美真人

在科技的不断革新下,数字人技术正日益融入到人们的生活中。近年来,随着AI技术的进一步发展,数字人视频创作领域出现了一种新的创新方式——AI数字人。数字人视频通过AI算法生成虚拟主播,其外貌、动作、语音等方面可与真实人类媲美…

09. Springboot集成sse服务端推流

目录 1、前言 2、什么是SSE 2.1、技术原理 2.2、SSE和WebSocket 2.2.1、SSE (Server-Sent Events) 2.2.2、WebSocket 2.2.3、选择 SSE 还是 WebSocket? 3、Springboot快速集成 3.1、添加依赖 3.2、创建SSE控制器 3.2.1、SSEmitter创建实例 3.2.2、SSEmi…

C++:引用

目录 概念: 引用的使用格式: 引用特性: 常引用 使用场景: 1、做参数 二级指针时的取别名 一级指针取别名 一般函数取别名 2、做返回值 函数返回值的原理: 引用的返回值使用: 引用和指针的对比&…

YOLOv8训练自己的数据集,通过LabelImg

记录下labelImg标注数据到YOLOv8训练的过程,其中容易遇到labelImg的坑 数据集处理 首先在mydata下创建4个文件夹 images文件夹下存放着所有的图片,包括训练集和测试集等。后续会根据代码进行划分。 json文件夹里存放的是labelImg标注的所有数据。需要注意的是&…

Ubuntu findfont: Font family ‘SimHei‘ not found.

matplotlib中文乱码显示 当我们遇到这样奇怪的问题时, 结果往往很搞笑 尝试1不行 Stopping Jupyter Installing font-manager: sudo apt install font-manager Cleaning the matplotlib cache directory: rm ~/.cache/matplotlib -fr Restarting Jupyter. 尝试2 This work fo…

Spring Boot 中的外部化配置

Spring Boot 中的外部化配置 一、配置文件基础1.配置文件格式(1)YAML 基本语法规则(2)YAML 支持三种数据结构 2.application 文件3.application.properties 配置文件4.application.yml 配置文件5.Environment6.组织多文件7.多环境…

HTTP动态代理的原理及其对网络性能的影响

HTTP动态代理是一种通过代理服务器来转发HTTP请求和响应数据的网络技术,它可以优化网络性能、提高网络安全性,并解决跨域请求的问题。本文将详细介绍HTTP动态代理的原理及其对网络性能的影响。 一、HTTP动态代理的原理 HTTP动态代理的基本原理是在客户…

微信小程序(十四)分包和分包预加载

注释很详细,直接上代码 上一篇 新增内容: 1.分包的配置 2.分包预加载的写法 先说说为什么需要分包: 小程序追求小而快,主包的大小控制是小程序上线的硬性要求,分包有利于小程序优化加载速度 分包的注意事项&#xff1a…

大模型+自动驾驶

论文:https://arxiv.org/pdf/2401.08045.pdf 大型基础模型的兴起,它们基于广泛的数据集进行训练,正在彻底改变人工智能领域的面貌。例如SAM、DALL-E2和GPT-4这样的模型通过提取复杂的模式,并在不同任务中有效地执行,从…

数字图像处理(实践篇)三十一 Raw图像数据转为RGB图像实践

目录 1 Raw图像和RGB图像 2 Raw图像的排布方式 3 方案 4 实践 5 其他 1 Raw图像和RGB图像 Raw图片是未经压缩的,没有任何数据损失,Raw图片保留了从图像传感器捕获的每个像素的原始信息,因此可以实现更高的图像质量。

用C语言实现贪吃蛇游戏!!!(破万字)

前言 大家好呀,我是Humble,不知不觉在CSND分享自己学过的C语言知识已经有三个多月了,从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容,也希望这些内容可以帮助到各位正在阅读的小伙伴…

Flink实现数据写入MySQL

先准备一个文件里面数据有: a, 1547718199, 1000000 b, 1547718200, 1000000 c, 1547718201, 1000000 d, 1547718202, 1000000 e, 1547718203, 1000000 f, 1547718204, 1000000 g, 1547718205, 1000000 h, 1547718210, 1000000 i, 1547718210, 1000000 j, 154771821…

基于51单片机智能电子秤

实物显示效果: https://www.bilibili.com/video/BV1Wb4y1A7Aw/?vd_source6ff7cd03af95cd504b60511ef9373a1d 功能介绍: (1)用键盘设计单价; (2)称重后同时显示该物品的重量、单价和总额&…

记签名机制

签名过程: 首先将数据源通过摘要算法获取到数字摘要 对数字摘要用私钥进行加密得到签名 将原始消息 以及签名发送给消息接收方 接收方用公钥解密得到数字摘要 用同样的摘要算法将原始消息进行计算 比较得到的数字摘要与解密后的是否一致 Android学习笔记——Androi…

【精选推荐】3款强大的API渗透测试工具

1免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测。 2前言 给大家介绍三款优秀的…