k8s的整体架构及其内部工作原理,以及创建一个pod的原理

news2024/12/23 23:32:04

一、k8s整体架构

二、k8s的作用,为什么要用k8s,以及服务器的发展历程

1、服务器:缺点容易浪费资源,且每个服务器都要装系统,且扩展迁移成本高
2、虚拟机很好地解决了服务器浪费资源的缺点,且部署快,成本低但每台虚拟机需要安装系统,从而对内存等资源造成了一定的浪费

3、容器恰好解决了虚拟机装系统浪费资源的缺点,也能很好地实现隔离,且一台机器上可以部署好多容器,但当机器出现宕机时,一台机器上的所有容器都会停止运行,不能自我修复

因此需要一个资源管理,资源编排的工具即k8s应用而生

三、k8s基本概念

1、pod

Pod本身是豌豆荚,为k8s的最小调度单元,里面会包含一个或多个容器(Container),Pod内的容器共享存储及网络,可通过localhost通信。

2、Deployment


pod 上层的一个抽象,它可以定义一组 Pod 的副本数目、以及这个 Pod 的版本。一般用 Deployment 来做应用的真正的管理,而 Pod 是组成 Deployment 最小的单元

  • 定义一组Pod的副本数量,版本等;
  • 通过控制器维护Pod的数目;
  • 自动恢复失败的Pod;
  • 通过控制器以指定的策略控制版本

3、Service


Pod是不稳定的,IP会发生变化,因此需要一层抽象来屏蔽这种变化,Service可以实现,其主要功能为:

  • 提供访问一个或者多个Pod实例稳定的访问地址;
  • 支持多种访问方式ClusterIP(对集群内部访问)NodePort(对集群外部访问)LoadBalancer(集群外部负载均衡)。

4、Volume


Volume表示存储卷,Pod访问文件系统的抽象层,具体的后端存储可以是本地存储、NFS网络存储、云存储以及分布式存储等。

  • 声明在Pod中容器可以访问的文件系统;
  • 可以被挂载在Pod中一个或多个容器的指定路径下;
  • 支持多种后端储存

5、NameSpace


用以资源的逻辑隔离,上述小节均属于资源,不同ns下可以同名,相同ns下需唯一。

  • 一个集群内部的逻辑隔离机制(鉴权、资源等);
  • 每个资源都属于一个Namespace;
  • 同一个Namespace中资源命名唯一;
  • 不同Namespace中资源可重名;

6、Master组件

kube-apiserver:Kubernetes API,集群统一入口,各组件协调者,以RESTful API提供接口服务,所有对象的资源的增删改查和监听操作都交给APIServer处理后在提交给Etcd存储。

1)提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
2)提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);
3)是资源配额控制的入口;

controller-manager:是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。

scheduler:scheduler 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)

工作原理:

kube-scheduler 调度分为两个阶段,predicate 和 priority
1)predicate:过滤不符合条件的节点
2)priority:优先级排序,选择优先级最高的节点

etcd:Etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点:

1)简单:基于HTTP+JSON的API让你用curl就可以轻松使用。

2)安全:可选SSL客户认证机制。

3)快速:每个实例每秒支持一千次写操作。

4)可信:使用Raft算法充分实现了分布式。

主要功能:

1)基本的 key-value 存储
2)监听机制
3)key 的过期及续约机制,用于监控和服务发现
4)原子性操作(CAS 和 CAD),用于分布式锁和 leader 选举

7、Node组件

kubelet:kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载Secret、获取容器节点状态工作。kubelet将每个Pod转换成一组容器。

每个节点上都运行一个 kubelet 服务进程,默认监听 10250 端口,接收并执行 master 发来的指令,管理 Pod 及 Pod 中的容器。每个 kubelet 进程会在 API Server 上注册节点自身信息,定期向 master 节点汇报节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。

kube-proxy:在node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。

每台机器上都运行一个 kube-proxy 服务,它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡(仅支持 TCP 和 UDP)。

kube-proxy 可以直接运行在物理机上,也可以以 static pod 或者 daemonset 的方式运行。

docker或rocket:容器引擎,运行容器。

8、K8S创建一个Pod的流程

1、用户通过kubectl向api-server发起创建pod请求。

2、apiserver通过对应的kubeconfig进行认证,认证通过后将yaml中的po信息存到etcd。

3、Controller-Manager通过apiserver的watch接口发现了pod信息的更新,执行该资源所依赖的拓扑结构整合,整合后将对应的信息交给apiserver,apiserver写到etcd,此时pod已经可以被调度。4、Scheduler同样通过apiserver的watch接口更新到pod可以被调度,通过算法给pod分配节点,并将pod和对应节点绑定的信息交给apiserver,apiserver写到etcd,然后将pod交给kubelet。

5、kubelet收到pod后,调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载。

6、网络,容器,存储创建完成后pod创建完成,等业务进程启动后,pod运行成功。

流程图如下:

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

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

相关文章

【从零开始学习Redis | 第十一篇】快速介绍Redis持久化策略

前言: Redis 作为一种快速、高效的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景。然而,由于其特性是基于内存的,一旦服务器进程退出,内存中的数据就会丢失。为了解决这一问题,Redis 提供了持久…

删除表空间

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 当某个表空间中的数据不再需要时,或者新创建的表空间不符合要求时,可以考虑删除这个表空间。若要删除表空间,则需要用户具有 DROP TABLESP…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数(默认参数) 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑,许多现代计算机语言都受C语言的影响。C语言是面向过程的,结构化和模块化…

社交媒体数据恢复:皮皮搞笑

一、数据恢复前的准备 在开始数据恢复之前,请确保您已经完成了以下准备工作: 确认您具有管理员权限,以便在操作过程中避免不必要的错误。 确保您的设备电量充足,以免在数据恢复过程中因电量不足而导致数据丢失。 如果您需要恢复…

解决el-upload组件上传文件403 Forbidden的问题

话不多说,上错误。网络显示: 控制台显示: 并且后端也没接收到任何的请求。 只需要把前端中的组件: action的路径修改为: 也就是不写前面的localhost,而是拼接上发送请求拼接的‘api’即可 可以看到&#x…

【前端】CSS基础(2)

文章目录 前言1、CSS选择器1.1选择器的功能1.2 选择器的种类1.2.1 基础选择器1.2.1.1 标签选择器1.2.1.2 类选择器1.2.1.3 id选择器1.2.1.4 通配符选择器1.2.1.5 伪类选择器 1.2.2 复合选择器1.2.2.1 后代选择器1.2.2.2 子选择器1.2.2.3 并集选择器 前言 这篇博客仅仅是对CSS的…

风电功率预测 | 基于RBF径向基神经网络的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于RBF(径向基函数)神经网络的风电功率预测是一种常见的方法。RBF神经网络是一种前馈神经网络,其隐藏层使用径向基函数作为激活函数。 下面是一个基于RBF神经网络的风电功率预测的一般步骤: 数据收集:收集包括风速、风向…

鉴源论坛·观通丨轨交软件测试技术详述

作者 | 刘艳青 上海控安安全测评部测试经理 版块 | 鉴源论坛 观通 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 集成测试技术要求 1.1 总体要求 对软件集成测试进行静态测试应先于动态测试; 集成过程是动态进行的,在测…

软件工程期末复习(7)需求过程

需求分析 需求过程 什么是需求过程? 需求过程是用来导出、确认和维护系统需求文档的一组结构化活动。通常,一个良好的需求过程应包括下列活动: 需求提取需求分析和协商需求确认 需求提取 需求提取是通过与客户、系统用户和其他与系统开发相…

谷歌I/O 2024大会全面硬刚OpenAI

🦉 AI新闻 🚀 谷歌发布升级版Gemini机器人 竞争OpenAI ChatGPT-4 摘要:谷歌展示了升级版的 Gemini 聊天机器人,其支持实时处理视频和语音输入,并准确回答问题。此次发布时机与 OpenAI 公布 ChatGPT-4o 新模型几乎同步…

C++多态实现原理详解

阅读引言: 我想象了一下, 假如人有突然问我什么是多态, 我该如何给别人说清楚呢?所以写下这篇文章, 希望大家看完有所收获。 目录 ①. 开胃小菜 ②. 多态常见的一个小小面试题 ③, 虚函数指针虚函数表 …

FPGA - Xilinx系列高速收发器---GTX

1,GTX是什么? GT :Gigabit Transceiver千兆比特收发器; GTX :Xilinx 7系列FPGA的高速串行收发器,硬核 xilinx的7系列FPGA根据不同的器件类型,集成了GTP、GTX、GTH、GTZ四种串行高速收发器&am…

ARM机密计算组件

安全之安全(security)博客目录导读 目录 ​一、硬件架构 1、RME 二、软件和固件架构 1、RMM 2、其他固件标准(例如PSCI) 三、开源实现 1、TF-A 2、Veraison 3、工具链 四、动态TrustZone技术 Arm机密计算架构(Arm CCA)引入了一系列硬件和软件…

信息化总体架构方法_2.信息化工程建设方法

1.信息化架构模式 信息化架构一般有两种模式,一种是数据导向架构,一种是流程导向架构。对于数据导向架构重点是在数据中心,BI商业智能等建设中使用较多,关注数据模型和数据质量;对于流程导向架构,SOA本身就…

如何利用3D可视化大屏提升信息展示效果?

老子云3D可视化平台https://www.laozicloud.com/ 引言 在信息爆炸的时代,如何有效地传达和展示信息成为了各行各业的一大挑战。传统的平面展示方式已经无法满足人们对信息展示的需求,3D可视化大屏应运而生,成为了提升信息展示效果的利器。本…

二分法的时间复杂度是logN

对数函数: (a>0, a≠1, x>0) 当αe时,记为yln x 当α10时,记为ylg x 当α2时,记为ylog x 其中x是自变量,函数的定义域是(0,∞),…

数智转型 聚创未来 | 2024达索系统企业转型智造论坛汽车零部件专场

报名链接: 数智转型 聚创未来https://3ds.tbh5.com/3ds/ureg.aspx?fwbestway

Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测) 模型设计 融合Adaboost的CNN-BiLSTM模型的时间序列预测,下面是一个基本的框架。 数据准备: 收集并整理用于时…

环境光遮蔽技术在AI去衣应用中的创新探索

引言: 随着计算机视觉和人工智能技术的飞速发展,AI去衣技术逐渐走进公众视野。这一技术以其独特的应用前景和技术挑战引起了广泛的关注。在实现衣物去除的同时保持图像质量的关键技术之一,便是环境光遮蔽技术。本文将深入探讨环境光遮蔽技术在…

“Linux”的vi / vim目录编辑器

在前面中我们了解到Linux中的基础命令,20多个命令每个记住格式是:命令 选项 参数或者文件名,下面在了解一下最后两个命令:tree命令和find命令 一、补充的命令 (1)tree 作用:以竖状显示文件…