当前位置: 首页 > article >正文

涨薪技术|k8s设计原理

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、集群自身的配置和管理等

相关文章:

涨薪技术|k8s设计原理

01k8s介绍 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化 工作负载和服务,有助于实现声明性配置和自动化。它有一个庞大、快速增长的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 这个名字起源于希腊语,意思是舵…...

基于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,手把手教…...

清晰易懂的 Maven 彻底卸载与清理教程

一、Windows 系统卸载 Maven 步骤 1:删除 Maven 安装目录 找到 Maven 的安装路径(默认可能为 C:\Program Files\apache-maven-3.x.x 或自定义路径)。直接删除整个 Maven 文件夹(如 apache-maven-3.x.x)。 步骤 2&am…...

光流 | 基于KLT算法的人脸检测与跟踪原理及公式,算法改进,matlab代码

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 人脸检测与跟踪 一、KLT算法原理与分析1. 核心思想2. 数学模型二、人脸…...

Spring MVC请求与响应全解析:从参数绑定到异常处理

文章目录 一、请求映射的艺术:RequestMapping深度解析1. 多级路径配置2. 六大核心属性3. RESTful风格实践 二、参数绑定黑科技1. 智能绑定机制基础类型绑定对象嵌套绑定集合类型绑定 2. 参数处理三剑客 三、响应处理全攻略1. 视图跳转三种模式2. JSON交互实践 四、文…...

用免费的github的key调用gpt实现一个简单的rag自动打分评测系统,不用任何框架

1.环境准备 !pip install pymupdf numpy openai 2.导入依赖 import fitz import os import numpy as np import json from openai import OpenAI 3.pdf提取文本 def extract_text_from_pdf(pdf_path):"""从 PDF 文件中提取文本内容。参数:pdf_path (str): …...

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.现需列转行显示,每行显示 姓名…...

深度学习框架PyTorch——从入门到精通(6.2)自动微分机制

本节自动微分机制是上一节自动微分的扩展内容 自动微分是如何记录运算历史的保存张量 非可微函数的梯度在本地设置禁用梯度计算设置requires_grad梯度模式(Grad Modes)默认模式(梯度模式)无梯度模式推理模式评估模式(n…...

Java面试10个“隐藏考点”

1. Java模块化系统(JPMS)的requires transitive作用 问题:如何在模块化项目中传递依赖? 解析: ​**requires transitive**:声明模块的依赖可被下游模块隐式继承。​示例:模块A依赖模块B并添加…...

【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…...

Linux paste命令

目录 一. 简介二. 基本语法三. 小案例 一. 简介 paste 命令用于合并多个文件的行&#xff0c;按列方式输出&#xff0c;默认以制表符&#xff08;Tab&#xff09;分隔。 ⏹基本语法 paste [选项] 文件1 文件2 ...二. 基本语法 <()的方式模拟文件流paste命令将2个文件流粘…...

大模型金融企业场景落地应用

一、商业银行体系 1. 江苏银行 企业背景&#xff1a;江苏银行是总部位于江苏南京的全国性股份制商业银行&#xff0c;在城商行中资产规模位居前列&#xff0c;积极拥抱金融科技&#xff0c;将数字化转型作为核心战略之一。近年来&#xff0c;江苏银行持续加大在人工智能、大数…...

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

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

神经网络解决非线性二分类

这份 Python 代码实现了一个简单的神经网络&#xff0c;用于解决复杂的非线性二分类问题。具体步骤包含生成数据集、定义神经网络模型、训练模型、测试模型以及可视化决策边界。 依赖库说明 python import numpy as np import matplotlib.pyplot as plt from sklearn.datase…...

CentOS 8.2 上安装 JDK 17 和 Nginx

AI越来越火了&#xff0c;我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、安装 JDK 17 1. 使用 dnf 安装&#xff08;推荐&#xff09…...

Python 爬虫(4)HTTP协议

文章目录 一、HTTP协议1、HTTP特点2、HTTP工作原理3、HTTP与HTTPS的区别 前言&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;用于在客户端和服务器之间传输超文本&#xf…...

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坐标通过多相机&#xff08;针孔/鱼眼&#xff09;内外参投影到图像特征平面&#xff0…...

Midscene.js自然语言驱动的网页自动化全指南

一、概述 网页自动化在数据抓取、UI 测试和业务流程优化中发挥着重要作用。然而&#xff0c;传统工具如 Selenium 和 Puppeteer 要求用户具备编程技能&#xff0c;编写复杂的选择器和脚本维护成本高昂。Midscene.js 通过自然语言接口革新了这一领域&#xff0c;用户只需描述任…...

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

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

基于SpringBoot的名著阅读网站

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

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

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

希尔排序中的Hibbard序列

一 定义 Hibbard序列的每个元素由以下公式生成: h_k = 2^k - 1 其中k从1开始递增,序列为:1, 3, 7, 15, 31, 63, … 二 生成方式 起始条件:k=1,对应h_1=2^1-1=1 递推公式:每次k增加1,计算 h_{k+1}=2^{k+1}-1 示例:前5项…...

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

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

Netty源码—5.Pipeline和Handler一

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

Netlify 的深度解析及使用指南

以下是关于 Netlify 的深度解析及使用指南&#xff0c;结合其核心功能与用户需求&#xff0c;提供一站式解决方案&#xff1a; 一、Netlify 核心优势 全托管静态网站服务Netlify 提供从代码托管、自动化构建到全球 CDN 加速的全流程服务&#xff0c;支持 HTML/CSS/JS 静态资源及…...

MySQL小练习

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

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

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