第 14 章 作为代码构建集群
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
第 3 章介绍了应用程序托管集群,它是一种在服务器池中动态部署和运行应用程序实例的服务(参见"计算资源")。应用集群系统的例子包括 Kubernetes、AWS ECS、HashiCorp Nomad、Mesos 和 Pivotal Diego。这种模式将协调应用程序的关注点与调配和配置其运行的服务器的关注点分开(见图 14-1)。
图 14-1. 应用程序群集在基础架构资源和在其上运行的应用程序之间创建了一个层
当然,您应该使用代码来定义和管理应用程序集群。如第 10 章所述,您可以将一个或多个应用程序栈作为代码来构建应用程序集群。在本章中,我将举例说明。我将展示一些不同的堆栈拓扑结构,包括整个群集的单一堆栈,以及多个堆栈之间的分解群集(请参阅"应用程序群集的堆栈拓扑结构")。我还提供了针对这些拓扑结构提供基础架构代码变更的管道图。
我还讨论了跨环境和跨团队共享或不共享集群的策略(参见"应用集群的共享策略")。在本章的最后,我将讨论无服务器应用程序的基础架构(参见"FaaS 无服务器的基础架构")。
应用集群解决方案
实施和维护应用程序群集有两种主要方法。一种是使用托管群集作为服务,通常作为基础架构平台的一部分提供。另一种是在底层基础架构资源上部署打包的集群解决方案。
集群即服务
大多数基础架构平台都提供托管群集服务。您可以使用堆栈配置工具以代码形式定义、配置和更改群集。将群集作为服务使用,只需创建一个包含群集和支持元素的堆栈。
其中许多集群都基于 Kubernetes,包括 EKS、AKS 和 GKE。其他集群则基于专有容器服务,如 ECS。
托管 Kubernetes 集群不是云抽象层
乍一看,供应商管理的 Kubernetes 集群似乎是在不同云平台上透明地开发和运行应用程序的绝佳解决方案。现在,你可以为 Kubernetes 构建应用程序,并在你喜欢的任何云上运行它们!
在实践中,虽然应用程序集群作为应用程序运行层的一部分可能很有用,但要创建一个完整的运行平台还需要做更多的工作。而且,从底层云平台实现真正的抽象并非易事。
除了集群提供的计算资源外,应用程序还需要访问其他资源,包括存储和 Network+。这些资源将由不同的平台以不同的方式提供,除非您构建一个解决方案来抽象这些资源。
您还需要提供监控、身份管理和机密管理等服务。同样,您要么在每个云平台上使用不同的服务,要么构建一个可以在每个云上部署和维护的服务或抽象层。
因此,应用集群实际上只是整个应用托管平台的一小部分。即使是这一小块,不同的 Cloud 也会有不同的版本、实现方式和核心 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access