在很多情况下,K8s 并不是正确的选择。例如:
- 拥有云原生应用程序的小型初创公司:这些团队会发现直接管理 Kubernetes 是一种复杂且耗时的工作,会分散他们发布和扩展产品目标的注意力。鉴于其规模,团队将没有足够的带宽来管理 Kubernetes 集群并同时开发应用程序。
- 具有多种应用程序类型的企业团队:对于具有专业技能的大型团队,Kubernetes 是一个绝佳的选择。但是,仍应考虑完全托管的容器运行时或 Kubernetes 作为服务产品。这些服务允许有限的 DevOps 资源专注于团队生产力、开发人员自助服务、成本管理和其他关键项目。
- 具有 DevOps 文化的中型公司:虽然这些团队为迁移到 Kubernetes 做好了更充分的准备,但这是一个会扰乱现有工作流程的重大项目。同样,托管产品无需大量投资即可释放 Kubernetes 的许多优势。
- 软件咨询公司:虽然这些团队适应性强,但依赖 Kubernetes 可能会限制他们为具有不同需求的客户提供服务的能力,因为它会促使咨询公司推荐它,即使它不是最合适的。
项目有多复杂?
- 最小的可扩展性需求:如果项目始终具有较低的流量或可预测且稳定的资源需求,而没有显着的扩展要求,则 Kubernetes 将引入不必要的开销。在这些情况下,托管容器运行时或虚拟专用服务器 (VPS) 解决方案通常代表更好的价值。
- 简单的单体应用程序:如果项目是一个依赖项有限的单体应用程序,并且不需要独立可扩展的服务或极高的实例数量,那么 Kubernetes 就太复杂了,无法满足其需求。
- 静态或有限的基础设施:如果项目具有小型或静态基础设施,资源使用情况没有太大变化,那么更简单的部署选项(例如托管服务或 VPS)就足够了。
- DevOps资源有限: Kubernetes需要容器编排方面的专业知识,这对于DevOps资源有限的项目或者团队不愿意投入学习Kubernetes的项目来说是不可行的。无需额外投资,仍然可以实现容器的优势。
- 原型和短期项目:对于开发生命周期短或生产持续时间有限的项目,Kubernetes 开销是不合理的。
- 项目成本限制:如果项目有严格的预算限制,那么设置和维护 Kubernetes 集群的额外成本将是不可行的。当考虑到完成这项工作所需的高技能团队成员的成本时尤其如此。
- 基础设施要求: Kubernetes 可能是资源密集型的,需要强大的基础设施才能有效运行。如果您的项目是小型或中型且资源要求适中,那么使用托管服务或无服务器更为合适。
成本影响是什么?
虽然 Kubernetes 本身是开源且免费的,但运行它却不是。您需要考虑与基础设施相关的费用,包括服务器、存储和网络的成本以及隐藏成本。
第一个隐性成本在于其管理和维护——花在培训团队、故障排除、维护系统、维护内部工作流程和自助服务基础设施上的时间和资源。
由于各种原因,在计算成熟的 Kubernetes 环境的成本时,许多人忽略了这项工作所需的高技能员工的工资。请警惕完全托管或无服务器产品与自我管理 Kubernetes 之间的许多有缺陷的比较。他们常常无法考虑到员工成本以及与 Kubernetes 时间损失相关的机会成本。
第二个隐性成本与 Kubernetes 生态系统相关。拥抱 Kubernetes 世界通常不仅仅意味着采用容器编排平台。这就像踏上一片广阔的大陆,这里功能丰富,并且有各种供应商提供的各种辅助工具、服务和产品,最终会带来其他成本。