《云计算与虚拟化技术丛书 深入浅出Serverless:技术原理与应用实践》—2.3容器
2.3 容器
2.3.1 容器技术的兴起
随着云计算的日益流行,用户对云的接受程度也日益提升。用户的计算资源从原有的私有数据中心扩展至云计算平台。应用仍然是用户关注的一个核心问题。随着计算资源边界的扩张,应用也需要从私有数据中心迁移到云上。对于很多用户而言,云和非云环境并不是二选一,而是两者都需要。云和非云环境在相当长的一段时间内将同时存在。应用如何快速地在云和非云环境中迁移成为一个重要的问题。此外,越来越多的用户在他们的云战略中包含了不止一个云。为了有更高的可用性,避免厂商的锁定,一些实力雄厚的客户往往同时是多家云平台供应商的客户。因此实现应用在不同云环境中的快速迁移也成为一个重要的需求。
混合云环境的示意图如图2-5所示。
图2-5 混合云环境
在IaaS模式下,云平台底层的计算资源是以物理机(Bare Metal)或虚拟机的形式提供的,这些计算资源过于“笨重”,难以在不同的环境中被快速地“移动”。通过IaaS,用户可以方便快速地获取大量的计算资源:主机。但是应用并不能直接消费主机。用户必须在主机上安装应用所需要的中间件,添加应用所需要的系统配置,然后再对应用进行配置才行,这些工作都拖慢了整个应用交付流程的节奏。相对而言,PaaS则没有这些效率低下的步骤,用户只需要关注应用,无须过度关注底层。但是传统PaaS的一个问题在于,PaaS平台对应用有入侵性。为了享用PaaS平台提供的一些高级功能,应用必须在代码中引入PaaS平台的API。这种入侵性导致应用在不同云环境中的迁移变得困难。
容器(Container)技术的出现为前文提及的问题提供了一个很好的解决方案。容器技术以一种称为容器镜像(Container Image)的打包格式为基础,扩大了应用交付件的边界。与以往应用交付件只包含应用本身不同,容器镜像中不仅包含编译构建后的应用,还包含应用所依赖的中间件、类库和操作系统设置等配置,可以为应用的运行提供一个完整的环境。以操作系统的内核为基础,容器引擎在主机之上可以快速实例化容器镜像,生成一个或多个容器实例。容器技术的出现,解决了应用消费主机资源效率低下的问题,使得应用可以被快速地部署到庞大的计算集群中去。容器以操作系统内核为基础,保证了可移植性,让应用可以在不同的云环境中,甚至不同的非云环境中被方便地迁移。与IaaS相比,容器比虚拟机和物理机更加小巧和灵活,便于在不同环境之间传输。与传统的PaaS相比,容器有更清晰的边界,对应用没有入侵性,极大地提高了应用的可迁移性。
经过几年的迅速发展,容器已经不容置疑地成为云计算的一项关键基础技术。Docker(现在已经更名为Moby项目)已成为容器引擎的事实标准。Kubernetes也在竞争中脱颖而出,成为容器编排(Orchestration)平台的事实标准。通过Kubernetes这样的容器编排平台,容器镜像可以快速地被部署到成百上千的主机上。Kubernetes成为一种类似操作系统的存在,有的人认为Kubernetes就是一种云操作系统。传统的操作系统只管理一台主机上的CPU、内存、磁盘和网络资源,而Kubernetes则掌控着数据中心中成百上千台主机的资源。
- 点赞
- 收藏
- 关注作者
评论(0)