云计算基础技术概览
- 计算类产品主要提供算力,支持业务运行,例如网站、办公软件、数据分析等计算能力,目前典型的产品主要是虚拟化和容器,在公有云上的云主机本质也是虚拟机。
- 网络类产品主要满足资源的网络连通性和隔离,传统数据中心的网络,园区网络等场景,在云上的虚拟机也同样需要虚拟网络,例如虚拟私有云VPC,该逻辑拓扑与传统网络类似。
存储类产品一般分为三大类:
- 块存储:具备高性能和低时延的特点,用各种高IO需求的场景。
- 文件存储:能满足多服务器间的文件共享,或者企业团队部门的文件共享。
- 对象存储:扁平化架构,横向扩展方便,适合做云存储池,用于海量数据存储、冷数据备份、软件仓库等场景。
虚拟化技术
虚拟化技术可将单台物理服务器虚拟为多台虚拟机使用,多台虚拟机共享该物理服务器的硬件资源。
- 虚拟化本质上是由磁盘文件和描述文件组成,封装在同一个文件中。
- 服务器上运行多个虚拟机,各自封装,互相隔离,即存在多个文件夹。
- 这些文件夹又可以存放在底层存储提供的文件系统上,因此实现同一介质可以存放或运行多个虚拟机。
虚拟化的本质就是将原先的物理设备进行逻辑化,转化成一个文件夹或文件,实现软硬件解耦。
- 在计算机技术中,虚拟化(技术)一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。
- 从图中我们可以了解到,通过虚拟化,原本的硬件服务器被分割成一个个文件,而这一个个文件也代表着一个个虚拟机。
虚拟化与云计算
虚拟化是实现云计算的核心技术,但不等同于云计算。云计算的内容维度要比虚拟化大得多。
- 虚拟化是云计算的关键技术,旨在将物理资源抽象为逻辑资源,进而能够二次分配,特点是支撑资源池的弹性敏捷,灵活调度,同时也具备的分布式调度、资源高可用的能力。
- 云计算是一种服务,突出其按需的商业模式,使得用户能像用水用电一样地使用云资源。其敏捷的特点有依赖虚拟化技术实现。
虚拟化的特点
虚拟机的特点:
- 分区:用一台物理服务器上可以运行多台虚拟机,也意味着虚拟化层拥有为虚拟机划分底层服务器资源的能力。我们把这个能力叫做分区。
- 隔离:同一服务器上的虚拟机若有一台故障或者中病毒,不会影响到其他虚拟机的使用。这就要求虚拟机具备最基本的隔离能力。
- 封装:虚拟机的本质是以文件的形式存在于虚拟化系统中,可以通过移动文件或者复制粘贴的形式对虚拟机进行迁移。
- 独立:在迁移虚拟机后无需对服务器做任何修改即可运行虚拟机(相当于上层操作系统与硬件解耦合),所以这里的独立主要指的是独立于硬件。
计算虚拟化中的重要概念
- Hypervisor:我们经常把它称为虚拟化软件层或者虚拟机监视器,通过Hypervisor,我们可以实现按需使用物理机硬件资源的目的。目前主流的几个开源的虚拟化技术有:Xen、KVM等。
计算资源种类
计算的本质是获得信息的一种过程。在ICT行业中,我们需要很多计算资源,来将数据做运算处理,从而得到对应的信息。
- 计算机程序运行时所需的CPU资源、内存资源、硬盘资源和网络资源,指计算中所需的各种资源。一般地,计算资源包括CPU,GPU,内存。
- CPU(Central Processing Unit,中央处理器)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
- 内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。
- GPU(Graphics Processing Unit,图形处理器),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
计算在云计算中的服务形态
- 弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,用户就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器。
- 弹性伸缩(Auto Scaling)可根据用户的业务需求和预设策略,自动调整计算资源使云服务器数量自动随业务负载增长而增加,随业务负载降低而减少,保证业务平稳健康运行。
- 镜像(lmage Service)是用于创建服务器或磁盘的模板。镜像服务提供镜像生命周期管理能力。可以通过服务器或外部文件创建系统盘镜像或数据盘镜像,也可以使用弹性云服务器或云服务器备份创建带数据盘的整机镜像。
容器的概述
容器是一个标准化的单元,是一个轻量级、可移植的软件打包技术。它将软件代码及其相关依赖打包,使应用程序可以在任何计算介质中运行。简单来讲,容器就像一个标准化的盒子,能够装很多不同类型的东西,并且装完后能够塞进不同类型的柜子里。
容器的特性:
- 打包:将软件打包成标准化单元进行开发、迁移和部署。
- 隔离性:计算、存储、网络等资源彼此隔离。
- 高效性:轻量、快速启停、快速部署与迁移。
- 职责分工明确:开发专心写代码,运维专注基础环境配置。
容器技术发展历史
容器发展全景图,容器虚拟化在推广应用中面临两大难题逐渐被攻破:
- 统一平台
- 易用性
- 容器技术最早可以追溯到1979年UNIX系统中的chroot,最初是为了方便切换root日录,为每个进程提供了文件系统资源的隔离,这也是OS虚拟化思想的起源。
- 2000年,BSD吸收并改进了chroot技术,发布了FreeBsD Jails。FreeBsD Jails除文件系统隔离外,还添加了用户和网络资源等的隔离,每个Jail还能分配一个独立IP,进行一些相对独立的软件安装和配置。
- 2005年SWsoft公司发布了OpenVz,OpenVz和Solaris Containers非常类似,通过打了补丁的Linux内核来提供虚拟化、隔离、资源管理和检查点。OpenVz 标志着内核级别的虚拟化真正成为主流,之后不断有相关的技术被加入。
- 2006年Google发布了Process Containers,Process Containers记录和隔离每个进程的资源使用(包括CPU、内存、硬盘I/0、网络等),后改名为Cgroups(Control Groups),并在2007年被加入Linux内核2.6.24版本中。
- 2008年出现了第一个比较完善的LXC容器技术,基于已经被加入内核的Cgroups和Linux namespaces实现。不需要打补丁,LXC就能运行在任意vanila内核的Linux上。
- 2013年Docker诞生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)内部的项目,和Warden类似,Docker最初也用了LXC,后来才自己写了libcontainer替换了LXC。和其它容器技术不同的是,Docker围绕容器构建了一套完整的生态,包括容器镜像标准、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等。
- 2014年Core0s创建了rkt,为了改进Docker在安全方面的缺陷,重写的一个容器引擎,相关容器工具产品包括:服务发现工具etcd和网络工具flannel等。
- 2016年微软公司发布基于Windows的容器技术Hyper-V Container,Hyper-V Container原理和Linux下的容器技术类似,可以保证在某个容器里运行的进程与外界是隔离的,兼顾虚拟机的安全性和容器的轻量级。
容器和虚拟化的架构对比
- 容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟的是操作系统而不是硬件,容器更便携,更高效。
- 从容器和虚拟化的架构图可以看出,容器是没有虚拟化层的,这也是为什么我们通常把容器称为轻量级虚拟化技术的原因。也正因为没有虚拟化层,使得运行在容器中的应用比运行在虚拟机中的应用性能更强。
- 容器因具有许多优势而变得流行起来。下面列出的是容器的一些好处:
- 敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
- 持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的容器镜像构建和部署
- 跨云和操作系统发行版本的可移植性:可在 Ubuntu、RHEL、CoreOs、本地、Google Kubernetes Engine和其他任何地方运行。
- 以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。
- 松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分并且可以动态部署和管理,而不是在一台大型单机上整体运行
- 资源隔离:可预测的应用程序性能
- 资源利用:高效率和高密度
容器和虚拟机的区别
- 容器是应用层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。容器占用的空间比虚拟机少,可以处理更多应用程序,并且需要更少的CPU和内存资源
- 虚拟机(VM)是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个VM在一台机器上运行。每个VM都包含操作系统、应用程序、必要的二进制文件和库的完整副本,占用几十GB。VM的启动速度也可能很慢。
- 容器镜像:专用于运行特定服务,通常只包含运行该服务所需的上下文内容,许多广泛使用的镜像都只有几十MB,甚至几MB大小。
- 虚拟机镜像:需要提供包括内核在内的通用进程运行环境,它的镜像偏向于大而完整的全功能集合,即使一个最小的精镜像的体积也有几百MB。
容器在云计算的服务形态
- 云容器引擎(Cloud Container Engine)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建,面向云原生2.0打造CCE Turbo容器集群,计算、网络、调度全面加速。
- 云容器实例(Cloud Container Instance,CCl)服务提供 Serverless Container(无服务器容器)引擎,让用户无需创建和管理服务器集群即可直接运行容器。
- 容器镜像服务(Software Repository for Container,简称SWR)是一种支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。用户可以通过界面、社区CLI和原生API上传、下载和管理容器镜像。
- 容器镜像服务可配合云容器引擎CCE、云容器实例CCI使用,也可单独作为容器镜像仓库使用。