如何知道何时应该选择PCF与Kubernetes
将Pivotal的Cloud Foundry(PCF)和Kubernetes(K8s)相互比较有很多。它们都是用于部署云原生应用程序的平台服务,它们都处理容器,而且功能还在继续增加。
PCF和K8之间存在许多功能重叠,但了解它们之间的差异非常重要。在这篇文章中,我们将介绍两者之间的基本差异,当最好使用一个而不是另一个时,以及何时最好一起使用它们。
2006年,亚马逊推出了亚马逊网络服务(AWS)公共云平台,并开启了一个新时代。云原生应用程序的时代。但是在云上构建和运行应用程序意味着什么?如今,在引入AWS 10多年后,云服务抽象层次分为3层:基础架构即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。
Amazon Elastic Compute Cloud(EC2)属于IaaS类别,为用户提供构建和部署应用程序所需的基本基础架构。下一个级别是PaaS产品,这将是本文的主题。PaaS产品提供更高级别的抽象,因此用户不会暴露于O S,中间件或运行时,只需要关注他或她自己的应用程序和数据。最后,SaaS产品是由第三方平台构建和托管的应用程序,并通过互联网提供给用户。
云本地服务模型比较
PaaS是开发人员可以构建和部署应用程序的平台。这些产品提供的抽象级别高于我们从IaaS产品获得的抽象级别,这意味着除了网络,存储和服务器之外,应用程序的O / S,中间件和运行时都由PaaS管理。
在PaaS市场中,两个主要参与者是Pivotal Cloud Foundry和Kubernetes。它们都是用于构建,部署和扩展应用程序的开源云PaaS产品。尽管具有大面积的功能重叠,但这两个系统为其用户提供了非常不同的功能,并且每个系统更适合于不同的环境。
Pivotal Cloud Foundry和Kubernetes共享许多类似的功能,如容器化,命名空间和身份验证,但它们部署云原生应用程序的整体方法差别很大。
“应用程序”PaaS和“容器”PaaS之间的区别并不那么难以理解。当我们谈论抽象时,我们可以简单地将PaaS级别分解为两部分。一方面,我们在应用程序级别拥有平台抽象,构建和部署完全配置的应用程序,另一方面,我们在容器级别拥有平台抽象,构建和部署容器作为完整的部分应用。
PCF是“应用程序”PaaS的一个示例,也称为Cloud Foundry Application Runtime,而Kubernetes是“容器”PaaS(有时称为CaaS)。
底线是它不必是'OR',它可以是'AND'。问题不一定是你应该使用Cloud Foundry还是Kubernetes,问题是当你可能需要一个和/或另一个。由于一些关键的差异化因素,它们可以在Cloud Foundry Container Runtime中相互补充的方式一起使用,这是Pivotal和Google之间的开源协作(稍后将详细介绍)。
Pivotal Cloud Foundry是云原生应用程序开发的高级抽象。你给PCF一个应用程序,平台完成其余的工作。它可以完成从理解应用程序依赖性到容器构建和扩展以及连接网络和路由的所有工作。
(来源:pivotal.io)Pivotal Cloud Foundry架构 - 开源和企业
在Cloud Foundry上运行的应用程序由BOSH(PCF的基础架构管理组件)进行部署,扩展和维护。它部署版本化软件和VM以使其运行,然后在部署后监视应用程序。虽然BOSH的学习曲线被认为是相当高的,但一旦掌握,它通过提高团队生产力而增加了相当大的价值。
在开始Pivotal Cloud Foundry的安装过程之前,Pivotal文档指导用户为PCF配置防火墙并建立IaaS用户角色指南。之后,安装由Web用户界面引导。
Cloud Foundry的平台是一种更高级别的抽象,因此它为用户提供了更高水平的生产力。但是,在生产力方面,可以在运行时自定义的内容中存在某些限制。
PCF非常适合新的应用程序,云原生应用程序和运行良好的构建包。对于从事短生命周期和频繁发布的团队,PCF提供了出色的产品。
Kubernetes是一个容器调度程序或协调程序。使用容器编排工具,用户自己创建和维护容器。对于许多团队而言,具有这种灵活性和对应用程序的控制是首选。
开发人员需要创建容器,然后在将来维护容器,而不是仅关注应用程序,例如,当堆栈中的任何内容都有更新(新的JVM版本等)时。
(来源:x-team.com)Kubernetes 架构
Kubernetes是一个成熟的容器协调器,与Docker Swarm和Apache Mesos在同一个市场上运行。在Kubernetes中,容器根据逻辑依赖关系组合在一起,然后可以在运行时轻松扩展。
Kubernetes的更多基本功能包括:
用户对Kubernetes的一个常见抱怨是设置过程的难度。首先,您必须在开始实施K8时提前计划,因为您必须在高级中定义节点,这可能非常耗时。最重要的是,设置Kubernetes因每个操作系统而异,如果用户需要构建自定义环境,则文档不足。添加到所需的所有手动集成,甚至考虑完成设置过程可能会让您头疼。
但是,一旦它可以使用,Kubernetes就容器编排工具提供市场上最成熟和最受欢迎的服务。它还有一个活跃的社区,为用户提供支持和资源。
Kubernetes是PaaS世界中的低级抽象,意味着可以更灵活地实现自定义并构建容器以运行您希望它们运行的方式。不幸的是,这也意味着您的工程团队需要做更多工作并降低生产力。
迁移到任何新系统或产品时,一个好的经验法则是使用最高级别的抽象来解决您的问题,而不会对工作负载施加任何不必要的限制。如果您需要更灵活地进行自定义,并且您愿意投入工作,请坚持使用Kubernetes(或查看下面的Kubo)。
在Cloud Foundry的容器运行时(CFCR) ,以前叫Kubo,基本上采用Kubernetes并运行 BOSH Cloud Foundry的开源生命周期管理工具。Pivotal与谷歌(Kubernetes的创建者)之间合作的目标是创建“实现,部署和管理高可用性Kubernetes集群的统一方式”。
CFCR为用户提供了Kubernetes的定制能力以及BOSH的部署和管理能力。
尝试在市场上的不同工具和服务之间进行精确的一对一比较可能很诱人。以这种方式做决定更容易。但有时,似乎相互竞争的工具和服务实际上提供了互补功能。
事实上,Pivotal Cloud Foundry和Kubernetes有一些功能重叠,但它们有两个不同的用途。因此,为您选择合适的工具意味着更密切地关注您需要的工具以及您计划如何使用它。并且两全其美?查看Cloud Foundry Container Runtime。