众所周知,Kubernetes 很难部署并大规模运维。以下内容是对 Kubernetes 产品功能的比较和思考。
各个行业的数字化转型正在推动 IT 部门对云原生应用的支持。在这种趋势下,很多企业将采用 Kubernetes 作为云原生的有效方式,基于容器的架构模式,构建现代化的应用程序和 IT 基础架构。
所有组织都试图利用 Kubernetes 的优点:纯绿色不受影响的应用程序,以及对遗留的应用程序进行重构和更现代化的能力。虽然很多组织都在尝试利用 Kubernetes,但是这方面的人才稀缺以及大规模运维的复杂度,阻碍了它被大规模应用。
众所周知,Kubernetes 很难部署并大规模运维,如果需要管理内部和公有云两部分基础架构,则这种情况更为严重。业界出现了很多关于 Kubernetes 的解决方案(有业界成熟的厂商,也有很多初创公司),旨在解决应用 Kubernetes 方面的一些挑战性问题。这让整个生态圈变得繁杂,企业很难在其中浏览和对比相关产品。
本文评估了企业大规模使用 Kubernetes 各种解决方案时,需要考虑的 18 项技术和运行能力。在本系列的下一篇文章中,我们会比较一些主要的商业解决方案,看它们如何综合使用这些关键特性。
部署 Kubernetes 需要考虑的问题
1. Kubernetes 集群的高可用性
Kubernetes 并没有提供一个高可用的、开箱即用的集群使用方式,需要管理员配置 HA。建议在负载均衡的基础上配置至少 3 个 master 节点,与 etcd 集成或者独立进行集群部署,并存储所有的节点信息。任何高可用的方案中,都必须考虑发生故障的情况以及如何自我修复和自动恢复。
2. 部署模式的支持
Kubernetes 的部署模式决定了它在企业环境中的运作方式,以及在今后的运维中提供怎样的服务级别(SLA - Service-Level Agreement)。
Kubernetes 解决方案的前三个部署模型分别是:
传统的内部部署模式:用户在自己的基础设施上面下载并部署 Kubernetes,或者使用专业服务提供商提供的服务进行部署。
将 Kubernetes 作为服务托管(KaaS):供应商在云平台或者服务商托管的基础设施之上将 Kubernetes 作为服务提供。
混合云模式下的 Kubernetes 即服务:Kubernetes 作为你所选择的基础设施上面的服务,是搭建在自有的数据中心上,还是公有云基础设施。
3. 使用的先决条件和操作系统要求
企业级 Kubernetes 解决方案的先决条件中,明确描述了启动和运行 Kubernetes 之前,需要满足的基础设备要求。某些解决方案甚至还需要购买很多昂贵的底层基础设施的许可证,比如说 Hypervisor(用来建立与执行虚拟机器的软件、固件或硬件),以及对托管 Kubernetes 解决方案方面的投资。
4. 监控和运维方面的管理
线上 Kubernetes 集群必须被实时监控,方便及时处理问题和中断现象,以避免对用户集群和应用程序的可用性产生严重影响,所有企业级 Kubernetes 解决方案都必须提供这项能力。
5. 集群升级
Kubernetes 拥有一个庞大的贡献者社区,每 3 个月就会推出一个新版本。因此,企业级解决方案需要对集群提供滚动升级的能力,这样的话即便整个集群在升级,集群以及相关的 API 也可以被正常使用。此外,当升级失败的时候,也需要及时回滚到之前的稳定版本上。
6. 多集群管理
单一的 Kubernetes 集群可以在水平方向上直接扩展,以支撑大量的工作负载。但是,在生产环境往往需要运行多个 Kubernetes 集群,比如说,你可能希望将开发、测试、演示环境的应用与线上环境完全隔离开,各自运行在自己独立的集群里面。
7. 多租户、基于角色权限的控制和单点登录的支持
Kubernetes 在集群级别上,对多租户的支持,是使用了操作系统上 namespace 这个抽象概念。可是在多集群环境中,你就需要在 Kubernetes 之上提供更高级别的抽象概念来支持多租户的能力,并为不同的用户团队提供合适的隔离级别。而且需要与企业最常用的单点登录(SSO)功能进行集成,例如 Active Directory 或者 ADFS、Okta 以及其他主流的 SAML 提供商。
8. 负载均衡
Kubernetes 自动将服务请求平均分配到 Kubernetes 集群里面的应用服务上。但是,某些服务需要对外公开,方便外部客户端调用。Kubernetes 未对其提供开箱即用的负载均衡功能。企业级的 Kubernetes 解决方案应该包含一个健全的外部负载均衡策略,或者能够与现有的商用负载平衡器无缝对接。
9. 支持私有的注册中心和镜像管理
在 Kubernetes 集群上面,运行容器化的应用程序,需要访问容器的注册中心,里面存储了应用程序的镜像。大型的企业通常需要有一个安全的私有容器注册中心,用来存储企业自己的程序镜像。企业级 Kubernetes 解决方案,需要提供一个镜像管理的能力,并且可以开箱即用。
10. 混合云方面的集成和相关 API
目前很多企业都希望通过投资多个云平台,脱离对单一云平台的依赖。将多个私有云以及公有云整合在一起,作为云战略的一部分,这可以保证你不会局限于单个没有价格杠杆的云平台供应商,从而具备整个基础架构的高可用性,并满足您独特的业务策略。
11. 企业级的用户体验
企业级的用户体验主要就是拥有一个漂亮的用户界面,企业能够通过一些单一的 UI 管理其混合环境。这能带来完全的可视化,简化整个环境的通信。UI 也应该允许跨集群操作,例如:对于不同区域、数据中心或者云提供商,支持在全部的集群上面,查询特定类型、标签或者特殊文本的工作集。
12. 应用生命周期管理 —— 应用的 CataLog
应用的 CataLog 为 Kubernetes 之上提供简单一键化部署的一组预打包应用程序。同时其他团队或者组织也可以通过 Catalog 作为载体,一键化部署并发布他们的应用。应用的 Catalog 可以让组织对一组应用的部署更加标准化,避免配置的蔓延。
13. 生产环境对服务水平等级(SLA)的要求
越来越多的组织将自己的业务运行在 Kubernetes 上面,IT 部门必须要保证它可以支撑所有业务上对 SLA 的要求。IT 部门必须保证 Kubernetes 能够有效支撑开发人员和业务人员的关键活动。大多数组织的要求是 99.9%时间可用。
14. 易于安装,可持续的使用,管理和维护
一个成功的 Kubernetes 平台必须易于实施和维护,这样使用它的组织就可以持续地利用容器。这一点是很多组织无法克服的主要障碍。
15. 网络方面的支持和集成
网络集成是在生产环境运行 Kubernetes 集群的关键组件。企业通常希望 Kubernetes 能与他们目前正在标准化的软件定义网络(SDN)直接集成,或者像 Calico 或 Weave 这样的容器本身的解决方案,为他们在隔离方面提供了更多的选择。
16. 存储的支持与集成
与网络一样,存储的集成也是生产环境运行 Kubernetes 集群的重要组件。Kubernetes 提供了一个名叫 Persistent Volumes 的抽象概念,用来对有状态应用程序的数据进行持久化操作。对于企业级 Kubernetes 产品来说,保存一组 PV 的映射关系到高可用存储中技术中很重要。企业通常希望他们的 Kubernetes,可以与他们现有存储方面的解决方案集成在一起,例如 NetApp、Pure、SolidFire 等。或者与容器本身的存储技术集成(例如:Portworx)。
17. 提供自动服务的能力
开发人员必须能够自助访问一个或者多个 Kubernetes 集群,并且根据不同级别进行适当的隔离。这样的话,就可以保证只有部分人员才能访问实际生产环境的工作集。
18. 内置 CI/CD 的支持
开发人员对于工作集运行,最关心的一个要点就是持续集成和交付的能力。一个强大的 CI/CD 通道的能力,对于保证敏捷开发和新软件的快速交付有至关重要的作用。
查看英文原文:https://dzone.com/articles/18-features-to-consider-when-evaluating-an-enterpr
评论