使用开源工具监控 Kubernetes 云成本

OpenCost 是一款云成本监控工具,可与 Kubernetes 无缝集成,让您实时跟踪云支出,从而相应地优化您的资源。
2 位读者喜欢这篇文章。
A person holding on to clouds that look like balloons

Opensource.com

Kubernetes 是一个强大的平台,用于管理云中的动态容器化应用程序,但可能难以理解成本的产生位置。管理 Kubernetes 资源的成本效率可能是一个挑战。这就是 OpenCost 的用武之地。OpenCost 是一款云成本监控工具,可与 Kubernetes 无缝集成,让您实时跟踪云支出,从而相应地优化您的资源。

[ 另请阅读 如何衡量运行应用程序的成本 ]

OpenCost 是一个开源的 CNCF 沙箱项目,也是一个用于实时监控与 Kubernetes 部署相关的云成本的 规范。该规范按服务、部署、命名空间、标签等对当前和历史 Kubernetes 云支出和资源分配进行建模。这些数据对于从应用程序到基础设施层面理解和优化 Kubernetes 的成本和性能至关重要。

要求和安装

开始使用 OpenCost 的过程相对简单。OpenCost 使用 Prometheus 进行监控和指标存储。您可以从 Prometheus Community Kubernetes Helm Chart 安装它。

安装 Prometheus

首先使用以下命令安装 Prometheus

$ helm install my-prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \
 --namespace prometheus --create-namespace \
 --set pushgateway.enabled=false --set alertmanager.enabled=false -f \
https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml

安装 OpenCost

接下来,使用 kubectl 命令安装 OpenCost

$ kubectl apply --namespace opencost -f \
https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml

此命令将 OpenCost 部署到您的集群并开始收集数据。大多数安装只需要这样。您可以使用您自己的 Prometheus 安装,或者使用 OpenCost Helm Chart 自定义部署。

测试和访问

OpenCost 会自动检测它是否在 AWS、Azure 或 GCP 上运行,您可以配置它以提供本地 Kubernetes 部署的定价。首先转发端口以进行 API 和 UI 访问

$ kubectl port-forward --namespace opencost service/opencost 9003 9090

大约五分钟内,您可以验证 UI 和服务器正在运行,并且您可以访问 http://localhost:9090 上的 OpenCost UI。

监控成本

您已准备好开始使用部署到 Kubernetes 集群的 OpenCost 监控云成本。OpenCost 仪表板提供云支出的实时可见性,使您能够识别成本异常并优化云资源。您可以按节点、命名空间、Pod、标签等查看云支出。

OpenCost monitoring console

(Matthew Ray, CC BY-SA 4.0)

kubectl cost 插件为 Kubernetes 成本分配指标提供简单的 CLI 查询。它允许开发人员、运维人员和其他人员快速确定任何 Kubernetes 工作负载的成本和效率。

$ kubectl cost --service-port 9003 \
--service-name opencost --kubecost-namespace opencost \
--allocation-path /allocation/compute pod \
--window 5m --show-efficiency=true

+-------+---------+-------------+----------+---------------+
|CLUSTER|NAMESPACE|POD          |MONTH RATE|COST EFFICIENCY|
+-------+---------+-------------+----------+---------------+
|cl-one |kube-syst|coredns-db...| 1.486732 |      0.033660 |
|       |         |coredns-...dm| 1.486732 |      0.032272 |
|       |         |kube-prox...7| 1.359577 |      0.002200 |
|       |         |kube-prox...x| 1.359577 |      0.002470 |
|       |opencost |opencost...5t| 0.459713 |      0.187180 |
|       |kube-syst|aws-node-cbwl| 0.342340 |      0.134960 |
|       |         |aws-node-gbfh| 0.342340 |      0.133760 |
|       |prometheu|my-prome...pv| 0.000000 |      0.000000 |
|       |         |my-prome...hn| 0.000000 |      0.000000 |
|       |         |my-prome...89| 0.000000 |      0.000000 |
+-------+---------+-------------+----------+---------------+
| SUMMED|         |             | 6.837011 |               |
+-------+---------+-------------+----------+---------------+

您还可以集成 API,以编程方式将数据提取到您选择的平台中。

Kubernetes 优化策略

既然您已经掌握了云成本,现在是时候优化您的 Kubernetes 环境了。优化是一个迭代过程。从堆栈的顶部(容器)开始,逐步处理每一层。效率在每一步都会累积。有很多方法可以优化 Kubernetes 以提高成本效率,例如

  1. 查找废弃的工作负载和未声明的卷:不再使用或断开连接的 Pod 和存储继续消耗资源,但没有提供价值。
  2. 合理调整工作负载大小:确保您为工作负载使用合适大小的容器。调查过度分配和分配不足的容器。
  3. 自动扩缩:自动扩缩可以通过仅在需要时使用资源来帮助您节省成本。
  4. 合理调整集群大小:过多或过大的节点可能效率低下。在容量、可用性和性能之间找到合适的平衡点可以大大降低成本。
  5. 调查更便宜的节点类型:CPU、RAM、网络和存储方面存在很多差异。切换到 ARM 架构可能会带来更大的节省。
  6. 投资 FinOps 团队:组织内的专门团队可以寻找通过协调预留实例、竞价型实例和节省计划来解锁更大节省的方法。

立即开始

在 Kubernetes 环境中监控成本可能具有挑战性,但借助 OpenCost,情况并非如此。要开始使用 OpenCost 并控制您的云支出,请访问 OpenCost 网站,在 GitHub 获取代码,查看 OpenCost 文档,并参与 CNCF Slack 中的 #opencost 频道。

[ 相关阅读 如何确定云支出的优先级 ]

Matt Ray
Kubecost 的 OpenCost 社区经理。Software Defined Talk 播客的联合主持人。

评论已关闭。

© . All rights reserved.