Kubernetes 是我的正确选择吗?

作者丨Rak Siva
编译丨Noe
如今,你几乎可以将任何应用程序封装在容器中以供执行 。容器解决了很多问题,但它们带来了新的编排挑战 。由于大量致力于构建云原生应用程序的团队对容器编排的需求不断增长,Kube.NETes 作为解决这一挑战的强大工具而广受欢迎 。
在管理良好的 Kubernetes 环境中构建提供了许多好处,例如自动缩放、自我修复、服务发现和负载平衡 。然而,拥抱 Kubernetes 的世界通常意味着不仅仅是采用容器编排技术 。团队需要战略性地考虑,“Kubernetes 是我的正确选择吗?”他们必须通过评估这个更广泛问题的几个组成部分来做到这一点 。
一、我的团队组成是否适合 Kubernetes?不乏赞扬 Kubernetes (K8s) 功能的文章,这不是我们要争论的 。在许多情况下,K8s 是正确的选择 。也就是说,与 K8s 的直接交互和维护并不适合所有团队和项目 。
1、拥有云原生应用程序的小型初创公司:这些团队会发现 Kubernetes 的直接管理是一种复杂、耗时的分散注意力,无法实现他们发布和扩展产品的目标 。鉴于他们的规模,团队将没有足够的带宽来管理 Kubernetes 集群,同时也开发他们的应用程序 。
2、具有各种应用程序类型的企业团队:对于具有专业技能的大型团队,Kubernetes 是一个很好的选择 。但是,仍应考虑完全托管的容器运行时或 Kubernetes 即服务产品 。这些服务允许有限的 DevOps 资源专注于团队生产力、开发人员自助服务、成本管理和其他关键项目 。
3、具有 DevOps 文化的中型公司:虽然这些团队为迁移到 Kubernetes 做好了更充分的准备,但这是一个重大项目,将破坏现有的工作流程 。同样,托管产品无需大量投资即可释放 Kubernetes 的许多好处 。
4、软件咨询:虽然这些团队适应性强,但依赖 Kubernetes 可能会限制他们为具有不同需求的客户提供服务的能力,因为它会促使咨询公司推荐它,即使它不是最合适的 。
二、我的项目有多复杂?K8s 矫枉过正吗?【Kubernetes 是我的正确选择吗?】与其确定 K8s 是否满足你的某些要求,不如考虑确定与 Kubernetes 功能不太一致或引入不必要的复杂性的特定特征和要求 。
1、最小的可扩展性需求:如果项目具有持续的低流量或可预测且稳定的资源需求,而没有显着的扩展要求,则 Kubernetes 将引入不必要的开销 。在这些情况下,托管容器运行时或虚拟专用服务器 (VPS) 解决方案通常代表更好的价值 。
2、简单的单片应用:如果项目是一个具有有限依赖项的整体应用程序,并且不需要独立可扩展的服务或极高的实例计数,那么 Kubernetes 对于其需求来说太复杂了 。
3、静态或有限的基础结构:如果项目具有小型或静态基础设施,而资源使用没有太大变化,那么更简单的部署选项(如托管服务或 VPS)就足够了 。
4、有限的开发运营资源:Kubernetes 需要容器编排方面的专业知识,这对于 DevOps 资源有限的项目或团队不愿意投资学习 Kubernetes 来说是不可行的 。无需这种额外投资,仍然可以实现容器的好处 。
5、原型设计和短期项目:对于开发生命周期较短或生产持续时间有限的项目,Kubernetes 开销是合理的 。
6、项目成本限制:如果项目有严格的预算限制,那么设置和维护 Kubernetes 集群的额外成本将不可行 。在考虑完成这项工作所需的高技能团队成员的成本时尤其如此 。
7、基础设施要求:Kubernetes 可能是资源密集型的,需要强大的基础设施才能有效运行 。如果你的项目是资源需求适中的中小型项目,则使用托管服务或无服务器更为合适 。
仅凭需求的复杂性并不能决定 Kubernetes 对你的团队来说是完美的还是过度的;但是,它可以帮助你以一种或另一种方式倾斜 。如果你直接使用 Kubernetes,它本质上不会提升你的产品 。相反,它的优势在于打造一个弹性平台,让你的产品可以在此平台上蓬勃发展 。

Kubernetes 是我的正确选择吗?

文章插图
其结果是,随着你承诺将自己的工作置于它之下,对产品的开发工作将进一步远离成为业务的基础 。
这揭示了一个真正的问题:我们是在构建一个平台,还是在努力加快上市时间,为我们的核心业务目标提供更直接的投资回报?
三、我们有必要的技能吗?Kubernetes 通常因其具有挑战性的学习之旅而得到认可 。是什么导致了这种复杂性?为了清楚起见,我根据特定标准策划了一份主题列表,以帮助衡量提高技能所需的努力 。


推荐阅读