当前位置: 首页 > 科技观察

一篇文章了解,云计算、虚拟化和容器

时间:2023-03-12 08:03:41 科技观察

“云计算”,相信大家都很熟悉了。作为信息技术发展的主流趋势,它时常出现在我们的眼前。与之相伴的,还有这些概念名词——OpenStack、Hypervisor、KVM、Docker、K8S……这些名词概念都属于云计算技术的范畴。对于初学者来说,理解这些概念的具体含义并不是一件容易的事。因此,小枣君今天的文章就给大家做一个通俗易懂的介绍,来解释这些云计算的概念以及它们之间的关系,希望能帮助大家入门。什么是云计算在介绍那些稀奇古怪的名词之前,先介绍一下云计算。计算机刚发明时,还没有网络,每台计算机(PC)都是一台独立的计算机。这个单机包括CPU、内存、硬盘、显卡等硬件。用户在单机上安装操作系统和应用软件来完成工作。后来有了网络(Network),单机之间可以交换信息,一起工作。后来单机性能越来越强,就有了服务器(Server)。人们发现可以将一些服务器集中起来,放在机房里,然后让用户通过网络访问和使用机房里的计算机资源。后来小网变成了大网,就有了互联网(Internet)。小机房变成了大机房,还有一个IDC(InternetDataCenter,互联网数据中心)。当越来越多的计算机资源和应用服务(Application,如看网页、下载电影)集中起来,就变成了——“云计算”。无数大型机房化为“浮云”。你觉得云计算太简单了吗?别着急,开始深入。云计算的原理很简单。说白了,就是把计算机资源收集起来,放到网络上。然而,云计算的实施非常复杂。比如你只是在公司的小机房架设一台服务器,开通一个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(平台即服务)IaaS:Infrastructure-as-a-Service(基础设施即服务)再补一张图,也许更直观:目前主流的云计算服务商,如亚马逊AWS、阿里云、华为云、天翼云、腾讯云,说白了就是为你提供以上三个层次的云资源。他们提供你想要的。他们提供尽可能多的你想要的。继续前进。阿里和华为如何提供如此多样化、多层次的云计算服务?难道说是人工安排?——如果你想要一台八核CPU、16GB内存、500GB硬盘的服务器,阿里会临时安排工程师帮你组装?如果要安装CentOS7.2(Linux操作系统的一种),MySQL5.5.60(数据库系统的一种),阿里也临时请工程师帮你安装配置?这显然是不可能的,它也请不起人力。也等不及时间了。因此,出现了各种软件和平台,负责资源的快速调用和集中管理。什么是虚拟化如果要管理物理资源,第一步就是“虚拟化”。虚拟化是云计算的基础。简单地说,虚拟化就是在一台物理服务器上运行多个“虚拟服务器”。这种虚拟服务器也称为虚拟机(VM,VirtualMachine)。从表面上看,这些虚拟机是独立的服务器,但实际上,它们共享物理服务器的CPU、内存、硬件、网卡等资源。物理机通常称为“宿主机(Host)”。虚拟机被称为“客户(Guest)”。谁来完成物理资源虚拟化的工作?它就是大名鼎鼎的Hypervisor。Hypervisor,中文翻译为“超级主管”,也叫VMM(VirtualMachineMonitor,虚拟机监视器)。它不是一个特定的软件,而是一类软件的总称。Hypervisor分为两类:***类,hypervisor直接运行在物理机上。虚拟机在管理程序上运行。第二种是在物理机上安装一个普通的操作系统(比如Linux或者Windows),然后在普通的操作系统上安装一个hypervisor来生成和管理虚拟机。像VMware、KVM、Xen、VirtualBox,都属于Hypervisor。VMware大家应该都不陌生,也就是VMwareWorkstation。很多人在学习Linux的时候,都是在windows系统下安装WMware,然后创建一个Linux虚拟机。不过,真正厉害的还是KVM(kernel-basedvirtualmachine,基于Linux内核的虚拟机)。它是目前最热门、最受追捧的虚拟化解决方案。KVM等Hypervisor软件实际上提供了虚拟化能力来模拟CPU的运行,这个能力就更低了。但是它的用户交互性不好,使用起来也不方便。因此,为了更好的管理虚拟机,需要OpenStack这样的云管理平台。关于OpenStack,之前有介绍过。它有点像商店,负责管理商品(计算资源、存储资源、网络资源等)并销售给用户,但它本身不制造商品(不具备虚拟化能力),它的商品来来自KVM。当然,如果不使用KVM,也可以使用Xen等其他hypervisor。OpenStack的管理界面比命令行好很多吧?请记住,上面提到的概念,包括VM、KVM、OpenStack等,主要属于IaaS(InfrastructureasaService)。这不难理解吧?什么是容器?继续说吧。那么,什么是容器?大佬们常说的Docker和K8S是什么?我们之前介绍了虚拟化。使用虚拟化一段时间后,人们发现它存在一些问题:不同的用户有时只是想运行一些属于自己的简单程序,运行一个小进程。为了不互相影响,需要创建一个虚拟机。如果自己搭建虚拟机,显然浪费会有点大,而且操作会比较复杂和耗时。而且,有时候,如果要迁移自己的服务程序,需要迁移整个虚拟机。显然,迁移过程也可能很复杂。有没有办法更灵活更快?是的,这就引入了“容器”。容器也是虚拟化的,但是是“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造一个“隔离环境”。但是,它与虚拟机有很大的不同——虚拟机是操作系统级的资源隔离,而容器本质上是进程级的资源隔离。VirtualizationVScontainerandDocker,大家经常听到的,是一个创建容器的工具,一个应用容器引擎。Docker的中文意思是码头工人。而它的LOGO是一条承载着许多容器的鲸鱼。与传统的虚拟机相比,Docker具有明显的优势。它的启动时间非常快,以秒为单位,资源利用率高(一台主机可以同时运行数千个Docker容器)。此外,它占用的空间非常小。虚拟机一般需要几GB到几十GB,而容器只需要MB甚至KB。除了Docker创建容器,我们还需要一个工具来编排容器。这个工具就是K8S。K8S即Kubernetes,中文意思是舵手或领航员。Kubernetes这个词很长,所以大家把中间的八个字母缩写成8,就成了K8S。K8S是一个容器集群管理系统,主要职责是容器编排(ContainerOrchestration)——启动容器,自动部署,扩展和管理容器应用,回收容器。简单来说,K8S有点像容器的保姆。它负责管理容器运行在哪台机器上,监控容器是否有问题,控制容器与外界的通信等等。通过下面的K8S体系结构图,可以看出K8S与容器的关系。除了K8S,还有很多容器管理平台,比如Compose、Marathon、Swarm、Mesos等。Docker和K8S不再关注基础设施和物理资源,而是关注应用层,所以属于PaaS。知道了?好了,今天就到这里。再继续下去,估计又有不少人要晕倒了。正如文章开头所说,今天主要介绍KVM、Hypervisor、OpenStack、Docker、K8S等术语的含义,它们在云计算系统中的地位,以及它们之间的关系。云计算涉及很多需求。有许多不同的技术可以实现相同的要求。对于同一种技术,往往有许多不同的厂商相互竞争。因此,就会出现大量的概念和名词,发展变化会很快。不管怎样,梳理出最关键的名词概念,是学好云计算的第一步。