Kubernetes 是新的 PaaS 吗?
Kubernetes 再次创造了新事物。 您可能不想承认,但您可能喜欢 Kubernetes,因为它感觉就像 PaaS。
从很多方面来看(根据很多人的说法),平台即服务或 PaaS 早已消亡。 与其他类型的基于云的架构(尤其是 IaaS 和 SaaS)不同,PaaS 从未真正流行起来。 大多数传统的 PaaS 平台确实已经消失了。 然而,如果你看看 Kubernetes,这个广受欢迎的开源编排器,PaaS 还很活跃。 在许多方面,Kubernetes 基本上只是 PaaS 的另一个名称(并且供应商锁定更少)。
这是为什么。
什么是 PaaS?
从历史上看,PaaS 是一种云计算服务,允许开发人员在云平台上大规模编写、构建和部署应用程序。
PaaS 在云计算的早期是一件大事——也就是说,2000 年代中后期。 当时,您可以编写应用程序并将其部署在其他人的服务器上,而无需管理基础设施或开发或部署环境的想法很重要。 拥有一个统一的、预配置的工具集来构建和部署应用程序也是如此。
然而,今天,大多数开发人员认为他们可以在任何地方编写应用程序,然后将其部署到云中。 云提供商非常擅长构建解决方案,例如 AWS Elastic Beanstalk,这些解决方案使开发人员只需很少的配置工作即可轻松获取应用程序并在云中运行它。
因此,传统的 PaaS 平台的受欢迎程度有所下跌。 一些领先的解决方案,如 Heroku,仍然存在并且在某些情况下很重要。 但总的来说,今天您更有可能找到在他们想要的任何开发环境中构建应用程序的开发人员,然后将它们部署到不相关的云 IaaS 平台。 很少有人认为他们是 PaaS 平台的用户。
Kubernetes 作为 PaaS
不过,其中许多开发人员可能正在使用 Kubernetes 部署应用程序——可以说是 PaaS 的另一个名称。
毕竟,Kubernetes 的核心特性包括:
- 能够以一致的方式部署任何类型的应用程序。
- 支持在任何基础架构上运行——本地、公共云或两者。
- 用于管理应用程序的中心化控制平面,无论它们托管在何处。
- 以负载平衡、容器自动重启等形式对应用程序和基础设施进行一些自动化管理。
在很多方面,这些也是 PaaS 的核心特性。 简单的部署、自动化的基础设施管理和应用程序编排是十多年前大多数开发人员对 PaaS 平台感到兴奋的原因。
也许 Kubernetes 缺乏但在传统 PaaS 中可用的一个关键功能是集成开发工具。 Kubernetes 对您实际编写或测试代码没有任何帮助。 您需要单独执行此操作。
但从某种意义上说,Kubernetes 提供了一种统一、一致、对开发人员友好的大规模部署应用程序的方式,它看起来很像 PaaS。
Kubernetes:更好的 PaaS?
同样值得注意的是,Kubernetes 有一个大多数 PaaS 平台没有的杀手级功能:在任何地方运行的能力。 无论您是想在本地还是在您选择的公共云中部署 Kubernetes,您都可以做到。 您甚至可以设置跨混合架构的 Kubernetes 集群,允许您同时使用本地和公共云或构建某种奇特的边缘配置。
相比之下,PaaS 产品通常与一个供应商的专有平台密切相关。 您无法像选择 Kubernetes 集群并将其移动到不同的主机基础架构那样轻松地从一个 PaaS 移动到另一个 PaaS。
PaaS的第二次到来
可以肯定的是,很少有人会将 Kubernetes 视为 PaaS,甚至没有人意识到他们喜欢 Kubernetes 的原因是它为他们提供了 PaaS 的大部分核心功能。 在某些方面,就像它的模块化存储和网络架构一样,Kubernetes 感觉不像 PaaS。
但总体而言,Kubernetes 又创造了新的旧事物。 您可能不想承认这一点,但您可能会喜欢 Kubernetes,因为它感觉就像 PaaS,一种多年前就不再酷的范式。