本文来自Rancher Labs
关注我们,第一时间获取技术干货
计算Kubernetes成本的复杂性
采用Kubernetes和基于服务的架构可以为企业带来诸多好处,如团队可以更快地迁移以及应用程序可以更轻松地扩展等。但是这一转变也带来了一些复杂性,比如云成本的可见性。这是由于应用程序及其资源需求常常是动态变化的,并且团队共享核心资源而没有与工作负载挂钩的透明价格。此外,能够充分意识到Kubernetes所带来的优势的企业通常会将资源运行在不同类型的机器上,甚至会运行在多个云提供程序上。
在本文中,我们将了解在企业中为showback/chargeback项目实现成本监控的最佳实践和不同实现方式,以及如何授权用户对这些信息采取行动。我们首先会了解Kubecost,它提供了一种开源的方式来确保跨所有Kubernetes工作负载一致和准确的可见性。
让我们进一步了解最佳实践,以准确分配和监控Kubernetes的工作负载成本以及相关托管服务上的支出。
成本分配
精确分配资源成本是在Kubernetes环境中创建成本可见性和实现高效成本利用的首要步骤。
要正确进行这一步骤,你需要在工作负载层面通过单个容器进行成本分配。工作负载分配完成后,通过汇总不同的工作负载集合,成本可以正确地分配给各个团队、部门甚至个人开发者。在工作负载层面的成本分配框架如下所示:
让我们一点点拆解这个框架。
资源消耗的平均数量由Kubernetes scheduler进行计算或者由云提供程序提供,这取决于被测量的特定资源。我们建议根据request和usage的最大值来计算内存和CPU分配。这样就能够反映出由Kubernetes scheduler本身所预留的资源量。另一方面,诸如负载均衡器和持久卷等资源会严格基于由提供程序所提供的数量。
Kubernetes API可以直接计算出资源消耗的时间段。这由资源(如内存、CPU和GPU等)在Running状态所消耗的时间决定。要让数据对云chargeback来说足够精确,我们建议团队将这些数据与云提供程序提供的特定云资源(如节点)所花费的时间进行协调,保持一致。在之后的部分我们将对此进行更多介绍。
资源价格是通过观察环境中每种特定资源的成本来确定的。例如,us-east-1 AWS区域中m5.xlarge spot实例的CPU小时价格与同一实例的按需价格不同。
使用这一框架可以在各个工作负载之间适当分配成本,那么它们就可以通过任何Kubernetes概念(如命名空间、标签、注释或controller)轻松聚合。
Kubernetes成本监控
通过Kubernetes概念(如pod或controller)分配的成本,你可以开始准确地将支出映射到任何内部业务层级,如团队、产品、部门或成本中心。企业通常的做法是通过Kubernetes命名空间来划分团队工作负载,而其他的做法可能使用Kubernetes标签或注释来识别工作负载属于哪个团队。
在不同应用、团队等之间进行成本监控的另一个关键因素是确定谁应该为闲置的容量付费。具体而言是指仍在向企业计费但未使用的集群资源。通常情况下,这些费用要么计入中央基础设施成本中心,要么按比例分配给应用团队。将这些成本分配给负责供应决策的团队,通过调整激励措施来拥有一个高效规模的集群,从而产生积极的效果。
核对云账单
Kubernetes提供了大量实时数据。这让开发人员可以直接访问成本指标。尽管这些实时数据通常都是精确的,但它可能与云提供商的计费数据不完全一致。例如,在确定AWS spot节点的小时费率时,用户需要等待Spot数据源或成本和使用报告来确定准确的费率。出于计费和收费的目的,你应该将数据与实际账单进行核对。
通过Kubecost获得更好的可见性和治理
我们已经了解了如何观察数据以计算Kubernetes工作负载的成本。还有另一个方法是利用Kubecost,这是一个建立在开源基础上的成本和容量管理解决方案,提供了对整个Kubernetes环境的可见性。Kubecost为Kubernetes工作负载以及它们所消耗的相关管理服务(如S3或RDS)提供成本可见性和洞察力。该产品收集Kubernetes的实时数据,还能与你的云计费数据进行核对,以反映你支付的实际价格。
有了像Kubecost这样的解决方案,你可以授权应用工程师做出明智的实时决策,并开始实施即时和长期的实践,以优化和治理云支出。这包括在不影响性能的情况下采用成本优化的方案、实施Kubernetes预算和告警、showback/chargeback项目甚至基于成本的自动化。
Kubecost社区版可以免费使用,并且具有上述所有功能。你可以在Rancher应用商店中找到Kubecost Helm chart,轻松完成部署。借助Rancher,你可以获得Kubernetes集群可视化和绝佳控制力的体验,与此同时Kubecost为你提供了对支出和如何优化成本的直接观察。它们共同为使用Kubernetes的团队提供了一个完成的成本管理解决方案。