概念理论类-k8s :架构篇
转载:新手通俗易懂 k8s :架构篇
Kubernetes,读音是[kubə’netis],翻译成中文就是“库伯奈踢死”。当然了,也可以直接读它的简称:k8s。为什么把Kubernetes读作k8s,因为Kubernetes中间有8个字母,所以简称为k8s。k8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
k8s 在企业中的应用场景
首先我们了解一下 k8s 的三个基本特点:
-
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
-
可扩展: 模块化,插件化,可挂载,可组合
-
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
自动化运维平台
对于中小型企业,为了降本增效,使用 k8s 来构建一套自动化运维平台,提供了应用部署,规划,更新,维护的一种机制。
对于大型互联网公司更要使用容器化部署。现在服务器越来越多,不可能都人工部署,需要使用自动化的运维平台来监控服务,来实现自动服务化的部署、运维。
充分利用服务器资源
假设现在有一个开发量为 200 个的请求,服务器配置为 2cpus 4G
-
静态请求:150(访问 CDN,Nginx,cache 等)
-
动态请求:50(访问数据库,需要把数据读入内存)
估算服务器资源(只考虑内存,不考虑程序响应时间RT,不考虑CPU切换时间)
假设一个静态请求进程占用2M,一个动态请求进程占用10M,则这200个请求并发占用:150×2M + 50×10M = 800M 内存
可以支持的 QPS (批发量,每秒查询率) 为:200×4=800(因为 800 M× 4 < 4G)
因此如果要充分利用服务器资源,需要达到 QPS=800,此时占用内存 3.2G(剩下 0.8G 给 OS 等)
实际上:800QPS 无法达到,还要考虑 RT、CPU 切换、内存等因素,那就保守把 QPS=300,但这时没能充分利用服务器的资源。更何况当下服务器配置可不止 2cpus 4G
容器化解决方案,在服务器部署多个容器,容器当中运行着我们部署的各种服务

服务无缝迁移
在开发环境开发,然后拿到测试环境去测试,但往往一上线就会有 bug,因为应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,所以生产环境的不一致就可能导致错误。
使用容器化解决方案,每个应用可以被打包成一个容器镜像(红色圈起来表示把服务部署在容器中),使用容器可以在 开发 或 测试 的阶段,为应用创建容器镜像,这些镜像能够完全脱离环境,每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。使用 kubernetes 来管理这些容器,便能够实现服务的无缝迁移。

服务部署模式变迁 & 服务部署变化问题的思考
服务部署模式是如何变迁的
-
物理机:传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作。
-
虚拟化 (虚拟机):当然上面的问题可以通过创建虚拟机的方式来实现某些功能,但是虚拟机本身就很占用资源,并不利于可移植性。(就是把服务部署在虚拟机中,达到分隔物理资源的作用——充分利用服务器资源)
-
容器部署:每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。而且更轻量级、运行效率更快。
服务部署模式变化,带来了哪些问题
前提条件:SOA 架构,微服务架构模式下,服务拆分越来越多,部署维护的服务越来越多,该如何管理?
虚拟机服务部署方式(通过 openstack 软件提供可视化的方式来管理虚拟机) 容器化部署模式(通过 k8s 软件管理容器,其实容器也可以看成一个虚拟机,只不过更轻量级)
容器化部署问题:
-
如何对服务横向扩展?
-
容器宕机怎么办?如何恢复?
-
重新发布版本如何更新且更新后不影响业务?
-
如何监控容器?
-
容器如何调度创建?
-
数据安全性如何保证?
使用 k8s 管理容器,以上问题都能够完美的解决
云架构 & 云原生
云 和 k8s 的关系
云:使用容器构建的一套服务集群网络,云是由很多的容器构成。
k8s:用来管理云中的容器
云架构
-
iaas:基础设施即服务
用户角度:租用(购买或分配权限)云主机,用户不用考虑网络、DNS、存储和硬件环境等方面的问题。
运营商角度:提供网络、DNS、存储等这样的服务就叫做基础设置服务
-
paas:平台即服务
在平台上提供了很多服务,如 MySQL 服务、Redis 服务、MQ 服务、Elasticsearch 服务等等
-
saas:软件即服务
钉钉、财务管理等等,一些软件维护工作都是由运行商来做,用户只管体验软件提供的服务就行了。
-
serverless:server 服务,less 无 —— 无服务 不需要服务器
站在用户角度考虑问题,用户只需要使用云服务器即可。
在云服务器上的所有的基础环境、软件环境都不需要考虑和维护,非常方便。
未来开发的趋势都是 severless,企业都构建了自己的私有云或者公有云环境。使用 k8s 构建非常方便。
云原生
为了让应用程序(项目,服务软件)都运行在云上的解决方案,这样方案叫做云原生,有以下特点:
-
容器化:所有的服务都必须部署在容器中。
-
微服务:web 服务架构是微服务架构
-
CI/CD:可持续交互和可持续部署
-
DevOps:开发和运维密不可分
kubernetes 架构原理
k8s 的历史
k8s 是由 Google 公司 用go 语言开发的。google 在全球有相当多的服务器,当然需要一个管理软件。Google内部本身就有一个叫 borg 的系统云平台管理工具,已经使用了十几年。后来参照 borg 系统架构开发了 k8s,主要用它来编排、管理容器,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
k8s 的架构
k8s 集群(Cluster)

一个 master 对应一群 node 节点
master 节点

-
api server:相当于 k8s 的网关,所有的指令请求都必须经过 api server
-
scheduler:调度器,使用调度算法,把请求资源调度到某个 node 节点
-
controller:控制器,维护 k8s 资源对象(CRUD:添加、删除、更新、修改)
-
etcd:存储资源对象(可以服务注册、发现等等)
node 节点

-
docker:运行容器的基础环境,容器引擎
-
kubelet:每个 node 节点都有一份kubelet,在 node 节点上的资源操作指令由 kuberlet 来执行,scheduler 把请求交给api ,然后 api sever 再把信息指令数据存储在 etcd 里,于是 kuberlet 会扫描 etcd 并获取指令请求,然后去执行
-
kube-proxy:代理服务,负载均衡
-
fluentd:日志收集服务
-
pod:k8s 管理的基本单元(最小单元),pod 内部是容器。k8s 不直接管理容器,而是管理 pod
回顾架构特点
-
k8s 是用来管理容器的,但是不直接操作容器,最小的操作单元是 pod(间接管理容器)
-
一个 master 对应一群 node 节点。
-
master 节点不存储容器,只负责调度,网关,控制器,资源对象存储等
-
容器存储在 node 节点 的 pod 内部
-
pod 内部可以有一个或多个容器
-
kubelet 负责本地的 pod 的维护,CRUD
-
kube-proxy 负责负载均衡,在多个 pod 间负载均衡
相关文章:
概念理论类-k8s :架构篇
转载:新手通俗易懂 k8s :架构篇 Kubernetes,读音是[kubə’netis],翻译成中文就是“库伯奈踢死”。当然了,也可以直接读它的简称:k8s。为什么把Kubernetes读作k8s,因为Kubernetes中间有8个字母…...
window10家庭版中文转专业版流程
1.确认当前为家庭中文版 2.用管理员权限打开cmd窗口 3.输入 dism /online /get-targeteditions ,查询当前支持的升级的版本 4.专业版密钥:VK7JG-NPHTM-C97JM-9MPGT-3V66T 5.changepk.exe /productkey VK7JG-NPHTM-C97JM-9MPGT-3V66T...
Chrome显示分享按钮
分享按钮不见了! Chrome://flags Chrome Refresh 2023 Disabled 左上角的标签搜索会到右上角。...
GPTS-生成一个动漫图像GPT
介绍 GPTs是ChatGPT的定制版本,用户可以通过组合指令、知识和功能来定制用于特定任务或主题的GPT。它们可以根据需要简单或复杂,解决从语言学习到技术支持等各种事情。 创建GPTs Plus和Enterprise用户可以在chat.openai.com/create上开始创建GPTs。 您可以通过在ChatGPT上的…...
在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2
在gazebo里搭建一个livox mid360 惯导仿真平台测试 FAST-LIO2 前言立方体平台加入 livox mid360 激光雷达加入IMU模块调整底盘大小 并设计调用接口测试 Fast-Lio2 前言 livox mid360 在官网一直没有货,在gazebo里可以仿真该雷达形式的点云。 但是其只发布雷达的数…...
SpringMVC文件下载
<!--解决找不到“jquery-3.4.1.min.js”(静态资源访问)的问题 --> <mvc:default-servlet-handler/>方式1:如果去掉download就是查看图片 <a href"${pageContext.request.contextPath}/uploadfiles/${requestScope.filena…...
前端项目打包放到springboot项目时,访问不带index.html
当您的前端项目被打包并放到 Spring Boot 项目中时,如果想要通过访问不带 index.html 的路径来直接进入前端页面,您可以使用以下方法: 1,在 Spring Boot 项目中添加一个路由规则,将所有对特定路径的请求重定向到前端页…...
Tomcat注册为服务后,如何配置Tomcat内存大小
前提条件:tomcat已经注册为服务。 1.winR,输入regedit打开注册表 2.找到Tomcat注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat80603.找到jvm内存配置路径: HKEY_LOCAL_MACHINE\SOFTW…...
C语言入门实战教程——嵌入式必备教程(2023年版最全最新整理)
一、初识C语言 C语言诞生于美国的贝尔实验室,由丹尼斯里奇(Dennis MacAlistair Ritchie)以肯尼斯蓝汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,C语言是一个功能简化的版本,它使C…...
Chatbot开发三剑客:LLAMA、LangChain和Python
聊天机器人(Chatbot)开发是一项充满挑战的复杂任务,需要综合运用多种技术和工具。在这一领域中,LLAMA、LangChain和Python的联合形成了一个强大的组合,为Chatbot的设计和实现提供了卓越支持。 首先,LLAMA是…...
【Spring之AOP底层源码解析】
文章目录 一、动态代理1.1、ProxyFactory1.2、Advice的分类1.3、Advisor的理解 二、创建代理对象的方式2.1、ProxyFactoryBean2.2、BeanNameAutoProxyCreator2.3、DefaultAdvisorAutoProxyCreator 三、Spring AOP的理解3.1、AOP中的概念3.2、Advice在Spring AOP中对应API3.3、T…...
【UCAS自然语言处理作业二】训练FFN, RNN, Attention机制的语言模型,并计算测试集上的PPL
文章目录 前言前馈神经网络数据组织Dataset网络结构训练超参设置 RNN数据组织&Dataset网络结构训练超参设置 注意力网络数据组织&Dataset网络结构Attention部分完整模型 训练部分超参设置 结果与分析训练集Loss测试集PPL 前言 本次实验主要针对前馈神经网络࿰…...
RabbitMQ消息模型之Sample
Hello World Hello World是官网给出的第一个模型,使用的交换机类型是直连direct,也是默认的交换机类型。 在上图的模型中,有以下概念: P:生产者,也就是要发送消息的程序C:消费者:消…...
安全技术与防火墙
目录 安全技术 防火墙 按保护范围划分: 按实现方式划分: 按网络协议划分. 数据包 四表五链 规则链 默认包括5种规则链 规则表 默认包括4个规则表 四表 查询 格式: 规则 面试题 NFS常见故障解决方法 安全技术 入侵检测系统 (Intrusion Detection Sy…...
Windows系统搭建Appium 2 和 Appium Inspector 环境
前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进: …...
计算机应用基础_错题集_OutLook操作题_操作系统应用题_电子表格---网络教育统考工作笔记005
6、(说明:考生单击窗口下方的“打开[Outlook]应用程序”启动Outlook) 按以下要求保存草稿。 收件人:test_xiao_ming@163.com...
2023-11-26 LeetCode每日一题(统计子串中的唯一字符)
2023-11-26每日一题 一、题目编号 828. 统计子串中的唯一字符二、题目链接 点击跳转到题目位置 三、题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s “LEETCODE” ,则其…...
HTML新手入门笔记整理:特殊符号
音标符 音标符 字符 Construct 输出结果 ̀、 a a à ́′ a a án ˆ a a â ̃~ a a ã ̀̀、 O O Ò ́́′ O O Ó ˆ O O Ô ̃~ O O Õ 字符 显示结果 描述 实体名称 实体编号 空格 <…...
物联网中基于信任的安全性调查研究:挑战与问题
A survey study on trust-based security in Internet of Things: Challenges and issues 文章目录 a b s t r a c t1. Introduction2. Related work3. IoT security from the one-stop dimension3.1. Output data related security3.1.1. Confidentiality3.1.2. Authenticity …...
tex2D使用学习
1. 背景: 项目中使用到了纹理进行插值的加速,因此记录一些自己在学习tex2D的一些过程 2. 代码: #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <assert.h> #include <stdio.h>…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
