同一个容器实例可以同时运行在多个宿主机_从零开始学K8s: 3.什么是容器

6655bdfc4688903155ae2f29e0bbef4f.png

Kubernetes使用Linux容器技术来实现应用的隔离。因此在深入学习k8s之前,我们需要先学习容器的基础知识以便更好地去理解k8s的原理机制。

揭开容器的神秘面纱

当一个应用只由较少数量的大组件构成时,完全可以给每个组件分配一个专用的虚拟机,以及通过给每个组件分配它自己的操作系统实例来隔离它们的环境。

但是当这些组件变得越来越小且数量变得越来越多时,就不能给每个组件分配专用的VM,除非你不想节约硬件资源、降低硬件成本。但是硬件资源只是一方面,每个VM通常还需要独立配置和管理,想象一下有大量的虚拟机等着你去配置和管理时你会是什么心情。这不仅是力资源的浪费,还会让系统管理员的工作变得更加高负荷。

利用Linux容器技术隔离应用组件

越来越多的开发人员开始转向Linux容器技术,而不是使用虚拟机来隔离每个微服务环境(或者通常说的进程)。容器技术使我们能够在同一台宿主机上运行多个服务,不仅为每个服务提供不同的环境,还将它们彼此隔离,就像虚拟机一样,但是需要的开销更小。

容器中运行的进程实际上还是在宿主机的操作系统上,跟其他进程没啥区别,不像虚拟机,进程是运行在不同的操作系统上的。但是需要注意的是,容器中的进程仍然是与其他进程隔离的。对于进程本身而言,看起来就像是机器和操作系统上运行的唯一进程。

虚拟机 VS 容器

与虚拟机相比,容器更加轻量级。同样的硬件情况下,基于容器,我们可以运行更多的应用组件。这主要是因为虚拟机还需要运行它自己的一组系统进程,这些进程需要额外的计算资源,而且应用本身所在的进程也需要消耗资源。而对于容器来说,其本身实际上就是一个运行在宿主机上被隔离的进程,只消耗应用本身需要消耗的资源,再无任何其他进程的开销。

比较尴尬的情况是,由于虚拟机比较耗资源,导致没有足够的资源为每个应用程序分配一个专用的虚拟机,我们最终可能会将多个应用分组部署到每个虚拟机内。当使用容器时,我们可以而且应该为每个应用分配一个容器。因此,在同一台裸机上可以运行更多的应用程序。

bf6f5245c1b4791396d3be2ef4127dba.png

当在一台主机上运行三个虚拟机的时候,你就拥有了三个完全隔离的操作系统,它们运行并共享一台裸机。宿主机操作系统和一个虚拟层(Hypervisor)位于这些虚拟机下面,这个虚拟层会将物理硬件资源分成一些更小块的虚拟资源,从而被每个虚拟机内的操作系统使用。应用程序在虚拟机中运行,会调用虚拟机操作系统内核程序,然后内核程序会通过Hypervisor在宿主机的物理CPU上执行x86指令。而多个容器则会对运行在宿主机操作系统上的同一个内核执行调用,该内核是唯一一个在宿主机CPU上执行x86指令的内核。通过使用容器技术,CPU不需要做任何虚拟化,而虚拟机是需要对CPU做虚拟化的。可以通过下图了解应用程序在虚拟机或容器中使用CPU方式的差异:

239ae732f4eb67a519bddf736d26d8c9.png
69b1ce699d8a222af83c3a3bd309247c.png

虚拟机的主要优点是提供了一个完全隔离的环境,因为每个虚拟机都运行在自己的Linux内核之上,而容器都是调用同一个内核,这显然是有安全隐患的。硬件资源有限的情况下,如果需要隔离的进程不多,使用虚拟机可能是一个选择。然而如果要在同一台机器上运行更多相互隔离的进程的话,容器技术才是更好的选择,因为它开销更少。需要注意的是,每个虚拟机都会运行它自己的一组系统服务(也即进程)而所有的容器是不会的,因为它们都运行在同一个OS之上。这就意味着运行一个容器是不需要像虚拟机那样还要先开机。容器上的进程是可以很快就可以被启动起来的。

容器隔离机制

可能你会好奇,容器是怎么对运行在同一个操作系统上的进程进行隔离的呢。这里就不得不提到两个机制。第一个就是Linux的命名空间(Namespace)

它可以确保每个只能看到它自己的系统视图(文件、进程、网络接口、主机名等等)。第二个是Linux控制组(cgroups),它限制了进程可以使用的资源量,包括CPU、内存、网络带宽等等。

命名空间

5c86e3c620e84fdf0fc17cb824553594.png

默认情况下,每个Linux系统初始化的时候只有一个命名空间。所有的系统资源,比如文件系统、进程ID、用户ID、网络接口以及其他资源都是属于这个命名空间。但是我们也可以创建额外的命名空间以及在它们之间分配资源。对于一个进程,我们可以选择让其在某一个命名空间下运行,该进程就只能看到这个命名空间下的资源视图。不过,命名空间是有多种类型的,一个进程并不是属于某一个命名空间,而是属于每种类型的一个命名空间,因此一个进程可能属于多个命名空间,只是这些命名空间是不同类型的。

命名空间的种类有如下几种:

  • MNT: 管理系统文件挂载点 (MNT: Mount)
  • PID: 进程隔离 (PID: Process ID)
  • NET: 管理网络接口 (NET: Networking)
  • IPC: 管理对IPC资源的访问 (IPC: Inter-Process Communication)
  • UTS: 隔离内核和版本标识符 (UTS: Unix Timesharing System)
  • User ID (user)

每一种命名空间被用来隔离一组特定的资源。例如,UTS命名空间就决定了运行在该命名空间下的进程所能看到的主机名和域名。通过给两个进程指定两个不同的UTS命名空间,能够使它们看到不同的本地主机名。换句话说,对于这两个进程来说,就好像运行在两个不同的机器上(至少就主机名来说是这样)。

同样的,一个进程属于什么网络命名空间决定了运行在进程中的应用程序所能看到的网络接口。每个网络接口属于一个命名空间,但是可以从一个命名空间转移到另一个命名空间。每个容器使用它自己的网络命名空间,因此每个容器看到的都是属于它自己的一套网络接口。现在我们应该明白命名空间是如何被用来隔离运行在容器中的应用。

cgroup

还可以通过cgroups来限制容器能够消耗的资源来实现进程的隔离。cgroups是Linux的一个内核功能,它可以限制一个进程或者一组进程的资源使用。一个进程的资源(CPU、内存、网络带宽等等)使用量不能超过分配给它的量。通过这样方式,进程就不能过度地使用为其他进程保留的资源,这就和每个进程运行在单独的机上上类似。

如果想了解关于cgoups的知识,可以参考:

https://tech.meituan.com/2015/03/31/cgroups.html

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

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

相关文章

SpringBoot集成RabbitMq消息队列【附源码】

1. 项目背景 要啥项目背景,就是干!!! SpringBoot版本:2.7.12 2. Rabbit MQ安装 这里讲解使用docker安装RabbitMQ,如果在windows下面安装RabbitMQ,参考下文 【笑小枫的按步照搬系列】Window…

【云栖直播】精彩推荐第3期:个性化推荐系统搭建实践

热门推荐 (1)即将直播持续集成与交付:分层自动化之UI自动化体系建设直播简介:本系列直播由阿里旗下一站式研发提效平台云效策划推出,主要为大家详细介绍阿里巴巴在持续集成和持续交付的最佳实践。 直播讲师&#xff1a…

ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...

前面发文,介绍过品胜净音云路由器WFR101N功能,硬件配置参数,高清拆解图。主要硬件参数:闪存型号是W25Q128FVSG,容量大小是16M;内存是华邦的W9751G6KB-25,DDR2 SDRAM内存,大小64M&…

wps计算机打印双面输出,在wps中双面打印的方法步骤详解

我们在打印word文档的时候往往都会使用到双面打印,那么今天小编教你怎么在wps中双面打印。希望对你有帮助!WPS双面打印的步骤首先点击wps上的文字选项。找到打印按钮。点击打开之后,会跳出这样一个页面。PS双面打印的步骤图1页面内&#xff0…

判断五个分数等级划分_压力表精度等级怎么算?压力表精度等级划分及检验项目...

压力表是一种典型的轴向精密压力表,是用来测量介质压力的仪表,在工业生产也是常用的仪表,对生产起到了非常重要的作用,压力表的所显示压力的精度,就成了我们非常重要的一个参数。今天小编就来为大家说说压力表精度等级…

cad安装日志文件发生错误_苹果电脑Mac os系统重装时出现“准备安装时发生错误”解决方案...

题外话:自己是个电脑小白,因为自己的MacBook Air 不那么流畅了,就按照其他知乎大佬们说的步骤进行重装电脑。(2017款 MacBook Air 以下就用Air代替) 自己先把电脑重新启动,按照步骤按住commandR&#xff0c…

sass使用相关报错

1. 移动端一像素边框的缩放,我创建了三个文件:mixin.scss , base.scss,index.scss 在index.scss里面引入全局样式文件, 在base.scss文件中编写 根据媒体查询设置不同的缩放比例,报错如下: media…

client netty 主动发数据_netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》...

小傅哥 | https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获。专注于原创专题案例编写,目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例、源码分析等。你…

php-对银行卡号做掩码处理

1.实现代码如下/*** 对银行卡号进行掩码处理* param string $bankCardNo 银行卡号* return string 掩码后的银行卡号*/function formatBankCardNo($bankCardNo){//截取银行卡号前4位$prefix substr($bankCardNo,0,4);//截取银行卡号后4位$suffix substr($bankCa…

echarts 柱状图不显示y坐标轴_Python+matplotlib自定义坐标轴位置、颜色、箭头

图书推荐:《Python程序设计基础与应用》(ISBN:9787111606178),董付国,机械工业出版社图书详情:用书教师可以联系董老师获取教学大纲、课件、源码、教案、考试系统等配套教学资源。使用Pythonnumpymatplotlib这样的组合…

css3浏览,css3支持哪些浏览器?

CSS3 带来众多全新的设计体验,但有一个问题值得考虑:浏览器对 CSS3 特性的兼容情况如何?因为页面最终离不开用浏览器来渲染,并不是所有浏览器都完全支持 CSS3 的特性。有时花时间写的效果只能在特定的浏览器下有效,这意…

移动游戏加载性能和内存管理全解析 学习

https://v.qq.com/iframe/player.html?vido0512etq2vm&tiny0&auto0 转载于:https://www.cnblogs.com/revoid/p/7039232.html

++代码实现 模糊综合算法_干货 | 十大经典排序算法最强总结(内含代码实现)...

一、算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序&#…

如何恢复osd的auth表中的权限

2019独角兽企业重金招聘Python工程师标准>>> 原因:当你一不小心删掉了osd的auth信息时,重启osd服务,此时ceph -s查看发现osd down 如: [rootceph ~]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIM…

PS打开PSD文档服务器未响应,ps打不开psd文件的解决方法

很多人用ps做作品的时候,经常遇到psd文件打不开的问题,最常见的有三种原因,有两种可以设置解决,另一种是文件损坏,不可恢复。下面是学习小编给大家整理的有关介绍ps打不开psd文件的解决方法,希望对大家有帮…

ajax实现两个aspx跳转,请问ajax执行成功后可以跳转到另一个页面吗?

一只名叫tom的猫通过ajax读取到写好的jsp,另一个jsp可以放framse或者层都可以,显示就行了123456789$.ajax({ type: "POST", //用post方式传输 dataType: "html", //数据格式:json…

Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)...

Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求,也可以使用自定义View的onMeasure方法实现。比如&…

本地 服务器 文件传输,本地服务器文件传输

本地服务器文件传输 内容精选换一换CDM支持周期性自动将新增文件上传到OBS,不需要写代码,也不需要用户频繁手动上传即可使用OBS的海量存储能力进行文件备份。这里以CDM周期性备份FTP的文件到OBS为例进行介绍。例如:FTP服务器的to_obs_test目录…

中怎么撤回消息_微信消息撤回也能看到,这个开源神器牛x!语音、图片、文字都支持!...

1.前言 微信在2014年的时候,发布的v5.3.1 版本中推出了消息撤回功能,用户可以选择撤回 2 分钟内发送的最后一条信息。现在很多即时通讯的软件都有撤回这个功能。腾讯为了照顾手残党,在微信和QQ中都加入了【消息撤回】的功能。但是这个功能对于…

ntce服务器不稳定,当心!你的教师资格证成绩失效了!| 服务

原标题:当心!你的教师资格证成绩失效了!| 服务湖南的小王同学资格证笔试考了两次才全部通过,想着好好歇歇,结果就误了面试报名,等到第三年面试报名时才发现有一科笔试成绩已经过期了......天呐,…