全篇都与关键词“虚拟化”有关,经过不断搜索到点东西,展示下学习成果,在这里放出笔记~

一、云平台

云计算平台,是一种为提供自肋服务而开发的虚拟环境。

虚拟化技术的初步了解——kvm\docker\云平台_虚拟化


上图,OpenStack的一种发展路线猜想,摘自:http://www.sohu.com/a/254076808_610730

1.云计算

用通俗的话说,云计算就是通过大量在云端的计算资源进行计算
是为了现实对资源按需分配而应用的技术。

用供电作比喻:
其实早在互联网出现之前,人们就已意识到,从理论上讲,电脑运算的能力和电力一样,可以在大规模公用“电厂”中生产,并通过网络传输到各地。好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。
云计算是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。

云计算概念分解:

云:云计算中的云,代表循环利用的意思(云多了变成雨,落到地面,云减少,水蒸发到空中,云增加)。
计算:云计算中的计算,代表计算资源,涵盖虚机、存储、网络等。
云计算:代表计算资源向云水循环一样,按需分配,循环利用。

虚拟化技术的初步了解——kvm\docker\云平台_云计算_02

2.云平台的一些问题

(1)云计算的演化:
云计算主要经历了四个阶段才发展到现在这样比较成熟的水平,这四个阶段依次是电厂模式、效用计算、网格计算和云计算。

1.电厂模式阶段:
电厂模式就好比是利用电厂的规模效应,来降低电力的价格,并让用户使用起来更方便,且无需维护和购买任何发电设备。
2.效用计算阶段:
在1960年左右,当时计算设备的价格是非常高昂的,远非普通企业、学校和机构所能承受,所以很多人产生了共享计算资源的想法。1961年,人工智能之父麦肯锡在一次会议上提出了“效用计算”这个概念,其核心借鉴了电厂模式,具体目标是整合分散在各地的服务器、存储系统以及应用程序来共享给多个用户,让用户能够像把灯泡插入灯座一样来使用计算机资源,并且根据其所使用的量来付费。但由于当时整个IT产业还处于发展初期,很多强大的技术还未诞生,比如互联网等,所以虽然这个想法一直为人称道,但是总体而言“叫好不叫座”。
3.网格计算阶段:
网格计算研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多低性能的计算机来处理,最后把这些计算结果综合起来攻克大问题。可惜的是,由于网格计算在商业模式、技术和安全性方面的不足,使得其并没有在工程界和商业界取得预期的成功。
4.云计算阶段:
云计算的核心与效用计算和网格计算非常类似,也是希望IT技术能像使用电力那样方便,并且成本低廉。但与效用计算和网格计算不同的是,2014年在需求方面已经有了一定的规模,同时在技术方面也已经基本成熟了。

(2)云计算与网格计算、效用计算、自主计算的区别。

网格计算:分布式计算的一种,由一群松散耦合的计算机组成的一个超级虚拟计算机,常用来执行一些大型任务;
效用计算:IT资源的一种打包和计费方式,比如按照计算、存储分别计量费用,像传统的电力等公共设施一样;
自主计算:具有自我管理功能的计算机系统。
事实上,许多云计算部署依赖于计算机集群(但与网格的组成、体系结构、目的、工作方式大相径庭),也吸收了自主计算和效用计算的特点。

(3)云平台与服务器的区别
云主机是一台在真实电脑上面模拟的一台电脑。就像我们电脑安装虚拟机一样。服务器就是一台电脑。云主机就是服务器上面安装的虚拟机,他们功能完全一样。只是如果一台服务器上面安装很多虚拟机,如果服务器挂了,那么所有云主机也挂了。

3.云服务:

根据对用户的可见性,分为三种类型:

IaaS:基础设施服务,Infrastructure-as-a-service
PaaS:平台服务,Platform-as-a-service
SaaS:软件服务,Software-as-a-service

(1)基础设施即服务 (Infrastructure as a Service, IaaS)

IaaS 包含云 IT 的基本构建块,通常提供对联网功能、计算机(虚拟或专用硬件)以及数据存储空间的访问。IaaS 提供 最高等级 的灵活性和对 IT 资源的管理控制,其机制与现今众多 IT 部门和开发人员所熟悉的现有 IT 资源最为接近。最底层对用户可见,用户安装操作系统。如下图:

虚拟化技术的初步了解——kvm\docker\云平台_云计算_03


(2)平台即服务 (Platform as a Service, PaaS)平台即服务消除了组织对底层基础设施(一般是硬件和操作系统)的管理需要,让您可以将更多精力放在应用程序的部署和管理上面。这有助于提高效率,因为您不用操心资源购置、容量规划、软件维护、补丁安装或任何与应用程序运行有关的不能产生价值的繁重工作。例如,给你一个虚拟机用着,自己在上面部署服务即可。图如下:

虚拟化技术的初步了解——kvm\docker\云平台_Docker_04


(3)软件即服务 (Software as a Service, SaaS)

软件即服务提供一种完善的产品,其运行和管理皆由服务提供商负责。通常人们所说的软件即服务指的是终端用户应用程序。使用 SaaS 产品时,服务的维护和底层基础设施的管理都不用您操心,您只需要考虑怎样使用 SaaS 软件就可以了。

SaaS 的常见应用是基于 Web 的电子邮件,在这种应用场景中,您可以收发电子邮件而不用管理电子邮件产品的功能添加,也不需要维护电子邮件程序所运行的服务器和操作系统。还比如,要用mindmanager这个软件,本来要装个Windows系统,然后安装该软件,现在云端直接提供该服务,只需要打开网页,直接操作即可。图如下:

虚拟化技术的初步了解——kvm\docker\云平台_虚拟化_05


云计算是未来的趋势。一家企业从前买的是服务器,路由器,交换机,计算机。归根结底买的是计算能力。如今将计算能力抽象出来,打包成云产品出售,更加降低了社会成本。

详见:http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html

4.应用:

与大数据、人工智能的关系:

大数据必然无法用单台的计算机进行处理,必须采用分布式计算架构。它的特色在于对海量数据的挖掘,但它必须依托云计算的分布式处理、分布式数据库、云存储和虚拟化技术。

虚拟化技术的初步了解——kvm\docker\云平台_云计算_06

与IoT(物联网)的关系:

云物联,物联网中的感知识别设备(如传感器、RFID等)生成的大量信息如果不能有效地整合与利用,那无异于入宝山而空返,望“数据的海洋”而兴叹。云计算架构可以用来解决数据如何存储、如何检索、如何使用、如何不被滥用等关键问题 。

解决双11计算压力:

2012年前,阿里已经感到了双11带来的计算压力。当计算能力跟不上日益增长的商业需求时,阿里云诞生了。双11在有了云计算赋能之后,才真正开始突破“天花板”。在2009年双11,阿里巴巴平台订单创建的单笔峰值是400笔/秒,到2017年,这个数字变成了32.5万笔/秒。这些飞速增长的计算处理能力,正是云计算带来的。

云计算的优势:

  1. 将资本投入变成可变投入:与其不明就里地投资重金构建数据中心和服务器,不如使用云服务,这样您只需在使用计算资源时付费,只需按您的使用量付费。
  2. 大范围规模经济的优势:云会汇集成千上万的客户,因此像 AWS这样的提供商可以利用规模经济的优势,将这一特点转化成更低的按使用量付费的价格。
  3. 不必再猜测容量:可以访问任意规模的资源,可多可少,并根据需要扩展或缩减,一切只要几分钟就能完成。如果自己搭建,提前要算,算多了资源闲置,算少了扩展麻烦。
  4. 增加速度和灵活性:在云计算环境中,新的 IT 资源只要点点鼠标就能配置到位,显著节省时间,将开发人员调配资源耗费的时间大大缩短。
  5. 不再为数据中心的运行和维护投入资金:关注让您的公司与众不同的项目,而非基础设施。云计算让您可以专注于自己的客户,卸下安装和维护服务器的繁重工作。
  6. 分分钟将业务扩展到全球:只需点击几下,即可在全世界的多个区域轻松部署您的应用程序。也就是说,您可以用最少的成本轻松帮助您的客户获得较低的延迟和更好的体验。比如申请云端的北美服务,亚洲服务等。
  7. 有效解决硬件单点故障问题:要真正解决这个问题,需要为每个硬件准备冗余,这不仅大大增加了硬件购置成本,而且部署与维护成本也不容小视。而云计算平台是基于服务器集群,从设计之初就考虑了单点故障问题,并在建设时有效地解决了这个问题。

二、Docker(开源的应用容器引擎)

1.docker特点介绍

而被翻译成“码头集装箱工人”的Docker服务,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
在Docker环境下,按一定的打包标准生产程序,生产出来的标准化程序被装进标准化的容器(Container)里,保证了开发环境、测试环境、生产环境的一致性
此外Docker还具有资源隔离的特点,不同来源、不同种类的容器内放着运行应用所需的完整用户环境空间,比如程序、组件、运行环境等,对某一容器的改动不会影响其他容器。而且,相比于传统的虚拟机,Docker的启动和部署非常快,具有轻量化的优势。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

虚拟化技术的初步了解——kvm\docker\云平台_虚拟化_07

虚拟化技术的初步了解——kvm\docker\云平台_Docker_08


2.为什么Docker会这么火?

本小节摘自: http://www.360sdn.com/Docker/2016/1201/11466.html 通俗的讲,Docker定义了一套应用从开发构建、部署以及运行的标准体系,它其实就像我们最早之前的集装箱的发明,它使得应用的交付管理变得非常简单。虚拟化是云计算的基石,其实基于容器技术的虚拟化改变了传统意义上的虚拟化,从而会对整个云计算产生了很深远的影响。

基于Docker的容器服务,我们称之为CaaS,容器级服务,它涵盖了IaaS跟PaaS两者的优势,它其实是一种更轻量级的虚拟化,可以解决应用的部署、开发运维、微服务这些问题。

Docker主要有以下几个应用场景:

  1. 开发运维,它打破了开发和运维之间的壁垒,提高了整个业务应用从开发、构建、部署、集成、运行等整个生命周期的效率。具体来讲,就是它会通过一个标准的Docker镜像作为应用的一个交付件;
  2. CI/CD,即持续集成跟持续部署,它可以让开发人员快速的开发和测试应用,同时达到一个目的,就是让整个业务应用能够更快速的交付;
  3. 微服务,微服务相对于传统的单体结构有非常多的好处。它能够把单体单块结构拆分成多个组件,每个组件运行在独立的容器内,这样对于容灾容错以及高并发都会有非常大的好处;
  4. 提高系统的资源利用率,Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,可以实现更高的性能以及效率,这也是很多像传统的数据中心厂商看中Docker的一个原因。
  5. 其他的应用场景,包括混合云、中间件、SaaS应用、跟Openstack的结合,以及数据中心这些都是比较典型的一些应用场景。

Docker容器云对目前云计算行业的影响

Docker作为新一代的云计算技术,其实在整个行业非常知名而且已经风靡全球。正如在运输领域,我们可以把原来一些非标准的东西统一放在一个集装箱里,让它能够加速整个运输的效率。在软件领域,我们会把不同的软件架构、技术栈统一封装在一个以容器为单元的“集装箱”里去做管理跟运行,这样会大大提高我们整个软件交付的效率。

对于企业来说,通常希望产品具有两个特点:
第一个是快速交付,我们能够非常快速的响应市场或客户需求的变化;
第二个是业务能够永远在线,比如说面对用户爆发式的增长,以及频繁的软件更新,能够保证业务持续,不会被中断。

随着云计算的发展, SaaS已经解决了我们对计算资源,存储、网络这些基础设施的需求,我们开始对开发运维一体化、持续集成、持续交付、以及微服务等产生迫切需求。因为随着市场的变化,我们往往需要整个业务能够随着市场的变化实现快速交付,这样的需求会变得越来越迫切。

通过一种以应用为中心的新一代云平台,用户不需要关心资源的申请、软件的部署和安装,这种自动化的运维全部交给了云平台,可以真正让企业聚焦在自己的业务本身,所以这也是Docker给大家带来的便利,Docker的诞生其实在整个应用交付,以及在开发运维方面,都带来了一些实质的变化。

Docker容器云将会给整个虚拟化开发运维、微服务、持续集成与持续交付,传统的中间件以及我们的SaaS带来一个很深刻的变化。

我曾经说过,Docker将会成为主流,未来SaaS应用也基本上都会容器化。应用可以不再运行在一个固定的虚拟机中,而是以这种轻量级可扩展的容器为运行单元。

Docker会对目前的云计算行业造成一个冲击,比如现在Openstack、Openshif都在拥抱或者融合Docker,Docker同时也在打造自己的生态圈,比如说定义自己的基础设施,比如说有基于轻量级的操作系统,比如说CoreOS、Rancher这样的公司出来,所以这是一个跟旧有的云计算行业相互融合、相互进步的一个方向。

我们认为,Docker未来会出现一个爆发式的增长,而且越来越多的传统行业会拥抱Docker,然后利用基于Docker容器技术的PaaS云平台去加速业务应用的交付,继而实现业务的增长和创新。

目前企业在应用运维管理这些方面,主要面临以下几个方面的痛点:
第一个痛点是应用迭代缓慢,业务交付经常被推迟;
第二个是传统的单体架构应用难以维护和扩展;
第三个痛点是应用的运维管理比较复杂。

从时速云实际落地的客户案例来看,目前我们主要从开发运维、微服务、运维管理这几个角度去切入。

企业落地Docker容器云,我们主要分为四个步骤:
第一步,把传统的应用容器化,如果是单体架构的应用,可以考虑拆成微服务的模式,然后让业务应用整个以容器为单元去运行。把应用容器化以及拆分成微服务架构可以带来非常多的好处:支持多种技术栈的应用,比如可以选择最合适的技术去开发业务;提高资源的利用率,以及支持自动的弹性伸缩扩展。比如说快速容灾容错等等。
第二步,加速开发构建部署的过程,也就是我们所说的CI/CD,持续集成跟持续交付。DevOps全流程交付的意思是说,我们可以从业务应用开发,比如说通过Gitlab提交一段代码能够自动的触发整个代码库的自动构建,它会push到统一的企业镜像仓库,我们根据之前定义的部署规则,它可以自动部署到测试,或者是生产环境。Devops全流程交付能够让我们从开发、构建、集成、部署、运行等整个应用的生命周期变成自动化的方式。
第三步,进行灰度升级、服务发现;
第四步,应用编排、负载均衡、弹性伸缩等一些更高级服务的应用。

最后分享一个时速云的实际落地案例,某制造行业客户借力容器技术打造新一代PaaS云平台。

该企业客户的IT业务十分复杂,而且由不同的第三方外包服务商提供服务,给IT部门的运维管理造成了非常大的困难。下图是这一客户利用容器技术打造的PaaS平台的基本技术架构:

虚拟化技术的初步了解——kvm\docker\云平台_云计算_09


针对这一客户对运维管理和项目交付的需求,我们在网络隔离,防火墙模式下去部署系统,然后提供了多种网络的部署模型,并且以分层架构的模式去部署容器集群管理系统。下图是针对客户的三层网络架构专门做的部署,时速云容器云平台的一个网络模型图:

虚拟化技术的初步了解——kvm\docker\云平台_Docker_10


我们通过这种基于Docker的PaaS云平台,给客户提供了一个包含DevOps、开发运维、微服务架构、CI&CD、运维管理等在内的针对性的解决方案,从而让客户能够轻松的管理大量的外包服务开发商,并且让其业务实现快速交付。

3.Docker与OpenStack

OpenStack和Docker之间是很好的互补关系。Docker的出现能让IaaS层的资源使用得更加充分,因为Docker相对虚拟机来说更轻量,对资源的利用率会更加充分。

Docker主要针对Paas平台,是以应用为中心。OpenStack主要针对Iaas平台,以资源为中心,可以为上层的PaaS平台提供存储、网络、计算等资源。

虚拟化技术的初步了解——kvm\docker\云平台_云计算_11

4.docker使用方法

docker安装完后就可以往里面放镜像了,等装完镜像就可以像在虚拟机里使用另一个操作系统一样做操作了。但是占的磁盘空间可是比虚拟机用的小了好多,比如linux kali,虚拟机镜像文件将近4个G,而docker的镜像才430+M!
另外,看到一些可以在阿里云布置docker的文章,没有亲测。。

Docker的镜像操作
https://www.runoob.com/docker/docker-image-usage.html

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/ Docker 本地导入镜像/保存镜像/载入镜像/删除镜像

三、KVM(基于内核的虚拟机(Kernel-based Virtual Machine))

KVM是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。

例如在闭源的世界里有Windows,大家用Windows都得给微软付钱;开源的世界里面就出现了Linux。
在虚拟化软件也一样,有了VMware,这个软件非常贵。那就有大牛写了两个开源的虚拟化软件,一个叫做Xen,一个叫做KVM

KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。

KVM最大的好处就在于它是与Linux内核集成的,所以速度很快。

虚拟化技术的初步了解——kvm\docker\云平台_虚拟化_12


而VMWare (Virtual Machine ware)是一个“虚拟PC”虚拟机管理管理软件。它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。

三种方式在CentOS 7搭建KVM虚拟化平台:
https://blog.51cto.com/yangshufan/2130043

VMware和kvm哪个作为linux的虚拟机更好

虚拟化平台 - xen、kvm、vmware、hyper-v等虚拟化技术的比较

四、其他

常用的云平台:

云平台发展至今主流的平台已成N足鼎立之势,国外云有亚马逊AWS、微软Azure、谷歌GCP,国内云有阿里云、腾讯云、AWS中国,私有云有OpenStack。

OpenStack是一个开源的云计算管理平台项目

2010年7月,美国国家航空航天局和包括Rackspace、AMD、Intel、戴尔等支持厂商共同宣布“OpenStack”开放源代码计划,微软在2010年10月表示支持OpenStack与Windows Server 2008 R2的集成;而Ubuntu已把OpenStack加至11.04版本中。

虚拟化技术的初步了解——kvm\docker\云平台_Docker_13

Hadoop是一个分布式系统基础架构。

Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是一种技术的实现,是云计算技术中重要的组成部分,云计算的概念更广泛且偏向业务而不是必须拘泥于某项具体技术,云计算的存在只是一种新的商业计算模型和服务模式。

Hypervisor,又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM)

Hypervisor是用来建立与执行虚拟机器的软件、固件或硬件。可允许多个操作系统和应用共享硬件。

Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化 。由于Hyper-V底层的Hypervisor代码量很小,不包含任何第三方的驱动,非常精简,所以安全性更高。

参考:
https://baike.baidu.com/tashuo/browse/content?id=9e811c1412759a312a92e55f

https://cloud.tencent.com/developer/article/1082055https://baike.baidu.com/item/云计算
http://www.sohu.com/a/254076808_610730https://blog.51cto.com/yangshufan/2130043

OpenStack、KVM、VMWare和Docker:http://www.mamicode.com/info-detail-2221470.html

proxmox 之 与openstack的比较:https://blog.51cto.com/yuweibing/2171963