本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。
容器即服务,下一代 PaaS 的基础
容器正在彻底改变人们构建、打包和部署软件的方式。但往往被忽视的是,它们也在彻底改变人们构建构建、打包和部署软件的软件的方式。(如果你需要读两次这句话,没关系……)今天,在明天的 Container World 大会上,我将探讨像 Kubernetes 这样的容器编排器如何构成下一代平台即服务 (PaaS) 的基础。特别是,我感兴趣的是像 Azure 容器服务、Google 容器引擎 和 其他 这样的云容器即服务 (CaaS) 平台如何成为构建 PaaS 的新基础设施层。
要了解这一点,重要的是要考虑 PaaS 平台传统上提供的一系列服务
- 源代码和可执行文件的打包和分发
- 可靠的、零停机的软件版本发布
- 自我修复、自动伸缩、负载均衡
当你查看这个列表时,很明显,这些传统的“PaaS”角色中的大部分现在已经被容器取代。容器镜像和容器镜像构建工具已经成为打包应用程序的方式。容器注册表已经成为在世界各地分发应用程序的方式。可靠的软件发布是通过 Kubernetes 中的 部署 等编排器概念实现的,而服务自我修复、自动伸缩和负载均衡都是使用 ReplicaSets 和 服务 在 Kubernetes 中部署的应用程序的属性。
那么 PaaS 还剩下什么?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 基础设施。使 PaaS 不必提供基础设施层,使 PaaS 能够多样化并针对特定体验,而不用担心过于狭隘。体验变得更具针对性、更强大,但通过构建在容器即服务之上,也更加灵活。
Kubernetes 是下一代应用程序、PaaS 等的基础设施。鉴于此,我对我们今天发布的 公告 感到非常兴奋,即 Azure 容器服务上的 Kubernetes 已正式发布。当你将下一代应用程序部署到 Azure 时,无论是在 PaaS 上还是直接部署到 Kubernetes 本身(或两者兼有),你都可以将其部署到托管的、受支持的 Kubernetes 集群上。
此外,由于我们知道 PaaS 和软件开发的世界总体上是一个混合的世界,因此我们很高兴宣布 Azure 容器服务中 Windows 集群 的预览版可用性。我们还在 ACS-Engine 中开发 混合集群,并期望在未来几个月内将其推广到正式发布。
我很高兴看到容器和容器即服务正在改变计算世界,我确信我们仅仅触及了未来几个月和几年我们将看到的转型的表面。
- 参与 GitHub 上的 Kubernetes 项目:GitHub
- 在 Stack Overflow 上发布问题(或回答问题):Stack Overflow
- 下载 Kubernetes
- 在 Slack 上与社区联系:Slack
- 在 Twitter 上关注我们:@Kubernetesio,获取最新更新