本文概述了流行的SaaS解决方案,包括Rancher,Google Anthos,Azure Arc和Volterra以及开源替代方案。
> Photo by Alina Grubnyak on Unsplash
随着越来越多的组织将其基础架构迁移到Kubernetes,问题不再仅仅是“如何在单个Kubernetes集群上管理所有应用程序?”现在,越来越多的集群管理员正在努力解决组织中如何管理多集群的问题。虽然Kubernetes在单个集群中支持名称空间用于软隔离,在虚拟集群中用于硬多租户,但有时可能需要运行多个集群。
运行多个群集的最常见原因包括:
- 严格隔离:这可能是由合规性(例如,将生产/质量保证/登台集群与生产隔离)或客户需求(例如,根据客户要求运行专用服务)驱动的
- 多区域:出于可用性,故障转移,延迟或位置(例如,数据保护法)的原因,应用程序可能需要在多个区域中运行
- 多云:类似地,应用程序可能需要在多个云上运行以实现可用性/灾难恢复协议或避免供应商锁定
- 可扩展性:在极少数情况下,该服务可能会超出可扩展性的Kubernetes限制(例如,GKE集群中的15万个Pod)
在一定程度上,可以通过良好的CI / CD管道来管理多个集群。例如,在带有CircleCI和ArgoCD的Kubernetes CI / CD中,我引入了利用应用程序模式的应用程序来引导单个集群的方法。可以将其扩展到部署到不同集群的管道,以简化工作流程。
但是,真正的多集群管理解决方案需要的不仅仅是应用程序部署。有安全注意事项(例如RBAC,多群集日志记录),配置/秘密管理以及不同Kubernetes群集之间的功能奇偶校验。在本文中,我们将介绍一些流行的托管解决方案以及用于管理多个Kubernetes集群的开源项目。
Rancher
> Image Credit: Rancher
在Google宣布Anthos和AWS推出EKS Anywhere之前,Rancher与OpenShift和Cloud Foundry一起是少数支持企业应用的选项之一,以支持在混合和多云基础架构上运行Kubernetes。Rancher提供了一个控制平面来创建或添加现有的Kubernetes集群。
自Rancher v2.2.0起已支持多集群应用程序,并且从Rancher v2.5开始,一个名为Fleet(基于GitOps原理的多集群应用程序部署)的较新项目现已可用。跨多个群集分布的应用程序还可以从Rancher的全局DNS中受益,从而无需使用Cloudflare等外部解决方案即可跨应用程序配置负载平衡。
> Image Credit: Rancher
Rancher Lab的所有项目(包括Rancher,RKE,Longhorn和K3s)都是开源的,但是如果您需要SaaS解决方案,它们还提供托管版本。
谷歌Anthos
托马斯·库里安(Thomas Kurian)接管Google Cloud时,他继承了Oracle的多云战略构想,我在“为什么BigQuery Omni是一件大事”中作了详细介绍。Google Anthos是一个基于Kubernetes的开放平台,可以将GKE扩展到混合和多云环境,非常适合此策略。谷歌是Kubernetes的领导者,这已经不是什么秘密了。对于希望采用Kubernetes的现有GKE用户和新组织来说,Anthos是一个诱人的选择。
> Image Credit: Google Cloud
Anthos将群集组织成可以对群集和资源(例如工作负载标识,名称空间,服务)进行逻辑管理的逻辑分组。Anthos的另一个强大功能是Anthos Config Management,它由以下组件组成:
- Config Sync:遵循GitOps模型,以跨多个集群(例如,名称空间,集群角色,安全策略)持续同步配置
- 策略控制器:基于Open Policy Agent Gatekeeper项目来实施策略(例如,不合规的API请求)
- 二进制授权:要求集群中运行的映像由受信任的机构签名
- 层次控制器:基于“层次命名空间控制器”项目,创建共享公共父命名空间以进行继承或控制的命名空间
Microsoft Azure Arc
> Image Credit: C# Corner
对于Microsoft Azure用户,Azure Arc提供了与Google Anthos类似的功能。Azure Lighthouse用于控制所有Kubernetes群集之间的RBAC,以及Azure策略用于实时实施和评估策略违规。Azure Arc还本地支持某些Azure数据服务,例如Azure SQL托管实例和Azure PostgresSQL Hyperscale。
Volterra
几周前,F5宣布了对Volterra的收购,Volterra是一家多/混合云管理初创公司,于2019年成立,由Khosla Ventures,Mayfield,M12(Microsoft)和Samsung Ventures投资。在“分布式Kubernetes PaaS的控制平面”中,Volterra首席执行官Ankur Singla描述了创建Volterra的动机:
- 没有强大的Kubernetes发行版或PaaS(例如OpenShift,Cloud Foundry)为分布式集群提供一套全面的安全和运营服务,例如RBAC /用户管理,机密/密钥管理和多集群服务网格。
- Anthos,Azure Arc和Rancher专注于将多种服务打包和部署到分布式群集,而较少关注于运营和多租户需求。
自2019年以来,其他竞争对手已经添加了一些功能来解决这些问题,但是当时Volterra的SaaS产品套件提供了独特的解决方案,可以跨多个云和边缘平台部署,连接,保护和运行应用程序:
- VoltConsole:用于集中管理在VoltMesh和VoltStack上运行的应用程序的门户
- VoltStack:分布式Kubernetes平台,用于部署,保护和运行跨云和边缘运行的应用程序
- VoltMesh:高性能网络层,用于连接运行在不同云和边缘上的应用程序
- Volterra全球网络:应用程序到应用程序网络可提供出色的性能 > Image Credit: Volterra Blog
其他解决方案
- Rafay托管Kubernetes平台:Rafay提供的解决方案(著名客户:Verizon)
- VMWare Tanzu Mission Control:VMWare的中央管理解决方案
- IBM Cloud Pak:IBM的多集群管理解决方案
- 金钟:提供开源或云托管/企业版
- Gopaddle:以应用程序为中心的平台到集中式集群管理支持
开源项目
- kubefed:alpha中的官方Kubernetes SIG项目
- 园丁:在SAP的大力支持下的多云/集群项目
- KQueen:Mirantis的旧项目似乎不再维护