k8s中,为什么把pod的服务以deployment的形式通过nodeport对外发布,以及容器和虚拟机的一些区别

news2024/9/17 9:14:04

deployment是个控制器

主要负责管理pod,来代表k8s集群向外提供稳定的服务。

说,k8s有很多优点。

说k8s的优点,可能先需要说容器提供的便利。

同样的硬件资源

跑几个虚拟机,每个虚拟机上跑几个服务。

就挺重了。风扇呼呼叫

cpu温度嘎嘎上

这,大家叫资源消耗太高

那么提供同样量级的算力、存储等服务

容器化应用需要的资源少很多

服务器感觉也比较轻松

同样

同样的资源供给,容器化应用提供的服务量级更高,可以响应更多的服务

为数据服务的提供方,比如企业,提供更高的服务处理能力。

容器的底层技术来自于镜像

镜像由一层层的只读文件组成

这些只读文件,提供的是容器运行的环境。

比如,跑一个nginx容器,容器里面是nginx进程

跑这个容器,需要一个nginx镜像

镜像里面有多个只读层。

这些只读层,都需要linux操作系统的什么

总不至于需要整个linux操作系统吧

整个linux操作系统包含几乎跑所有服务的所有系统级别的环境

而nginx只需要linux操作系统的操作系统级别的操作系统的一部分资源

把这些资源,做成只读文件,这个只读文件,在容器镜像的角度来讲

就是容器镜像的一个基础层

在这个基础层上,跑nginx进程还需要什么,比如说,

有了操作系统,起码得有nginx软件包的那些东西吧

对,把软件包的那些东西作用一个只读文件,算容器的镜像的一个层

放到基础层上面去

然后还需要什么

需要环境变量,跑nginx时,环境变量需要怎样

弄个文件,弄个只读层

放上去

还需要什么

nginx的配置文件,和调用配置文件,是实现nginx功能的

一个配置的重点

也写成文件,做成只读层。

总的来说,容器镜像。就是多个只读的文件。

是容器运行的环境以及配置。

当用docker run或者写dockerfile,启动容器的时候

那么docker程序就会通过cpu的计算

来读取容器镜像的这些只读文件

来跑一起来一个里面运行着nginx进程的容器

这个怎么听起来像是和虚拟机区别也不是很大。

那么容器和虚拟机有几个比较大的区别:

1.如何调用硬件资源

容器直接找操作系统,让操作系统找cpu进行工作

虚拟机里面的进程,需要找虚拟机的操作系统,然后虚拟机的操作系统需要找虚拟化技术做出来的虚拟化层qemu,qemu负责把虚拟机内操作系统的请求,转发给cpu。

相对比,虚拟化技术比容器化技术,对于从进程的请求达到cpu,的这个链路上,多了一个虚拟机的操作系统,和虚拟化层的qemu

qemu是个仿真器,可以给虚拟机提供虚拟硬盘,虚拟内存,虚拟网卡等

kvm是个支持虚拟化的内核模块,qemu仿真器和kvm内核模块,一起工作,可以做出来比较不错的虚拟机。而虚拟机不仅需要虚拟化的计算存储网络硬件资源,还需要虚拟的操作系统内核,每一个虚拟机需要,相当于复制一份操作系统内核。

那么从数据链路上来讲,容器里的进程和虚拟机里的进程,都找物理cpu工作

虚拟机比容器多了两个较明显的步骤

一个是进程的请求先要打到虚拟机操作系统上,第二个是虚拟机操作系统的请求要打到虚拟化层qemu这里,然后qemu把这个请求给物理操作系统的内核模块kvm,kvm把这个请求发给cpu。

而容器里面进程的请求链路是这样的,容器里面的进程请求直接找物理操作系统的内核,然后物理操作系统的内核,把请求发给cpu

对比之下,容器的链路就少了虚拟操作系统,和qemu,这两个层。

请求的链路是这样的。那么响应的链路,也是多了这两个层。

所以虚拟机的数据链路就要比容器长一些。

从资源消耗角度来看,多的这两个层,一个是虚拟机的操作系统,需要复制物理机上的操作系统,一个是qemu要模拟出来的虚拟硬件软件等资源。

应该都需要占用一些计算和存储的资源。

加上通信链路的长度。

容器比虚拟机占用的资源更少,响应速度更快。

而虚拟机比容器隔离性可能更好,因为每个虚拟机有一个自己的操作系统。

这样的特点,可能就比较能够了解了。

那么k8s在容器的基础上

有一个比较受欢迎的地方

是,k8s的自动化部署、管理、编排容器的能力比较不错。

那么k8s实现这样的功能,是需要比较多的组件。

部署、管理、编排,这些功能,在不容器化的时候

在物理机和虚拟机上,也讲究部署管理编排。

那么k8s这里,除了操作对象的是容器,

还有什么特别的呢

这个就跟控制器deployment有关系

deployment控制器,管理的资源对象是pod

pod里面是数个容器,容器里面是进程,进程可以有一个,也可以有多个

一般情况下一个容器主要跑一个进程

deployment控制器是k8s控制器里面比较常用的

它通过replicaset管理pod

一条命令,kubectl  scale  deployment  xxx  replicas=number

number是数字,写几,deployment控制器就会让replicaset把pod的的数量调整到几

而不用手工增加pod

如果有的pod不在运行状态了

deployment可以自动维护pod的数量,自动创建

比如,replicas设置的是9个pod,其中的3个被删除,那么deployment控制器会让replicas自动再创建3个新的pod,而这个过程不用管理人员去管。

是deployment控制器自动去操作的。

这个就体现了自动化运维。

那么为什么对外发布服务的时候要用deployment结合nodeport进行发布呢

而不是直接用pod和nodeport发布

是因为deployment相当于一个pod的总管理

外面服务要访问pod进程提供的服务,找deployment就行了。

pod部署在哪个节点上,

pod的迁移,

pod的重启,

pod的数量扩展

pod的滚动更新

这些操作,对于k8s集群外部来的访问,都不用太关心。

外部的访问只用到达deployment这一层就行了

deployment负责提供服务。

pod的滚动更新的意思是

新的pod产生了,而且running比较ok

才会逐步删除旧的pod

这样就会实现服务的不停机更新。

比如deployment管的这些pod提供的是nginx服务

里面nginx的版本要从一个旧的更新成新的。

那么新版本的pod会逐步生成

旧版本的pod会逐步删除

在服务的使用的那一方

体验是平稳的。

所以,应该可以这样认为

nodeport转发进来的服务

给到deployment,是更符合实践需要的。

 

 

 

 

 

 

 

 

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

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

相关文章

数据库的操作:SQL语言的介绍

一.前言 SQL是一种结构化查询语言。关系型数据库中进行操作的标准语言。 二.特点 ①对大小写不敏感 例如:select与Select是一样的 ②结尾要使用分号 没有分号认为还没结束; 三.分类 ①DDL:数据定义语言(数据库对象的操作(结…

服务器重装系统,数据备份 容器备份

文章目录 1.前言2.docker备份2.1 容器备份2.2 镜像备份2.3 数据卷备份 3.docker安装4.jdk安装5.导入镜像6.导入容器 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信&a…

【最新华为OD机试E卷-支持在线评测】计算疫情扩散时间(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

DDComponentForAndroid:探索Android组件化方案

在现代Android应用开发中,随着应用规模的不断扩大,传统的单体应用架构已经无法满足快速迭代和维护的需求。组件化架构作为一种解决方案,可以将应用拆分成多个独立的模块,每个模块负责特定的功能,从而提高代码的可维护性…

2.ChatGPT的发展历程:从GPT-1到GPT-4(2/10)

引言 在人工智能领域,自然语言处理(NLP)是连接人类与机器的重要桥梁。随着技术的不断进步,我们见证了从简单的文本分析到复杂的语言理解的转变。ChatGPT,作为自然语言处理领域的一个里程碑,其发展历程不仅…

【C/C++】C++程序设计基础(继承与派生、多态性)

目录 八、继承与派生8.1 派生类的引入与特性8.2 单继承8.3 同名成员的访问方式8.4 赋值兼容规则8.5 单继承的构造与析构8.6 多继承 九、多态性9.1 运算符重载9.2 虚函数9.3 纯虚函数与抽象类 八、继承与派生 8.1 派生类的引入与特性 -继承:一旦指定了某种事物父代的本质特征&a…

线程相关内容

线程 一、介绍二、thread库1、构造函数(1)函数(2)说明(3)注意 2、join函数3、detach4、joinable函数5、get_id函数 三、mutex的种类1、mutex(1)介绍(2)lock&a…

vant UI之van-tab如何实现标题两行显示

前言: 相必大家在开发移动端或者小程序时都会见到如下设计稿 这个时候大家基本上都会想到使用vant UI 的van-tab组件,如果实现不了那就自己封装一个tab组件这样的情况。 其实使用van-tab是可以实现的,不过要借助van-tab的一系列api和css&…

数据结构(2):LinkedList和链表[1]

下面我们来介绍一种新的数据结构,链表。 我们曾经讨论过顺序表。它的数据存储在物理和逻辑上都是有逻辑的。而我们今天要学习的链表,则在物理结构上非连续存储,逻辑上连续。 1.链表的认识 链表由一个一个的节点组成。 我们可以想象一列火…

乐鑫安全制造全流程

主要参考资料: 【乐鑫全球开发者大会】DevCon24 #10 |乐鑫安全制造全流程 乐鑫官方文档Flash加密: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/security/flash-encryption.html 【ESP32S3】使用 Flash 下载工具完成 Flash 加密功能…

C++ | Leetcode C++题解之第394题字符串解码

题目&#xff1a; 题解&#xff1a; class Solution { public:string src; size_t ptr;int getDigits() {int ret 0;while (ptr < src.size() && isdigit(src[ptr])) {ret ret * 10 src[ptr] - 0;}return ret;}string getString() {if (ptr src.size() || src[…

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目&#xff1a; 题解&#xff1a; static const int MASK1 1 << 7; static const int MASK2 (1 << 7) (1 << 6);bool isValid(int num) {return (num & MASK2) MASK1; }int getBytes(int num) {if ((num & MASK1) 0) {return 1;}int n 0;in…

windows电脑自动倒计时关机

今天聊一聊其他的。我时不时的有一个需求&#xff0c;是关于在windows电脑上定时关机。 不知道怎么地&#xff0c;我好几次都忘了这个自动定时关机的终端命令&#xff0c;于是每一次都要去网上查。 1.鼠标右击【开始菜单】选择【运行】或在键盘上按【 WinR】快捷键打开运行窗口…

【变化检测】基于STANet建筑物(LEVIR-CD)变化检测实战及ONNX推理

主要内容如下&#xff1a; 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、STANet模型训练与预测 4、Onnx运行及可视化 运行环境&#xff1a;Python3.8&#xff0c;torch1.12.0cu113 likyoo变化检测源码&#xff1a;https://github.com/likyoo/open-cd 使用情况&#xff1a…

力扣周赛:第414场周赛

&#x1f468;‍&#x1f393;作者简介&#xff1a;爱好技术和算法的研究生 &#x1f30c;上期文章&#xff1a;[首期文章] &#x1f4da;订阅专栏&#xff1a;力扣周赛 希望文章对你们有所帮助 本科打ACM所以用的都是C&#xff0c;未来走的是Java&#xff0c;所以现在敲算法还…

探索未来住宿新体验:酒店智能开关引领的智慧生活

酒店智能开关作为智慧酒店的重要组成部分&#xff0c;正悄然改变着我们的旅行住宿方式&#xff0c;让每一次入住都成为一场科技与舒适的完美邂逅。 智能开关&#xff1a;重新定义酒店房间的每一个角落 传统酒店中&#xff0c;房间的灯光、空调、窗帘等设备的控制往往依赖于手动…

LCD字符图片显示——FPGA学习笔记11

一、字模显示原理 字模数据&#xff1a;将这个0/1矩阵按照屏幕扫描的顺序以字节的形式体现。 取模软件设计&#xff1a; 点阵数要按照实际情况填写 二、实验任务 本节的实验任务是通过开发板上的RGB TFT-LCD接口&#xff0c;在RGB LCD液晶屏的左上角位置从上到下依次显示图片以…

【数据结构】希尔排序(缩小增量排序)

目录 一、基本思想 1.1 引入希尔排序的原因 1.2 基本思想 二、思路分析 三、gap分组问题 四、代码实现 4.1 代码一&#xff08;升序&#xff09; 4.2 代码二&#xff08;升序&#xff09; 五、易错提醒 六、时间复杂度分析 七、排序小tips 一、基本思想 1.1 引入希尔…

Vue3:<Teleport>传送门组件的使用和注意事项

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Vue3 引入了一个新的内置组件 <Teleport>&#xff0c;它允许你将子组件树渲染到 DOM 中的另一个位置&#xff0c;而不是在父组件的模板中直接渲染。这对于需要跳出当前组件的 DOM 层级结构进行渲染的…

15.1 JDBC数据库编程1

目录 15 引言 15.1.1 数据库语言SQL 15.2 JDBC体系结构 15.2.1 JDBC访问数据库 15.2.2 JDBC API介绍 15 引言 数据库系统&#xff08;database system,DBS&#xff09;由一个互相关联的数据集合和一组用以访问这些数据的程序组成。这个数据集合通常称为数据库。 …