借助虚拟化技术,用户能以单个物理硬件系统为基础创建多个模拟环境或专用资源。称为”Hypervisor” (虚拟机监控程序)的软件可直接连接到硬件,从而将一个系统划分为不同的、单独安全环境,即虚拟机(VM)。虚拟机监控程序能够将计算机资源与硬件分离并适当分配资源,这一功能对虚拟机十分重要。虚拟化可以帮助您充分利用先前所做的投资。
配备了虚拟机监控程序的物理硬件叫做”主机”,而使用其资源的虚拟机则被称为虚拟客户机。这些虚拟客户机将计算资源(如 CPU、内存和存储器)视为一组可进行重新分配的资源。操作员可以控制 CPU、内存、存储器和其他资源的虚拟实例,以便虚拟客户机能在需要时收到所需资源。
借助虚拟化资源,管理员能够对物理资源进行池化,从而真正发挥硬件的价值。因此,可以对那些维护代价高、但支持重要应用的传统基础架构进行虚拟化,从而实现优化利用。
管理员不必再等待新硬件逐个认证每个应用,只需设置好环境,迁移虚拟机,一切即可像以前一样照常运转。在回归测试过程中,管理员可以轻松地创建或复制试验台,且无需添置专用的测试硬件或冗余的开发服务器。只要接受过恰当的培训、掌握了正确的知识,就能对这些环境做出进一步优化,从而增强功能、提高密度。
虚拟化管理软件的设计宗旨是让虚拟化变得更容易管理。当然,您可以手动将资源分配给虚拟机,根据需要在服务器上为它们分配空间,并进行测试和安装补丁。但是,将单个系统划分为数百个系统,也意味着保持这些系统的运行、更新和安全所需的工作量也成倍增加。
如果所有虚拟机都与监控、部署或管理工具绑定,那么系统就能在使用或维护的高峰期间,自动迁移至更适合的硬件。请试想一下,某个服务器场可以根据工作负载和所处的时间,在数秒内重新分派任务。当特定虚拟客户机实例所占用的资源越来越多时,监控系统会将这个虚拟客户机转移至需求量更低的其他服务器,或从中央池中为这个虚拟客户机分配更多资源。
KVM 虚拟机监控程序是如今所有主流 OpenStack和 Linux虚拟化发行版的核心,无论是整体性能,还是在单台服务器上运行大量高性能虚拟机的表现,它都创下了前所未有的记录。
由于两者的核心理念都是从硬件中分离资源,以创建可用的环境,所以很容易被混为一谈。虚拟化有助于创建云,但它并非实现云计算的决定性技术。可以这样理解:
美国国家标准与技术协会这样描述云计算的 5 种功能:一个网络、池化资源、一个用户界面、置备功能、自动化资源控制/分配。虚拟化创建了网络和池化资源,但还需要其他管理软件和操作系统软件来创建用户接口、置备虚拟机以及控制/分配资源。
容器和虚拟机(VM)是封装计算环境的两种方式,其中整合了各种 IT 组件并将其与系统的其他部分隔离开来。二者之间的主要区别在于隔离了哪些组件,这反过来又影响了每种方式的规模和可移植性。
容器是一个软件单元,可包含应用运行所需的所有组件和功能。大多数现代应用都是由多个容器组成,每个容器负责执行某种特定功能。容器通常以兆字节为度量单位,不使用虚拟机监控程序,且通常被视为更快、更敏捷的进程隔离方式。
容器出色的可移植性,是它广受欢迎的一大重要因素。它与相互拼接的乐高积木很像,您可以轻松换下单个容器并将其移动到不同的环境中。将应用及其依赖项封装到容器中之后,便可以将其部署到任何所需位置:开发人员的笔记本电脑、数据中心、云或边缘,且其功能不会发生任何变化。
Docker 是一个用于构建、部署和管理容器化应用的开源平台,多年来,在容器技术的发展中发挥着重要作用。
容器中的所有内容均通过容器镜像文件(包含所有库和依赖项)封装和交付。容器镜像文件类似于软件安装包(例如 Linux 中的 RPM),但只需具有兼容的内核和容器运行时,应用即可运行,无论创建容器时使用的是哪种操作系统,也无论容器中的库来自何处。由于容器非常小,通常有数百个容器松散地耦合在一起,因此,需要通过容器编排平台(例如红帽 OpenShift 和 Kubernetes)对其进行置备和管理。
虚拟机在云计算中发挥着至关重要的作用,它通过在隔离的实例中运行操作系统来模拟物理计算机。多个虚拟机通常托管在单个服务器上,由虚拟机监控程序充当物理主机和虚拟机之间的轻量级软件层。此虚拟机监控程序可高效管理对资源的访问,使虚拟机能够作为不同的服务器运行,同时提高灵活性和敏捷性。
在 2000 年代初期,整合和节约成本的倡议在 IT 领域得到了广泛推广,虚拟机的使用逐渐变得流行起来,随着时间的推移,对虚拟机的使用也在不断演变。企业的虚拟机部署已日趋成熟,不再局限于简单的整合,而是扩展涵盖了各种用途。其中包括按需为应用提供资源,以及优化对 GPU 等昂贵资源的访问。
虚拟机还充当了许多早期云计算环境的基础,用于促进资源虚拟化并支持多租户和隔离,即多个客户所运行的系统使用的是相同的资源。
虚拟机包含自己的操作系统,因此可以同时执行多个需要占用大量资源的功能。由于虚拟机的可用资源大大增加,因此它们可以抽象、拆分、复制和模拟整个服务器、操作系统、台式机、数据库和网络。
一款称为“虚拟机监控程序”的软件会将资源与所属物理机分开,以便对它们进行分区并使其专用于虚拟机。当用户发出需要物理环境提供额外资源的 VM 指令后,虚拟机监控程序会将请求中继到物理系统并缓存更改。虚拟机的形式和运行方式类似于物理服务器,这会增加应用依赖性和占用大量操作系统空间的缺点,而运行单个应用或微服务大多不需要占用如此多的空间。
除了技术差异之外,容器与虚拟机之间的对比恰恰代表了现代云原生 IT 实践与传统 IT 架构之间的较量。
传统的 IT 架构
(老式的单体式架构)在这些架构中,工作负载的各个方面紧密耦合,无法在没有整个架构的支持下运行。由于各方面无法拆分,因此,需要将它们作为一个整体封装到一个更大的环境(通常是虚拟机)中。
在虚拟机中构建和运行整个应用曾经一度司空见惯,但将所有代码和依赖项都放在一个地方会导致虚拟机体量过大,并因此有可能在推送更新时出现级联故障和停机。
新兴 IT 实践
(云原生开发、CI/CD 和 DevOps)之所以可行,是因为工作负载被拆分成了很小的服务单元(通常为功能或微服务),并在隔离的环境中运行,可以独立地进行开发、部署、管理和扩展。
这些小单元被完好地封装在容器中,因此,多个团队可以在不中断或威胁其他容器所封装代码的情况下,处理应用或服务的各个部分。
这取决于您是需要一个可以轻松移动的小型实例(容器),还是需要半永久地分配自定义 IT 资源。还需要考虑的因素包括应用架构、开发实践、安全性和监管要求。
容器具有规模小、轻量化的特性,因而可轻松部 0署…..到0裸机系统以及公共云、私有云、混合云和多云环境。在虚拟机中运行容器也很常见,因为企业的现有基础架构都是围绕虚拟机构建的。这一点充分体现出容器的灵活性。
此外,容器也是部署当今云原生应用的理想环境,云原生应用是一些微服务的集合,旨在跨公共云、私有云、混合云和多云环境提供一致的开发和自动化管理体验。云原生应用可以加快新应用的构建,促进现有应用的优化,提高应用之间的连接速度。
与虚拟机相比,容器非常适合用于:
与容器相比,虚拟机非常适合用于:
请到「后台-用户-个人资料」中填写个人说明。
© 2024. All Rights Reserved. 冀ICP备2023032251号