涨薪技术|k8s设计原理

news2025/3/28 7:19:57

01k8s介绍

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化 工作负载和服务,有助于实现声明性配置和自动化。它有一个庞大、快速增长的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 这个名字起源于希腊语,意思是舵手或飞行员。K8s 作为缩写 计算“K”和“s”之间的八个字母的结果,谷歌开源 2014 年的 Kubernetes 项目。

图片

传统部署时代:早期,组织在物理服务器上运行应用程序。没有办法定义 物理服务器中应用程序的资源边界,这导致了资源 分配问题。例如,如果多个应用程序在物理服务器上运行,则 可能是一个应用程序将占用大部分资源的实例,因此, 其他应用程序将表现不佳。对此的解决方案是运行每个应用程序 在不同的物理服务器上。但这并没有扩大,因为资源没有得到充分利用,而且它 对于组织来说,维护许多物理服务器的成本很高。

虚拟化部署时代:作为一种解决方案,引入了虚拟化。它允许你 在单个物理服务器的 CPU 上运行多个虚拟机 (VM)。虚拟化 允许在 VM 之间隔离应用程序,并提供安全级别为 一个应用程序的信息不能被另一个应用程序自由访问。

虚拟化允许更好地利用物理服务器中的资源,并允许 更好的可扩展性,因为可以轻松添加或更新应用程序,从而减少 硬件成本等等。通过虚拟化,您可以呈现一组物理 资源作为一次性虚拟机群集。

每个 VM 都是运行所有组件的完整计算机,包括其自己的操作 系统,位于虚拟化硬件之上。

容器部署时代:容器类似于 VM,但它们已经放松了 用于在应用程序之间共享操作系统 (OS) 的隔离属性。因此,容器被认为是轻量级的。与 VM 类似,容器 有自己的文件系统、CPU 份额、内存、进程空间等。正如他们 与底层基础架构分离,可跨云移植 和操作系统发行版。

容器之所以流行,是因为它们提供了额外的好处,例如:

  • 敏捷的应用程序创建和部署:提高 容器映像创建与 VM 映像使用相比。

  • 持续开发、集成和部署:提供可靠的 以及快速高效的容器镜像构建和部署 回滚(由于映像不变性)。

  • 开发和运维关注点分离:在 构建/发布时间而不是部署时间,从而解耦 来自基础架构的应用程序。

  • 可观测性:不仅显示操作系统级别的信息和指标,而且 应用程序运行状况和其他信号。

  • 跨开发、测试和生产的环境一致性:运行 在笔记本电脑上和在云中一样。

  • 云和操作系统分发可移植性:在Ubuntu,RHEL,CoreOS,本地运行, 在主要公共云和其他任何地方。

  • 以应用程序为中心的管理:提高运行 虚拟硬件上的操作系统,以使用逻辑资源在操作系统上运行应用程序。

  • 松散耦合、分布式、弹性、解放的微服务:应用程序是 分解成更小的独立部分,可以动态部署和管理 – 不是在一台大型单一用途机器上运行的单片堆栈。

  • 资源隔离:可预测的应用程序性能。

  • 资源利用率:高效率、高密度。

02Kubernetes可以做什么

1)服务发现和负载平衡Kubernetes 可以使用 DNS 名称或使用自己的 IP 地址公开容器。如果容器的流量很高,Kubernetes 能够进行负载均衡和分发。网络流量,以便部署稳定。

2)存储编排Kubernetes 允许您自动挂载您选择的存储系统,例如 本地存储、公共云提供商等。自动推出和回滚您可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 以为您的容器创建新容器 部署,删除现有容器并将其所有资源采用到新容器。

3)自动垃圾箱包装你为 Kubernetes 提供了一个节点集群,它可以用来运行容器化任务。你告诉Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。Kubernetes 可以适合 容器到节点上,以充分利用资源。

4)自我修复Kubernetes 重启失败的容器,替换容器,杀死没有失败的容器 响应用户定义的运行状况检查,并且在客户端之前不会将其通告给客户端 已准备好服务。

5)机密和配置管理Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌、 和 SSH 密钥。您可以部署和更新机密和应用程序配置,而无需 重新构建容器映像,而不会在堆栈配置中公开机密。

03k8s架构

Kubernetes 借鉴了 Borg 的设计理念,比如 Pod、Service、Labels 和单 Pod 单 IP 等。Kubernetes的整体架构跟 Borg 非常像,如下图所示

图片

Kubernetes 主要由以下几个核心组件组成:

  • etcd 保存了整个集群的状态;

  • kube-apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;

  • kube-controller-manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

  • kube-scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

  • kubelet 负责维持容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理;

  • Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI),默认的容器运行时为Docker;

  • kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;

kube-proxy工作原理:

图片

04k8s各组件间协议

图片

CNI:

CNI是Container Network Interface的是一个标准的,通用的接口 ;用于连接容器管理系统和网络插件。提供一个容器所在的network namespace,将network interface插入该network namespace中(比如veth的一端),并且在宿主机做一些必要的配置(例如将veth的另一端加入bridge中),最后对namespace中的interface进行IP和路由的配置。现有解决方案:flannel,calico,weave。

CRI:

容器运行时接口(Container Runtime Interface);CRI包含了一组protocol buffers,gRPC API,相关的库; 提供可插拔的容器运行时 ;k8s节点的底层由一个叫做“容器运行时”的软件进行支撑,它负责比如启停容器这样的事情;Docker是K8s中最常用的容器运行时;

OCI:

围绕容器的格式和运行时制定一个开放的工业化标准,并推动这个标准,保持容器的灵活性和开放性,容器能运行在任何的硬件和系统上,容器不应该绑定到特定的客户机或编排堆栈,不应该与任何特定的供应商紧密关联,并且可以跨多种操作系统;

05mast与node架构图

图片

06k8s分层架构图

图片

分层解释:

核心层:

Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境;

应用层:

部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)、Service Mesh(部分位于应用层);

管理层:

系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)、Service Mesh(部分位于管理层);

接口层:kubectl 命令行工具、客户端 SDK 以及集群联邦;

生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴;

  • Kubernetes 外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS 应用、ChatOps、GitOps、SecOps 等

  • Kubernetes 内部:CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等

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

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

相关文章

基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印): 设置SNR12db 将FPGA数据导入到MATLAB显…

QuecPython 外设接口之GPIO应用指南

基础知识 了解GPIO基础知识更有益于我们使用它。 框图 GPIO(通用输入输出)是指一种通用的数字输入/输出接口,用于与外部电子元件或设备进行通信。它通常存在于微处理器、微控制器和其他嵌入式系统中。 物理电路结构如下图所示&#xff1a…

Spring Boot 整合 Nacos 注册中心终极指南

在微服务架构中,配置管理和动态路由是核心需求。Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,能够帮助开发者实现配置热更新、多环境共享配置以及动态路由管理。本文将结合 Spring Boot 和 Spring Cloud Gateway,手把手教…

SQLServer列转行操作及union all用法

1.创建测试表及数据sql如下 create table ScoresTable( Name varchar(50), ChineseScore int, MathScore int ) insert into ScoresTable values(小张,90,95) insert into ScoresTable values(小王,98,99) 2.表中查询结果如下 3.现需列转行显示,每行显示 姓名…

【GL010】C++

1.C中的const关键字有哪些用法? 1.修饰变量:表示变量的值不可修改。 const int a 10; 2.修饰指针: const int* p: // 指针指向的内容不可修改。 int* const p: // 指针本身不可修改。 const int* const…

(Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏

MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏 paper是HKUST发布在Arxiv 2025的工作 paper title:MagicDistillation: Weak-to-Strong Video Distillation for Large-Scale Portrait Few-Step Synthesis Project page:地址 Abst…

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…

Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成

文件路径models/view_transformers 父类 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函数解析 函数bev_coord_to_feature_coord的功能 将鸟瞰图3D坐标通过多相机(针孔/鱼眼)内外参投影到图像特征平面&#xff0…

同一个局域网的话 如何访问另一台电脑的ip

在局域网内访问另一台电脑,可以通过以下几种常见的方法来实现: ‌直接通过IP地址访问‌: 首先,确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址,这可以通过在目标电脑上打开命令提示符(Windows系…

基于SpringBoot的名著阅读网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Excel(实战):INDEX函数和MATCH函数、INDEX函数实战题

目录 经典用法两者嵌套查值题目解题分析 INDEX巧妙用法让数组公式,自动填充所有、有数据的行/列INDEX函数和SEQUENCE函数 经典用法两者嵌套查值 题目 根据左表查询这三个人的所有数据 解题分析 INDEX函数的参数:第1个参数是选定查找范围&#xff0c…

uniapp超简单ios截屏和上传app store构建版本方法

​ 假如使用windows开发ios的应用,上架的时候,你会发现,上架需要ios应用多种尺寸的ios设备的截图,和需要xcode等工具将打包好的ipa文件上传到app store的构建版本。 大部分情况下,我们的公司都没有这么多款ios设备来…

Netty源码—5.Pipeline和Handler一

大纲 1.Pipeline和Handler的作用和构成 2.ChannelHandler的分类 3.几个特殊的ChannelHandler 4.ChannelHandler的生命周期 5.ChannelPipeline的事件处理 6.关于ChannelPipeline的问题整理 7.ChannelPipeline主要包括三部分内容 8.ChannelPipeline的初始化 9.ChannelPi…

MySQL小练习

目录 一、单表查询 二、多表查询 一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float…

Apache Hive:基于Hadoop的分布式数据仓库

Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统,支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…

检波、限幅、钳位电路

检波电路: 类似调制收音机信号:输入的基波和载波叠加成调制信号(信号需要长距离里传输,频率要高,M级别的频率,所以要把低频信号叠在高频信号,才能把低频信号长距离传输,最后到达接收…

学习threejs,使用TextGeometry文本几何体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.TextGeometry1.1.1 ☘…

Go红队开发—CLI框架(一)

CLI开发框架 命令行工具开发,主要是介绍开发用到的包,集成了一个框架,只要学会了基本每个人都能开发安全工具了。 该文章先学flags包,是比较经典的一个包,相比后面要学习的集成框架这个比较自由比较细化点&#xff0…

高效团队开发的工具与方法 引言

引言 在现代软件开发领域,团队协作的效率和质量直接决定了项目的成败。随着项目规模的扩大和技术复杂度的增加,如何实现高效团队开发成为每个开发团队必须面对的挑战。高效团队开发不仅仅是个人技术能力的简单叠加,更需要借助合适的工具和方…

【Java全栈进阶架构师实战:从设计模式到SpringCloudAlibaba,打造高可用系统】

🌟 分享一个教程,助刚踏入IT行业、工作几年的老油条、或热爱学习的工作党们更上一层楼的! 🌟 ​适合人群:初中级Java开发者、求职面试备战者、技术提升党! 📚 ​内容亮点: 1️⃣ ​…