短短几年内,Kubernetes迅速成为事实上的容器编排开源标准。许多Kubernetes解决方案和产品已经从初创企业发展为传统的供应商,因此很难比较和对比各种产品。本文确定了在评估各种Kubernetes解决方案供应商产品时要考虑的18项技术和运维能力,在后续文章中会详细比较了市场上四个领先解决方案(Pivotal PKS、Red Hat OpenShift、Rancher和Platform9 Managed Kubernetes)的这些产品的能力的完整性水平。
Kubernetes群集、高可用性和自我修复
Kubernetes不提供现成的高可用集群部署,必须由Kubernetes管理员配置。建议在负载均衡服务器后至少配置三个主节点,一个独立或者集成的etcd集群,etcd保存储所有群集状态信息。任何高可用解决方案还必须考虑故障场景的自动恢复和修复。
支持部署模型
Kubernetes 解决方案的部署模型定义了它将如何集成到您的企业环境中,以及它可以为运维提供服务级别协议。Kubernetes解决方案的前三个部署模型是:
本地部署,用户自行下载并在本地部署Kubernetes。
云部署,把Kuberenetes作为服务,例如把Kubernetes部署在AWS或者Azure上作为服务。
混合部署,自由选择本地部署或者云端部署,并且有能力集中管理本地和云端的Kubernetes集群。
硬件以及操作系统需求
在使用Kubernetes 启动和运行之前需要满足的基础设施要求。某些解决方案需要购买昂贵的底层基础架构许可,例如虚拟机管理程序vSphere,或者其他投资。
监控以及运维管理
企业级Kubernetes群集必须可监控,以处理任何集群故障,保证群集和应用程序的稳定性和可用性。Kubernetes解决方案必须提供开箱即用监控和运维管理能力。
群集升级
Kubernetes 拥有大量的贡献者社区,每3个月提供一个新版本。企业级解决方案将支持群集的滚动升级,以便群集和群集API即使在升级群集时也始终可用。此外,它将提供在发生故障时回滚到以前的稳定版本的能力
多集群管理能力
单个Kubernetes群集可以水平扩展以支持大型工作负载集。但是,在生产中运行Kubernetes需要能够运行多个Kubernetes群集,因为您希望通过将开发/测试/暂存应用程序部署到单独的群集来将其与生产应用程序完全隔离。
多租户支持,基于角色的访问控制以及单点登录
Kubernetes支持使用命名空间抽象在群集级别进行多租户。但是,在多群集环境中,还需要一个更高级别的多租户抽象来补充Kubernetes多租户,并在不同用户团队之间提供适当级别的隔离。它应与企业最常使用的单一登录(SSO)解决方案集成,如 Active Directory 或 ADFS、Okta 和其他流行的 SAML 提供程序。
负载均衡
Kubernetes可以在集群内部对应用或者服务请求做负载均衡。但是,某些服务需要供外部客户端使用。Kubernetes并没有为此类服务提供开箱即用的负载平衡解决方案,企业级Kubernetes产品应包括强大的外部负载平衡解决方案,或与现有商业负载平衡器无缝集成。
私有镜像库支持与管理
在Kubernetes 群集上运行容器化应用程序需要访问存储应用程序映像的库。大型企业组织通常希望有一个安全的专用容器注册表来存储其专有应用程序映像。企业级 Kubernetes 解决方案应提供开箱即用的镜像管理功能。
支持更多的云供应商
如今,每个企业都希望通过投资多个云解决方案来构建云中立战略。作为一部分,具有多个私有云和/或公共云战略确保您不会陷入被动,例如单个云供应商,没有定价杠杆,在整个基础架构中实现高可用性,并满足您独特的业务策略。
企业级用户体验
企业级用户体验就是拥有完善的用户界面,使企业能够通过应用程序管理其基础设施,对基础设施提供了完整的可见性,简化了整个环境中的通信。此外还应允许跨多个群集的操作:例如,全局搜索特定类型的工作负载,或在运行在不同区域、数据中心和云提供商上的所有群集上使用特定标签进行标记。
应用程序生命周期管理以及应用程序目录
应用程序目录为 Kubernetes 之上的一组预打包应用程序提供了简单的一键式部署。它还为最终用户提供了一个工具,通过目录构建和发布自己的应用程序,供其团队或组织中的其他人以一键方式部署。应用程序目录使组织能够对一组应用程序部署配置或蓝图进行标准化,从而避免配置混乱。
生产级服务级别协议(SLA)
随着越来越多的组织在 Kubernetes 上部属应用程序运营其业务,Kubernetes集群必须确保应用程序可以支持业务的服务时效,必须确保部署的应用程序可供开发人员和业务部门持续可用。大多数组织需要99.9%的可用度。
易于安装、安装、连续使用、管理和维护
成功的Kubernetes平台必须易于实施和维护,以便组织能够持续利用容器。这是许多企业实施Kubernetes的主要障碍。
网络支持和集成
网络集成是在生产和大规模运行Kubernetes群集的关键组成部分。企业通常希望Kubernetes能够与SDN解决方案集成,或者可以选择其他网络方案。
存储支持和已经外部存储集成
类似于网络,与企业级存储集成是生产中运行Kubernetes群集的重要组成部分。Kubernetes 提供了一种称为"持久卷"(PV)的抽象,用于保存有状态应用程序保留的数据。对于企业 Kubernetes产品来说,将 PV 映射到实际的高可用存储技术非常重要。企业通常希望其Kubernetes部署与已部署的存储解决方案集成,如NetApp、Pure、SolidFire 等,或者他们可能希望与容器原生存储技术(如Portworx)集成。
开发人员自助服务
开发人员应该具有适当隔离级,访问Kubernetes群集发布或者管理应用。
内置 CI/CD 支持
开发人员最关键的工作任务之一是持续集成/持续交付。强大的CI/CD支持对于确保敏捷开发和快速向客户交付软件新版本至关重要。