2.2 容器和云原生时代兴起
容器技术起源于虚拟化技术,Docker 和虚拟机和谐共存,用户也找到了适合两者的应用场景,二者对比如图2-4 所示。但如何使虚拟机获得类似容器的便捷性与轻量特性,以及如何使容器获得类似虚拟机的安全性,一直是大家努力的目标,也使这两个技术都在向着更好的方向演进。
图2-4 虚拟机与容器技术对比
2013 年,Matt Stine提出云原生的概念,2015 年,Linux 基金会将“ 云原生”定 义得更为明确:使用开源软件堆栈进行容器化,围绕着容器化进行一系列的应用改造。在云原生的指引下,弹性计算体系内基于容器形态的产品及创新服务形态发展得更加快速。
2.2.1 容器服务
Kubernetes 在开源之前,在谷歌的数据中心已运行并持续优化了超过10 年的时间。这使得Kubernetes 在诞生之初就有了很高的起点。随着Kubernetes 被广泛接受及其与Docker 的融合,容器PaaS 技术的主流路线逐渐过渡到Kubernetes + Docker,不少云平台的容器服务也及时地推出了容器服务ACK(for Kubernetes 版本)。容器服务 ACK 提供高性能、可伸缩的容器应用管理服务,支持企业级 Kubernetes 容器化应用的生命周期管理。容器服务 ACK 简化了集群的搭建和扩容等运维工作,整合其虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
容器服务 ACK 针对不同托管深度需求的用户,提供分层透明化的底层资源托管能力,使用户可以更加专注于应用程序内部,而不是资源层面的问题。
2.2.2 弹性容器实例
容器很好,但是用户依然需要管理底层的云服务器资源,包括云服务器的扩容、缩容变配、升级等,因此“无服务器”就成为容器时代的方向。如果能够按需进行服务器的扩容、缩容,按量付费,使用户不再关心底层的资源,那就太完美了。
弹性容器实例(Elastic Container Instance,ECI)就是在这种外部需求的驱动下设计出来的敏捷安全的无服务器容器运行服务。用户只要提供打包好的镜像即可运行容器,并仅为容器实际运行消耗的资源付费。ECI 提供的是免运维的 IaaS 层容器组资源交付。用户通过 ECI 可以简化业务部署、构建等工作,专注于业务逻辑,无须关心复杂的基础设施维护工作。
ECI 中容器组的概念与 Kubernetes 的 Pod 概念完全兼容。用户通过简单的配置, 即可在云上快捷部署一批容器。
对于用户来说,ECI 的核心价值是一方面简化了容器场景下的资源管理,另一方面具有对 Kubernetes 的北向兼容性。除此之外,ECI 的启动效率和弹性是其特性的核心,用户通过ECI 可以在秒级拉起资源,完成业务的就绪,这对业务的承载是十分有价值的,也是ECI 在未来会持续优化增强的关键能力。
2.2.3 函数计算
ECI 可以使用户更加聚焦在上层应用框架的建设上,但是在某些场景下,用户的业务是事件驱动的,比如对于类似在收到图片上传事件后,自动执行图片的转码压缩并归档存储的事件处理。如果云服务提供商能够提供一种事件驱动的计算服务,那是最理想的状态。函数计算(Function Compute)就是事件驱动的全托管计算服务。
函数计算为用户准备好计算资源,弹性且可靠地运行任务,并提供日志查询、性能监控和报警等功能。用户无须采购与管理服务器等基础设施,只需编写并上传代码即可。用户可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。这种行为和云计算诞生之初所强调的按需使用、按量付费的极致化需求十分接近,用户真的是为可量化的计算在付费。可以说,云原生模式下计算形态的演进一直在进行,而函数计算就是类似场景下的一种创新计算形态,帮助用户简化业务程序, 简化资源管理,聚焦业务。