按照最近互联网的惯例,我们先请教了下 ChatGPT,以下是 TA 的回答:
ChatGPT 确实给出了一个有模有样的列表,涵盖了从集群管理到运维管理等九大能力。不过也不难看出,这份回答略显笼统,很难为用户的选型实践提供有效参考。为此,在这篇文章中,我们将结合原生 Kubernetes 管理挑战,深入探讨 Kubernetes 管理平台需要具备的重要核心能力*。我们也将在文末附上国际权威研究机构 Gartner 提供的容器管理服务采用建议,为读者选型 Kubernetes 管理平台提供思路。
* 部分内容参考国外权威机构市场报告、重要媒体文章和博客文章,详见文末“参考文章”列表。
Kubernetes 运维管理有哪些挑战?
虽然 Kubernetes 对资源扩展和应用程序的部署、管理、监控、迁移、恢复等方面的支持,已经降低了容器管理的复杂度,但采用 DIY 的方式搭建和运维 Kubernetes 依旧具有挑战性:
1. 手动管理集群生命周期费时费力
用户在使用 Kubernetes 时可能需要频繁扩展/删除集群,这不仅要求用户熟知节点、Pod 等相关概念和工作原理,还需要执行一系列步骤来调整和配置节点。这个过程劳神费力,而且一旦出现配置错误,可能会导致服务不可用,徒增运维负担。
而且,随着集群规模的逐渐扩展,想要手动操作每个集群完成 Kubernetes 版本或安全更新,并保证升级过程不会影响业务高效稳定运行,也不是一件容易的事情。Kubernetes 更新速度快,每 4 个月就会发布一个新版本(次版本),每 1 个月会发布一个新的补丁版本(若遇到严重 bug,更新节奏会更快)。同时,Kubernetes 社区仅为最新的三个版本提供 1 年的维护支持(1.18 及更早的版本支持时长为 9 个月),这就要求用户尽量保持生产环境的版本在社区维护范围内,以及时弥补漏洞并获取最新的功能特性。这一系列持续、频繁的升级操作,若没有自动化工具辅助,将耗费运维人员大量时间和精力,也很容易出错。
2. 可视化工具集成程度低,不便于监控集群整体健康状态
Kubernetes 优秀的容器编排能力提高了集群的可扩展性和应用在多环境间的可移植性,但同时也使得应用间的关系和资源开销变得更加复杂。为了更好地监测应用和基础设施的运行状态、对集群进行跨平台管理,运维人员需要实时、准确地了解从基础架构到应用组件间各层级的数据流和资源使用情况。 虽然 Kubernetes 官方提供了 Kubernetes Dashboard 和多种第三方可视化工具,来支持用户查看容器、Pod、服务和集群级别的资源使用信息,但这些监视功能入口分散,需要自行调用/安装,缺乏统一的可视化管理界面。同时,一些高级的可视化信息,如 Pods 中的容器日志、事件和存储分析,很难在原生 Kubernetes 上进行关联和可视化查询。
3. 复杂的容器环境更考验安全策略的制定
相比传统架构,Kubernetes 在安全方面的运维管理更加复杂:运维人员需要制定全面的安全策略,包括如何为不同人员——开发者、运维人员、承包商、合作商、用户等——划定相应的访问权限,以及如何保障网络、镜像、节点,甚至是操作的安全。虽然 Kubernetes 提供了一些网络与安全管理功能,如 RBAC(基于角色的访问控制)机制和 Network Policy,运维人员仍然需要花费大量时间学习相关概念(如角色和角色绑定)和操作方式。 同时,由于 Kubernetes 支持容器在多种环境运行,用户需要设置更严格的应用程序网络隔离、身份验证和授权规则,以减少攻击面,并对数据传输进行保护。Kubernetes 各代版本也会存在一定的安全漏洞,如允许攻击者伪造命令行输出来获得控制和访问权限。为了避免遭遇这些漏洞,运维人员需要及时更新补丁和新版本,这就又出现了前面所说的运维复杂的问题。
4. 多环境特性提高了一致性管理的要求
在整个应用开发、测试、生产流程中,运维人员需要保证在不同的环境中,应用程序的资源配置、部署流程、问题响应机制是一致的。这可能需要运维人员手动定义资源清单,并根据环境调整环境变量、配置文件、命名空间等,不仅需要多次操作,还可能出现配置错误,拉低部署的可靠性。 同时,不少企业只将部分业务放在 Kubernetes 上,其他应用放在虚拟化环境/其他平台上运行,构成混合的业务运行体系。运维人员在进行管理时,不仅需要掌握不同平台的操作方式,而且难以对多平台上的集群资源配置、安全策略等进行统一管理。
5. 业务快速增长带来性能和管理瓶颈
随着业务的不断增长,Kubernetes 上的应用数量可能会出现爆发式的增长,容易引发资源争抢,导致性能下降、控制器难以及时感知数据变化等一系列问题。这不仅对支持 Kubernetes 的网络和存储设备具有较高的性能和资源管理要求,还要求运维人员能够对资源占用和性能变化数据做出及时的反馈。这就又回到了上面“可视化”的问题。
Kubernetes 管理平台需要具备的 5 个核心能力
为了有效解决 Kubernetes 手动运维管理复杂、自动化程度低、功能分散等主要问题,运维人员应该选择一款简单、智能、运维友好并支持多环境统一管理的 Kubernetes 管理平台,帮助运维人员完成耗时费力的低价值工作、提升容器环境安全与运行效率。
基于以上分析,我们归纳了 Kubernetes 管理平台需要具备的 5 个核心能力:生产就绪、多环境与虚拟化的统一支持、简单智能的部署运维、集成的可视化分析界面,和网络与安全高级管理功能。
Gartner:选择与您的应用架构和部署目标一致的 Kubernetes 管理平台
最后,我们附上 Gartner 在《Market Guide for Container Management》和《How to Run Containers and Kubernetes in Production》中给出的 Kubernetes 管理平台选型建议,进一步帮助您选择符合企业发展目标的产品:
- 根据您的技术采用情况、业务需求、技术文化等确定和/或验证要将哪些业务案例部署在 Kubernetes 上。
- 评估您现有的战略合作伙伴供应商的产品,他们的产品或许就可以满足您的要求。
- 明确您是否需要混合云和/或多云解决方案。如果需要,您是否愿意购买提供云服务功能的软件?如果您不需要混合和/或多云解决方案,您可以考虑采用云平台提供的原生容器管理服务。
- 您需要一个更自主的产品还是赋予应用程序开发人员更多控制权的产品?选择符合您要求的解决方案。
- 您的公司内部有专业技术人员吗?如果没有,您可以选择公有云或托管产品*。
* 需要注意的是,虽然基于公有云或托管云的 Kubernetes 平台在运维管理上具备一定优势,但对数据安全、厂商锁定、大规模扩展带来的资金消耗较为敏感的企业,更适合采用私有云方案。 选型时,请对 Kubernetes 管理平台的产品技术和您及供应商的市场条件同时进行评估。
参考文章:
1. Top 5 Kubernetes Operations Challenges and How to Mitigatehttps://tanzu.vmware.com/content/white-papers/top-5-ops-challenges
2. The Challenges With Kuberneteshttps://www.opsramp.com/guides/why-kubernetes/challenges-with-kubernetes/
3. Kubernetes 版本偏差策略https://kubernetes.io/zh-cn/releases/version-skew-policy/
4. Market Guide for Container Management,Gartnerhttps://www.gartner.com/document/4012524
5. How to Run Containers and Kubernetes in Production,Gartner
https://www.gartner.com/document/4018502 注:ChatGPT 是美国 OpenAI 公司的注册商标。
推荐阅读: