时至今日,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在许多用户实例中如此强大和可伸缩的其中一个原因。您可以设置一次配置,并且根据需要多次应用它。