共计 2816 个字符,预计需要花费 8 分钟才能阅读完成。
作者简介
Christopher Tozzi,自 2008 年来以自由职业者的身份对 Linux、虚拟化、容器、数据存储及其相关主题进行报道。
时至今日,Kubernetes 已然成为风靡一时的容器编排调度工具,许多 IT 分析师均提出了企业应当在何时采用 Kubernetes 的深刻建议。然而,和所有其他的软件平台一样,Kubernetes 并非是一个适用于所有人的灵丹妙药。我更倾向于认为人们在有些时候过分夸大了 Kubernetes 的作用,以至于他们产生了一种错觉:他们无法离开 Kubernetes,而实际上,Kubernetes 比他们真正的需求要复杂得多。
为了分析人们真正的需求与 Kubernetes 的匹配程度,我分析了企业在采用 Kubernetes 编排之前必须考虑的 5 个事情。
Kubernetes 是什么?
如果您关注容器,您可能会知道 Kubernetes 是一个用于容器编排的开源工具,它可以自动执行诸如启动容器、停止容器以及在同一个容器的不同实例之间的负载均衡等重要任务。
简而言之,Kubernetes 的主要目的是最大限度地减少工程师必须手动执行的管理工作量,并通过简化容器操作,帮助企业大规模运行复杂的容器化应用程序。
决定是否采用 Kubernetes 的关键要素
基于 Kubernetes 的设立初衷,如果您喜欢自动化,讨厌手动执行重复性的任务,那么 Kubernetes 无疑是您的极佳选择。
这是您决定是否采用 Kubernetes 的重要前提,但是,您不能仅根据这一“前提”就决定是否采用 Kubernetes。在采用 Kubernetes 之前,您还需要考虑并权衡其他重要的因素。
1、Kubernetes 的基础设施规模
您的基础设施规模是其中一个决定 Kubernetes 是否能够很好地为您所用的关键要素。
Kubernetes 的设计初衷是协调分布在真正庞大的环境中的容器,这往往意味着企业应当拥有数十台主机服务器。根据过往的实施经验,如果基础架构中的服务器少于 50 个,那么您可能没有足够的资源来利用 Kubernetes 的全部优势。
这并不是指 Kubernetes 无法在较小规模的基础设施上运行。实际上,如果您愿意,您可以在单个主机上运行 Kubernetes。然而,由于 Kubernetes 其中的一个研发目的是:通过在数量庞大的集群中分布容器化应用程序提供高可用性,因此,如果您只有少量服务器,则无法享受到 Kubernetes 的某些价值。
除此之外,考虑到设置和维护 Kubernetes 的复杂性,如果您的基础设施规模较小,无法完全实现 Kubernetes 的高可用性承诺,那么或许您不应投入过多时间和精力在 Kubernetes 上。
对于较小的基础架构,您可以使用较为简单的容器编排工具,或者使用如 AWS ECS 等具有内置编排的基于云的容器服务。
2、Kubernetes 操作系统环境
Kubernetes 主要是一种 Linux 技术。尽管 Kubernetes 可以用于管理托管 Windows 服务器上的容器化应用程序,这些应用程序作为 Kubernetes 服务器集群内的所谓工作节点运行。但托管 Kubernetes 核心服务的主要服务器或者说主节点必须是 Linux。
因此,如果您的商店以 Windows 为中心,那么 Kubernetes 并非您的最佳选择。但是您可以选择 Rancher 轻松将 Kubernetes 的优势引入 Windows,并且极大程度降低使用的复杂性。
3、安装和设置 Kubernetes
在决定采用 Kubernetes 之前,您还需要评估您可以在此项目上投入的工作时间。
普通的开放源代码版本的 Kubernetes 缺少内置的应用程序,也并未提供一种可以适用于所有默认配置的安装方式。在集群正常运行之前,您需要投入大量的时间从头开始编写及调整配置文件。因此,安装和配置 Kubernetes 的过程或许是一个令人生畏的过程,您需要投入大量的时间和精力。
部分 Kubernetes 发行版提供了交互式安装程序脚本,可以帮助您自动执行大部分设置过程。如果您选择 Rancher 等 Kubernetes 发行版,则有望在一两天内轻松完成配置及安装。
第三种选择是使用诸如 Google Kubernetes Engine 等云供应商解决方案,将 Kubernetes 作为托管服务在云上运行。在这种情况下,您可以自行选择安装及设置。但值得注意的一点是,在确定如何配置 Kubernetes 环境时,您的选择可能会受到限制。
您必须意识到最为关键的一点:不要低估配置 Kubernetes 的难度。在您真的要全身心投入 Kubernetes 之前,请确保您所付出的努力是值得的。另一方面,如果您无法确定为企业在生产集群上安装和部署 Kubernetes 的难度,您可以尝试使用 K3s 等轻量级 Kubernetes 发行版来进行测试,预估后续需要付出多少努力来进行 Kubernetes 的配置和设置。
4、Kubernetes 和声明式配置管理
Kubernetes 采用了所谓的声明式配置管理方法,这就意味着,您需要自行编写配置文件来设置 Kubernetes 应用程序应当如何运行,而 Kubernetes 将自动指出如何使应用程序符合规范。
声明式配置管理与命令式配置管理相反,在命令式配置管理中,您可以自行配置应用程序的每个组件,并让其按照您所想要的方式运行。
声明式配置是 Kubernetes 在许多用户实例中如此强大和可伸缩的其中一个原因。您可以设置一次配置,并且根据需要多次应用它。
但是,如果您的配置需求不断变化,或者在工作负载或环境中的不同部分之间变化,那么您应当如何处理呢?在这种情况下,声明式配置管理将成为一个障碍,您将发现自己需要不断地调整先前认为是“一劳永逸”的配置文件。
因此,在您选择采用 Kubernetes 之前,您需要考虑应用程序的配置需求。只有当您所需要的配置相对通用且静态时,Kubernetes 才是一个不错的选项。
5、Kubernetes 和多云
Rancher 等部分 Kubernetes 发行版的主要功能之一,是单个 Kubernetes 部署可以编排多个集群,无论集群位于在不同的公有云还是私有云上。这一功能使 Kubernetes 成为协助控制多云架构复杂性的优秀工具。
在跨多云部署容器化应用程序,并且 Kubernetes 的设置和配置工作很合理时,多云上的 Kubernetes 是十分有意义的。
在这一因素中,您需要留意的是,在考虑是否以及何时采用 Kubernetes 时,应考虑您当前的多云战略以及多云扩展计划。
结 语
Kubernetes 是一个非常棒的工具,在正确设置的情况下,它可以产生巨大的价值。但是,它并没有达到杀手级应用程序的状态,因为它无法在所有用户实例中交付价值。在您被巨大的宣传攻势攻陷,并确定您无法离开 Kubernetes 之前,请清醒地对自己的需求进行评估,明确 Kubernetes 是否能在真正意义上帮助您更加有效、更加可靠地运行应用程序。