【云原生】Kubernetes 的组件与架构

news2024/10/7 16:15:47

文章目录

  • 引语
  • 1、集群组件
    • 1.1 控制平面组件(Control Plane Components)
    • 1.2 Node 组件
    • 1.3 插件(Addons)
  • 2、集群搭建
  • 总结

引语

在上篇文章,我们介绍了 Kubernetes 是什么,它能够对容器进行编排,也就是说是容器的管理者,为容器做负载均衡、挂载存储系统、自动化部署和回滚、自我修复、自动装箱,那么 Kubernetes 是如何做到这些的呢?这就不得不提到 Kubernetes 的下面的这些重要组件了:

  • 集群组件
  • 核心概念
  • 集群安装

1、集群组件

在MySQL、Redis……中我们就接触到集群这个概念了,要保证一个服务的可靠,集群是一个重要的方案,Kubernetes的集群中也有不同的角色,各司其职

  • 集群 cluster :将同一个软件服务多个节点组织在一起共同为系统提供服务过程称之为该软件的集群。

  • k8s 集群中结点的角色有两种:

    • master 结点 / control plane 控制节点,主要用于容器的管理、调度、资源分配
    • work node 工作节点,实实在在运行容器

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

在这里插入图片描述

这张图摘自 Kubernetes 官网,在这张图中我们可以看到,一个 Kubernetes 集群,除了有我们看到的 Node 结点,其中还有Control Plane(其中包含kube-apiserver、etcd、kube-scheduler、kube-controller-manager、kube-controller-manager)

在下面我们就分别介绍 Kubernetes 集群中的各个组件以及它们的作用:

1.1 控制平面组件(Control Plane Components)

控制平面组件会为集群做出全局决策,例如资源的调度、检测和响应集群事件

控制平面组件可以在集群的任何结点上运行,但是一般情况会在同一台计算机上启动所有控制平面组件,而不会再此计算机上运行用户容器

  • kube-apiserver
    API server 是 Kubernetes 控制平面的组件,其实就是 Kubernetes 提供的 API 总入口,我们操作 Kubernetes 写的命令就会第一时间被 API server 接受到,负责处理接受请求的工作,kube-apiserver 是 API server 的主要实现,也就是使用的主要是 kube-apiserver ,因为它实现了水平扩缩,可以运行多个实例达到负载均衡的目的

  • etcd
    一致且高可用的键值存储,用作 Kubernetes 的所有集群数据的后台数据库,也就是集群元数据,集群的相关信息都存在这个数据库中

  • kube-scheduler
    负责调度的组件,负责监视新创建的、未指定运行节点的 Pods,并分配结点给 Pods 去运行,分配的时候考虑的因素有:

    1. Pod 的资源需求、软硬件以及策略约束
    2. 亲和性和反亲和性规范 (其实就是我们在运行 Pod 的时候去指定它能在哪个结点上运行就是亲和性,指定不能再哪个结点上运行就是反亲和性)
    3. 数据位置
    4. 工作负载之间的干扰和最后时限
  • kube-controller-manager
    与kube-apiserver类似的是:kube-controller-manager 是 Controller Manager 的主要实现,它主要负责运行控制器进程
    控制器:在 Kubernetes 中存在以下四种控制器,我们在运行 Pod 的时候可以指定控制器

    • 节点控制器(Node Controller):负责在节点出故障的时候进行通知和响应
    • 任务控制器(Job Controller):检测一次性任务的 Job 对象,然后创建 Pods 来运行这些任务
    • 端点分片控制器(EndpointSlice Controller):通过 Service 和 Pod 之间的连接去暴露 Pod 的外部服务
    • 服务账号控制器(ServiceAccount Controller):为新的命名空间创建默认的服务账号
      从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,他们都被编译到同一个可执行文件中,并在同一个进程中运行
  • cloud-controller-manager
    这是一个可选的组件,它嵌入了特定云平台的控制逻辑,也就是把集群连接到云提供商的 API 上,因此如果在自己的环境或者本地计算机中运行学习环境,部署的集群是不需要这个组件的,与kube-controller-manager 类似,它也是负责运行控制器进程
    下面的控制器都包含对云平台驱动的依赖:

    • 节点控制器:用于在节点终止响应之后检查云提供商以确定节点是否已经被删除了
    • 路由控制器:用于在底层云基础架构中设置路由
    • 服务控制器:用于创建、更新和删除云提供商负载均衡器

1.2 Node 组件

节点组件会在每一个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境,负责维护运行 Pod,也就是容器的运行由Node 组件负责

  • kubelet
    会在每一个节点上运行,保证容器都运行在 Pods 中
    也就是说,kubelet 会接受各类机制提供的配置文件,然后确保这些配置文件描述的容器能够正常的运行,它是不会管理非 Kubernetes 创建的容器
  • kube-proxy
    用于实现内外部网络交互的规则,如果想把 Pod 暴露给外部提供服务,也就是负责容器与外界的网络通信,就需要配置网络规则,允许从集群内部或者外部的网络与集群内的容器进行网络通信
  • 容器运行时(Container Runtime)
    Pod 是需要包裹 Container,那么就需要运行容器的环境
    Kubernetes 支持许多容器的运行环境,例如 Containerd、CRI-0、Docker 以及 Kubernetes CRI 的其他任何实现

1.3 插件(Addons)

  • DNS
    尽管它是插件,但其实它可以说是一个必须组件,几乎所有的 Kubernetes 集群都有 DNS 服务
  • Web 界面(仪表盘)
    Dashboard 是 Kubernetes 集群的通用的、基于 Web 的用户界面,管理集群中运行的应用的程序
  • 容器资源监控
    容器资源监控就是把一些常见的时间序列度量值保存到一个集中的数据中,并提供浏览这些数据的可视化页面
  • 集群层面日志
    集群层面日志负责把日志数据保存到一个集中的日志存储中,并提供搜索和浏览的接口

2、集群搭建

  • minikube
    只是一个 Kubernetes 的模拟器,只有一个节点的集群,它的 master 和 worker 都在一起,用于测试
  • 裸机安装
    至少需要两台机器(一个主节点、一个工作节点),需要自己安装 Kubernetes 组件,配置更麻烦缺点:配置麻烦、缺少生态支持、没有负载均衡器、云存储
  • 直接使用云平台 Kubernetes可视化搭建,只需要几步就可以创建好一个集群优点:安装简单、生态齐全、有负载均衡器、云存储
  • k3s
  • 安装简单,脚本自动完成优点:轻量级、配置要求低、安装简单、生态齐全

这里就没有演示如何进行集群的搭建,其中 minikube 是使用 Docker 的可视化工具进行自动搭建,而裸机安装一般是用于学习使用,博主就是裸机搭建的,需要较大的运行内存,或者使用云服务器

总结

本篇博客更加深入的了解了 Kubernetes 里面的组件,以及一个 Kubernetes 集群中各个组件的作用,总的来讲是三大类组件:控制平面组件、Node结点、插件:

  • 其中控制平面组件一般单独运行在一个机器上,而不部署 Pod
  • Node 结点是让 Pod 正常的运行以及维护
  • 插件就因人而异了,不过 DNS 插件可以说一个必须的插件,后续的学习中还会使用到另外的插件,用于查看响应的时间

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

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

相关文章

实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放

实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放 新建一个窗口,我想在这个窗口上放一个QWidget,并且这个QWidget能够布满整个窗口,还可以随着随鼠标的拖动自动缩放 1、首先给大家介绍一个好用的组件库:qt-mat…

lighthouse尘埃粒子计数器3100/3350参数资料

​​SOLAIR 3350集成了我们的超长寿命激光二极管技术传感器,可生产业界比较长的激光二极管寿命20年以上(基于连续24/7运行)。使用一个新的,更轻的延长寿命的电池和外部交流适配器,SOLAIR 3350更加便携。SOLAIR 3350具有业界最好的用户界面(UI…

springboot+java拍卖竞拍网站系统idea

书画拍卖网站系统的设计与实现的设计思想如下: Spring Boot 是 Spring 家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。也可以说 Spring Boot 能简化我们之前采用SSM(Spring MVC Spring MyBatis )框架进行…

10个学习Python的理由以及Python的优势有哪些?

Python的由来 Python的创始人是吉多范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选择Python作为编程语言的名…

新星计划|记录安装Nodejs和HBuilderX搭建、部署微信小程序开发环境(一)

文章目录 1 前言2 注册小程序账号3 安装微信开发者工具4 安装Nodejs和HBuilderX4.1 windows用户安装Nodejs4.2 macos/linux用户安装Nodejs4.3 安装HBuilder X 5 创建项目5.1 新建一个项目5.2 进行基本配置 6 HBuilderX同步微信开发者工具6.1 打开服务端口6.2 调用微信开发者工具…

不能使用ChatGPT 试试基于2021模型的 Claude (原GPT团队二次创业产品)聊天机器人 更详细的解答

大家过程中遇到问题都可以私信我 注册方式,引用别人的:用不了chatgpt,试试Claude-Claude注册教程_大数据食铁兽的博客-CSDN博客 不过上面作者没有写坑,只支持少部分国家(我选用的日本,Claude官网会提示你…

【HarmonyOS】这些HarmonyOS应用开发的问题你都了解吗?

【关键字】 HTTP请求、requests exceeds 100、DNS域名解析、屏幕分辨率、ArkTS/JS 【问题描述1】 HTTP多次请求之后出现请求异常如何解决? 描述:接口是正常的,http多次请求出现提示“The requested has been canceled or the number of re…

mysql高阶语句与连接存储

文章目录 一、mysql高阶语句1.按照关键字进行排序2.多字段排序3.对查询的结果进行分组4.限制结果条目5.设置别名(alias----》as) 二、mysql连接与存储1.、连接查询2.存储过程 总结 一、mysql高阶语句 1.按照关键字进行排序 ​使用select语句可以将需要…

古鱼、恐龙和大众,相逢在百度百科的“彩虹桥”

提起孩子的天性,我们会想到什么? 首先是好奇心。 如果没有好奇心和求知欲作为动力,人类不可能产生那些给社会带来巨大价值的发明创造。对于个人来说,带着对万物的好奇,了解大千世界的丰富多彩,以后无论遇到…

Docker基础篇(上)

1、为什么Docker比VM快 2、帮助启动类命令 启动类命令 启动docker: systemctl start docker停止Docker: systemctl stop docker重启Docker: systemctl restart docker查看状态: systemctl status docker设置开机自启&#x…

【C++】20.异常

1.C语言处理错误方式 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到er…

【003】C++数据类型之整型类型(int)详解

C数据类型之整型变量详解 引言一、常量和变量二、整形常量三、整形变量的定义四、整型变量的初始化五、整型变量的声明5.1、C 变量的定义、变量的声明、变量的使用三者的关系 六、键盘(输入设备)给变量赋值七、案例:键盘获取两个int数值然后求…

win11+VS2019下配置PCL1.11.1

1、PCL安装配置 下载pcl-1.11.1-pdb-msvc2019-win64与PCL-1.11.1-AllInOne-msvc2019-win64.exe文件。以管理员身份运行PCL-1.11.1-AllInOne-msvc2019-win64.exe程序,截图如下: 安装过程中没有弹出OpenNI2的安装,但是要安装在3rdParty下&#…

快速了解toRaw和markRaw的用法

toRaw toRaw,将响应式对象(由 reactive定义的响应式)转换为普通对象。 作用:将一个由reactive生成的响应式对象转为普通对象。使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作&…

mongo基本操作---文档的增删改查

4、CRUD mongo数据库和平时常见的关系型数据库一样,最基本的操作就是增删改查,唯一的区别就是叫法不一样 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域…

韦东山Linux驱动入门实验班(1)hello驱动

前言 (1)学习韦东山老师的Linux,因为他讲的很精简,以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第一个Hello程序。 (2)注意,请先学习完视频再来看这个教程!本文仅供…

AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

板卡概述: 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的,实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范,可直接与 FPGA 载卡配合使用,板 卡 ADC 器件采用…

CIE颜色空间LCh、Lab、XYZ介绍与转换关系(包含源码)

项目场景: 提示:在颜色科学中,LCh和Lab是比较常用的 LCh是由MATLAB计算出的数据,但是我所需要在Qt的q3dsurface绘制出这个切面,看了Qt官方Examples,墨西哥草帽算法的3D模型就是由XYZ组成的。所以我需要LC…

【c语言】组件化打包—静态库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

MacOS使用Parallels Desktop安装win11虚拟机

文章目录 前话一、安装Parallels Desktop二、安装Windows11虚拟机1.win11镜像下载2.虚拟机启动 三、创建过程问题解决1.安装win11系统的时候不显示网路2.系统安装完成后无法连接网络 三、参考文献 前话 为了让大家能快速获取到需要的内容&#xff0c;这里提前说明一下本文适用…