这篇文章已超过一年。较旧的文章可能包含过时内容。请检查页面中的信息自发布以来是否已失效。
容器即服务,下一代 PaaS 的基础
容器正在彻底改变人们构建、打包和部署软件的方式。但常常被忽视的是,它们也正在彻底改变人们构建用于构建、打包和部署软件的软件的方式。(读两遍也没关系……)今天,以及明天在 Container World 的一次演讲中,我将探讨像 Kubernetes 这样的容器编排器如何构成下一代平台即服务 (PaaS) 的基础。特别是,我关注的是像 Azure Container Service、Google Container Engine 等云容器即服务 (CaaS) 平台如何成为构建 PaaS 的新基础设施层。
要理解这一点,重要的是要考虑传统上由 PaaS 平台提供的一系列服务
- 源代码和可执行文件的打包与分发
- 软件版本的可靠、零停机发布
- 自愈、自动伸缩、负载均衡
当你查看这个列表时,很明显,大多数这些传统的“PaaS”角色现在已经被容器接管。容器镜像和容器镜像构建工具已成为打包应用程序的方式。容器镜像仓库已成为在全球分发应用程序的方式。可靠的软件发布是通过 Kubernetes 中的 Deployment 等编排器概念实现的,而服务自愈、自动伸缩和负载均衡都是使用 ReplicaSets 和 Services 部署在 Kubernetes 中的应用程序的固有属性。
那么 PaaS 还剩下什么呢?PaaS 将被容器即服务取代吗?我认为答案是“不”。PaaS 剩余的部分是最初一直是最重要的部分,那就是有主见的开发者体验。除了上面列出的所有 PaaS 的通用部分之外,PaaS 最重要的部分一直是开发者体验和应用框架如何让开发者在平台范围内更高效。PaaS 使开发者能够在不到一个小时的时间内,从笔记本电脑上的源代码变成一个可全球扩展的服务。这是非常强大的。
然而,在传统 PaaS 的世界中,构建 PaaS 基础设施本身(即运行用户软件的软件)所需的技能,要求对分布式系统有非常强的技能和经验。因此,PaaS 往往是由分布式系统工程师构建,而不是特定垂直领域开发者体验方面的专家。这意味着 PaaS 平台倾向于通用基础设施,而不是针对特定垂直领域。最近,我们已经看到这种情况开始发生变化,首先是针对移动 API 后端的 PaaS,然后是针对“函数即服务”的 PaaS。然而,这些产品仍然是在原始基础设施之上从零开始构建的。
最近,我们开始看到这些平台构建在容器基础设施之上。以“函数即服务”为例,至少有两个(很可能有更多)运行在 Kubernetes 之上的函数即服务的开源实现(fission 和 funktion)。这种趋势只会继续下去。在容器即服务之上构建平台即服务,其简易程度足以让你将其想象成一个本科计算机科学的作业。这种开发简易性意味着,在特定垂直领域(例如运行三维模拟的软件)具有特定专业知识的个人开发者可以并且将会构建针对该特定垂直体验的 PaaS 平台。反过来,通过针对如此狭窄的体验,他们将构建出完美契合该狭窄垂直领域的使用体验,从而使其解决方案在该目标市场中具有吸引力。
这也就指出了下一代 PaaS 构建在容器即服务之上的另一个优势。它将开发者从必须“全押”选择特定 PaaS 平台的束缚中解放出来。当叠加在容器即服务之上时,基本功能(命名、发现、打包等)都由 CaaS 提供,因此在部署在该 CaaS 之上的多个 PaaS 中是通用的。这意味着开发者可以混合搭配,将多个 PaaS 部署到同一个容器基础设施上,并为每个应用程序选择最适合该特定应用程序的 PaaS 平台。此外,重要的是,如果原始 CaaS 基础设施更适合他们的应用程序,他们可以选择“退回到”原始 CaaS 基础设施。将 PaaS 从提供基础设施层中解放出来,使得 PaaS 能够多样化并针对特定体验,而无需担心过于狭窄。体验变得更有针对性、更强大,而且由于构建在容器即服务之上,也更加灵活。
Kubernetes 是下一代应用、PaaS 等的基础设施。鉴于此,今天我们宣布 Azure 容器服务上的 Kubernetes 已正式可用,我感到非常兴奋。当你在 Azure 上部署下一代应用时,无论是在 PaaS 上还是直接部署在 Kubernetes 本身(或两者皆可),你都可以将其部署在一个托管的、受支持的 Kubernetes 集群上。
此外,由于我们知道 PaaS 和软件开发的总体世界是一个混合的世界,我们很高兴地宣布 Azure 容器服务中的 Windows 集群 进入预览可用阶段。我们还在 ACS-Engine 中开发 混合集群,预计在未来几个月内将其推向正式可用。
我很高兴看到容器和容器即服务如何改变计算世界,我相信我们现在看到的转变只是冰山一角,未来几个月和几年内还将看到更大的变化。
- 参与 Kubernetes 项目,访问 GitHub
- 在 Stack Overflow 上提问(或回答问题)
- 下载 Kubernetes
- 在 Slack 上与社区交流
- 在 Twitter 上关注我们 @Kubernetesio 获取最新动态