翻译自 How to Cut Through a Thicket of Kubernetes Clusters 。
自己搭建 Kubernetes 很难。如果您正在寻找一个解决方案来帮助您扩展现代应用平台,请确保寻找以下功能。
Kubernetes 集群和微服务为开发和运行现代应用程序开辟了大量新的可能性,它们带来了许多优势,包括分布式架构、增加的冗余、高可用性和无中断升级。但与大多数事情一样,这些好处也伴随着挑战。
由于 Kubernetes 的性质以及人们对该技术的总体兴趣日益增加,运行它的选择越来越多。今天,我们可以在公共云或内部部署 Kubernetes。如果我们去公共云,我们可以从众多超大规模服务中选择一个,甚至多个,它们都有自己的产品来为我们提供 Kubernetes 集群。我们还有多种选择可以在本地获取它,例如 VMware Tanzu、Openshift、Rancher 和更多解决方案。
但为什么不自己从头开始安装 Kubernetes 集群,让一切都在我们自己的控制之下呢?原因很简单:这很耗时,而且不是一件容易的事。如果您从未尝试过,我建议您查看 Kelsey Hightower 的 “Kubernetes the Hard Way” 。
最新的 Kubernetes 状态报告进一步证实了这一点,该报告发现许多公司正在放弃 DIY Kubernetes。
正因为如此,许多组织要么使用来自超大规模提供商的产品,要么使用其中一种本地选项。对于中型到企业规模的环境,通常将两者结合使用。这种多云方法有助于避免被特定的解决方案或供应商所束缚,它也是一种在基础设施中构建冗余和弹性的方法。
作为平台工程师,我们需要使用不同的平台和解决方案来管理和维护数十个、数百个甚至数千个 Kubernetes 集群——这通常被描述为 Kubernetes 集群蔓延。
在您开始考虑管理之前,这听起来可能不太可怕。您如何确保这些集群符合并遵循安全标准,尤其是在您的组织受某些安全法规约束的情况下?
考虑访问、资源、安全和网络策略管理、镜像限制要求以及包和 Kubernetes 生命周期管理。
用一些策略定义 YAML 并将它们应用到单个集群可能听起来不是一个巨大的挑战,但大规模地进行——数十或数百次,不同的集群应该配置略有不同的策略——很快就会变得更加复杂。
这种程度的管理需要思维方式的改变,尤其是如果您扎根于更传统的基础设施管理并且可能只有几个大型管理程序集群托管您的虚拟机。
那么应该如何管理不同平台上的所有这些集群呢?这是我经常从平台工程师同事那里听到的一个问题,也是我在自己的组织中一直在处理的一个挑战。
每个 Kubernetes 集群都提供可用于定义策略等的基本资源。让我们考虑一下网络策略。我可以创建一个 YAML 并通过简单的自动化将其应用于任何集群。很简单,对吧?然而,说起来容易做起来难。
首先,我需要一个 YAML 来定义配置。没什么大不了的。即使我对 YAML 清单不太有信心,我仍然可以使用一些工具,例如作为 Cilium 项目的一部分免费提供的网络策略编辑器。但是我该如何对我的集群进行分组,以确保在正确的集群上应用了正确的 YAML?最重要的是,我如何确保我的集群仍然符合我们之前定义的配置?
有了网络策略,我们就有了一个可以使用的编辑器。其他配置如何,例如基于角色的访问控制 (RBAC)、安全性等?我们可以使用一些专用的工具和编辑器,但如果我们不能指派庞大的团队来处理它,这不是一个完美的解决方案。
幸运的是,Kubernetes 领域的主要参与者注意到了我们的挑战并提供了更全面的解决方案来帮助减轻痛苦并节省时间、提高生产力和标准化并缩短上市时间。我们今天可以选择的一些可用选项包括:
- VMware Tanzu Mission Control
- Google Anthos Config Management
- Azure Arc for Kubernetes
- Rancher Server
- Advanced Cluster Management for Kubernetes (Red Hat OpenShift 提供)
这不是一个完整的列表,不会让选择变得更容易。领导者应该如何为他们的组织选择最好的?它可能部分基于一些个人和公司的偏好,或者他们已经在使用特定供应商平台的事实。
不言而喻,但应始终根据组织的特定要求集做出这样的决定。我们不会仅仅为了购买产品或因为它“漂亮有光泽”而购买产品。 😊
但是,在尝试为您的环境确定最佳解决方案时,有一些功能可以成为救命稻草,或者至少可以节省时间,最终会影响底线:
- 多样化的 Kubernetes 集群管理:尽量避免局限于单一平台的解决方案。仅仅因为您今天使用单一平台并不意味着您明年不会使用其他平台。
- 策略驱动的管理:产品应该提供一个相对简单的选项来定义策略,最好没有对 YAML 清单的深入体验。一些可以通过策略管理的最有用的配置可能与但不限于网络(防火墙规则)、安全、图像管理、RBAC、资源配额等有关。
- 生命周期管理:如果您考虑新版本可用的频率,那么能够使用较新版本的 Kubernetes 轻松地大规模升级您的集群非常重要。
- 包管理:您可能需要在 Kubernetes 集群上安装许多其他组件。一项让您以集中方式远程安装它们的功能是必不可少的。
- 集群组管理:寻求根据环境类型、关键性、服务级别协议或适用于您的组织的任何其他因素来定义各种结构以对集群和命名空间进行分组的能力。这可能与多租户的概念有关,但不一定如此。
额外的功能和特性可能被认为是一个加分项,但在我看来,这些才是最重要的功能,有助于在多云环境下简化 Kubernetes 集群管理,即使在非常大的规模下也是如此。