五种方法判断Kubernetes是否适合你的应用

五种方法判断Kubernetes是否适合你的应用

2022-11-10 14:33:40

云计算

云原生 尽管Kubernetes是一项优秀的技术,但它远不是适合所有应用部署的最佳解决方案。

很多情况下,应用程序现代化的路径是这样的:首先,将应用重构为微服务;接下来,将每个服务容器化;最后,将其部署在Kubernetes上。Kubernetes是一种开源的编排引擎,已经成为运行容器化应用的一种事实标准平台。

问题是,并非所有的现代化都遵循这种路径。很多情况下,Kubernetes并不是现代软件部署之旅的一部分。

尽管Kubernetes是一项优秀的技术,但它远不是适合所有应用部署的最佳解决方案。即使你的应用使用容器作为微服务运行,Kubernetes也不一定是部署这些应用的最佳方式,还有其他更简单的解决方案(例如Amazon ECS或者Lambda)可以用于运行容器。而且,如果你的应用根本不是一组微服务,那么Kubernetes显然也不是运行这些应用的一个好方式。

那么,哪些类型的应用实际上可以通过Kubernetes运行呢?应用具备哪些功能要求或者架构特征的情况下特别适合采用K8(Kubernetes追随者有时候对该平台的叫法)呢,或者反过来,更适合采用替代性的托管解决方案呢?

本文通过介绍使用Kubernetes部署应用之前应该具备的五个关键因素来回答这些问题。我们还将研究Kubernetes工作负载的“反模式”,即团队在选择是否用K8来运行给定工作负载时经常犯的一些错误。

如何判断你的应用是否适合Kubernetes?

在评估应用是否适合通过Kubernetes进行部署的时候,请考虑Kuberbetes与以下每个特征的匹配程度。

1、你的应用是作为小型的、简洁的、独立的可扩展服务运行的

当应用作为一组小型的、简洁的服务运行的时候,它就非常适合Kubernetes。主要原因是Kubernetes可以独立地动态扩展每个服务,反过来意味着你的应用可以最有效地利用可用的托管资源。

相反,作为“单体”运行的应用(也就是说整个应用是作为单一服务运行的)并不能从Kubernetes中受益。选择在K8上运行单体应用,就意味着与选择更简单的部署模型(例如在独立虚拟机上运行该应用)相比,你将面临更多的复杂性,而且也不会获得很多好处,因为单体应用是无法进行细粒度或者动态扩展的。

2、你的应用是与硬件无关的

不需要特定硬件配置的应用可以很好地运行在Kubernetes上,因为你可以使用K8s设置服务器集群并在这些集群之间部署应用。Kubernetes会决定在集群中放置每个应用的位置,并根据需要为应用分配资源。或者,你可以(通常应该可以)定义Kubernetes在部署时应该分配给每个应用的资源最小值。

另一方面,如果你的应用需要严格的CPU或者内存分配(或者需要访问专用硬件设备例如GPU),那么通常把应用直接部署在虚拟机要比K8s集群更有意义。

3、你的应用是众多应用之一,而且这些应用可以在共享基础设施上共存

Kubernetes允许你使用称为命名空间的功能把工作负载彼此分割,命名空间本质上是你可以在单个服务器集群中进行定义的虚拟边界。但是,Kubernetes并不提供在专用虚拟机或者是物理服务器上运行每个应用所获得的“硬”应用隔离。

这意味着,如果你有大量可以共享服务器集群的工作负载,而且每个工作负载都运行着自己的虚拟环境,那么Kubernetes非常适合,而如果你需要工作负载之间有坚如磐石的隔离,那么K8就不是那么好了。如果你只有少量的工作负载,这也没有多大意义,在这种情况下,设置和管理Kubernetes的难度要超过它能带来的价值。

4、你的应用运行多个服务,有些是内部的,有些是外部的

通常,现代应用中只有一些微服务需要是外部的,意味着可以连接到应用外部(但仍在公司网络内部)的资源,而其他服务(例如在应用前端和后端数据库之间内部移动数据的服务)则不需要连接到应用或者是托管这些应用的服务器集群外部。

Kubernetes是此类应用的绝佳解决方案,因为Kubernetes让你能够以细粒度的方式定义哪些服务将面向公司网络,哪些服务仅限内部,而且真正重要的是,它让你可以保存企业网络IP地址,这一点很重要,因为IP地址在企业环境中通常是有限供应的。

5、你的应用需要自定义DNS设置

Kubernetes让管理员可以很好地控制网络名称的解析方式,这对于那些需要自定义域名设置(而不是使用通用DNS服务器)将IP地址映射到主机或服务名称的应用来说非常有用。

大多数传统应用并不需要特殊的DNS设置。但是在手动设置DNS配置的企业环境中,或者对于具有大量需要特殊DNS设置的内部服务应用来说,Kubernetes是很有用处的,因为Kubernetes提供了对DNS一定程度的控制和灵活性,而这在其他类型托管环境中是不具备的。

在什么情况下你绝不应该使用Kubernetes

为了在是否使用Kubernetes的决策过程中多考虑一些背景信息,让我们来看一下什么时候我们不走K8路线的一个例子。

当你有一个单体应用的时候,你决定把它放到Docker容器中。尽管从技术角度来看,Kubernetes能够运行你的容器化单体,但选择在Kubernetes上部署这类应用会让你面临很多挑战,而且几乎不会带来任何好处。

你的应用将无法有效地消耗主机资源,因为Kubernetes无法对应用的不同部分进行单独的扩展。这个应用作为一个整体,只能整体地横向或者是纵向扩展。

你的容器化单体也可能需要在不同的交付阶段(例如开发、测试和生产)进行不同的配置,这意味着你将无法享受到容器在一致性配置方面带来的好处,例如由于配置错误导致的故障几率会降低。

最糟糕的是,你最终也许不得不把安全配置数据(例如访问凭证)拷贝到你的单体容器映像中,这无形中增加了敏感信息落入坏人之手的风险。

底线是,虽然从技术上讲没有什么能够阻止你在Kubernetes以容器的形式运行单体应用,但这么做绝对不是一个好主意。这是在Kubernetes上获取应用的一种方式,但客观上来说这是一种糟糕的方式。

最后,我要强调的是,我并不是反对Kubernetes。Kubernetes确实可以提供很多东西,特别是对于那些以离散微服务的方式运行的应用,这些应用可以在共享集群上运行良好,并且需要特殊的网络配置。

但对于其他应用来说,很可能存在一种替代性的部署解决方案,它的设置和管理都要比Kubernetes更简单,同时还能提供更高的性能、可扩展性和成本节约优势。在你仅仅因为其他人都这么做而加入Kubernetes潮流之前,重要的是退后一步,想想哪种部署策略最适合你特定的应用,而不是最流行的那种。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/250388.html<

(0)
运维的头像运维
上一篇2025-04-28 11:55
下一篇 2025-04-28 11:56

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注