云计算、虚拟机和容器

云计算

云计算、虚拟机和容器

云计算的道理是简单的,说白了,就是把计算机资源集中起来,放在网络上。但是,云计算的实现方式,就非常复杂了。

举个例子,如果你只是在公司小机房摆了一个服务器,开个FTP下载服务,然后用于几个同事之间的电影分享,当然是很简单的。

如果是“双11”的淘宝购物节,全球几十亿用户访问阿里巴巴的淘宝网站,单日几十PB(1PB=1024TB=1024×1024GB)的访问量,每秒几百GB的流量……这个,就不是几根网线几台服务器能解决的了。

这时,需要设计一个超大容量、超高并发(同时访问)、超快速度、超强安全的云计算系统,才能满足业务平稳运行的要求。

这才是云计算的复杂之处。

刚才说了,我们把计算机资源放在云端。这个计算机资源,实际上分为好几种层次:

第一层次

是最底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源),还有网卡(网络资源)等。

第二层次

要高级一些,我不打算直接使用CPU、硬盘、网卡,我希望你把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用。

第三层次

更高级一些,你不但要装好操作系统这些基本的,还要把具体的应用软件装好,例如FTP服务端软件、在线视频服务端软件等,我可以直接使用服务。

这三种层次,就是大家经常听到的IaaS、Paas、SaaS。

SaaS: Software-as-a-Service(软件即服务)各种应用软件,如:门户网站,移动应用等就在这一层

PaaS: Platform-as-a-Service(平台即服务)各类平台支撑,如:并行计算,缓存服务,集群管理,分布式web服务等等。

IaaS: Infrastructure-as-a-Service(基础设施即服务)各类基础设施,如:网络带宽,服务器及管理软件等等

云计算、虚拟机和容器

我们经常用的云平台就会为大家提供以上三种资源。如果你要八核CPU、16GB内存、500GB硬盘的服务器,阿里临时安排工程师帮你组装?如果你要装CentOS 7.2(一种类Linux操作系统),MySQL 5.5.60(一种数据库系统),阿里也临时让工程师帮你安装配置?

这显然是不可能的,耗不起人力,也等不起时间。
于是,就有了各种软件和平台,负责对资源进行快速调用和集中管理。

什么是虚拟化

如果要对物理资源进行管理,第一步,就是“虚拟化”。

虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(VM,Virtual Machine)。

从表面来看,这些虚拟机都是独立的服务器,但实际上,它们共享物理服务器的CPU、内存、硬件、网卡等资源。
云计算、虚拟机和容器

物理机,通常称为“宿主机(Host)”。虚拟机,则称为“客户机(Guest)”。

谁来完成物理资源虚拟化的工作呢?

Hypervisor

就是大名鼎鼎的 Hypervisor

Hypervisor,汉译过来是“超级监督者”,也叫做VMM(Virtual Machine Monitor,虚拟机监视器)。它不是一款具体的软件,而是一类软件的统称。

Hypervisor分为两大类:

第一类,hypervisor直接运行在物理机之上。虚拟机运行在hypervisor之上。

第二类,物理机上安装正常的操作系统(例如Linux或Windows),然后在正常操作系统上安装hypervisor,生成和管理虚拟机。

就是大名鼎鼎的 Hypervisor 。
云计算、虚拟机和容器

像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。

VMware大家应该很熟悉,就是VMware Workstation。学习Linux的话,很多人都是在windows系统下安装WMware,然后创建Linux虚拟机。

但是,真正厉害的,是 KVM(kernel-based virtual machine,基于Linux内核的虚拟机)。它是目前最热门最受追捧的虚拟化方案。

KVM这样的Hypervisor软件,实际上是提供了一种虚拟化能力,模拟CPU的运行,更为底层。但是它的用户交互并不良好,不方便使用。

于是,为了更好地管理虚拟机,就需要OpenStack这样的云管理平台。关于OpenStack,它有点像个商店,负责管理商品(计算资源、存储资源、网络资源等),卖给用户,但它本身不制造商品(不具备虚拟化能力),它的商品,来自于KVM。当然,如果不用KVM,也可以用Xen等其它hypervisor。

请记住,上面所说的几个概念,包括VM、KVM、OpenStack等,都主要属于IaaS(基础设施即服务)。这个不难理解吧?

什么是容器 ?

那么,容器是什么呢?大佬们经常说的Docker和K8S,又是什么呢?

前面我们介绍了虚拟化。人们在使用虚拟化一段时间后,发现它存在一些问题:

不同的用户,有时候只是希望运行各自的一些简单程序,跑一个小进程。为了不相互影响,就要建立虚拟机。如果建虚拟机,显然浪费就会有点大,而且操作也比较复杂,花费时间也会比较长。

而且,有的时候,想要迁移自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂。

有没有办法更灵活快速一些呢?

有,这就引入了“容器(Container)”。

容器也是虚拟化,但是属于“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造“隔离环境”。但是,它又和虚拟机有很大的不同——虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。

云计算、虚拟机和容器

而大家常听说的Docker,就是创建容器的工具,是应用容器引擎。

Docker的中文意思,就是码头工人。而它的LOGO,就是一只鲸鱼背着很多货柜箱。

云计算、虚拟机和容器
相比于传统的虚拟机,Docker的优势很明显,它启动时间很快,是秒级,而且对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB,而容器只需要MB级甚至KB级。
云计算、虚拟机和容器

除了Docker对容器进行创建之外,我们还需要一个工具,对容器进行编排

k8s

这个工具,就是K8S

K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。

云计算、虚拟机和容器

K8S是一个容器集群管理系统,主要职责是容器编排(Container Orchestration)——启动容器,自动化部署、扩展和管理容器应用,还有回收容器。

简单来说,K8S有点像容器的保姆。它负责管理容器在哪个机器上运行,监控容器是否存在问题,控制容器和外界的通信,等等。

云计算、虚拟机和容器

除了K8S之外,还有很多种容器管理平台,例如Compose,Marathon,Swarm,Mesos等。

Docker和K8S,关注的不再是基础设施和物理资源,而是应用层,所以,就属于PaaS。明白了吧?

小结

容器也是虚拟化,但是是“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造隔离环境。

重要而又容易理解的区别:

虚拟机时操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。

大家常听说的Docker,就是创建容器的工具,是应用容器引擎。相比于传统的虚拟机,Docker的优势很明显,它启动速度快,是秒级,而且对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB,而容器只需要MB级甚至KB级。而k8s就是管理各个容器的应用。

由于存在不同的容器厂商,如:docker,HeroKu,NodeJitsu 等等。相当于这些容器也可以进一步的虚拟化成池,由 k8s 来管理,以应对不同的场景和业务需求。

本文来自:CloudBest ,感谢原作者,文章的实在通顺易懂,在这里仅做一个小记,并附上一些自己的理解。若涉及版权,请联系我立马删除。

给TA打赏
共{{data.count}}人
人已打赏
互联网络

即刻导航上线了

2021-1-20 21:54:12

互联网络

最新阿里云盘福利码2021收集最全整理

2021-3-22 13:06:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索