广告

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

  • 浏览(200)
  • 评论(0)
  • 译者:k8s

Kubernetes是一个强大的平台,用于管理云中的动态容器化应用程序,但其成本很难控制。管理Kubernetes资源的成本效率是一个挑战。这就是OpenCost的用武之地。OpenCost是一种云成本监控工具,与Kubernetes无缝集成,允许实时跟踪云支出,从而相应地优化资源。

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

要求和安装

开始使用OpenCost是一个相对简单的过程。OpenCost将Prometheus用于监控和度量存储。你可以从Prometheus社区的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和服务器是否正在运行,并且可以访问OpenCost UI:http://localhost:9090。

监控成本

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

图片

OpenCost监控控制台

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 |               |
+——-+———+————-+———-+—————+

Kubernetes优化策略

你已经掌握了云成本,现在是时候优化Kubernetes环境了。优化是一个迭代过程。从堆栈(容器)的顶部开始,并遍历每一层。每一步的效率都是复合的。有许多方法可以优化Kubernetes以提高成本效益,例如:

——寻找废弃的工作负载和无人认领的卷:不再使用或断开连接的pod和存储继续消耗资源,却没有提供价值。

——适当大小的工作负载:确保使用的容器大小适合工作负载。调查分配过多和不足的容器。

——自动缩放:自动缩放可以帮助节省成本,只在需要时使用资源。

——适当调整集群大小:节点过多或过大可能会导致效率低下。在容量、可用性和性能之间找到适当的平衡可以大大降低成本。

——调查更便宜的节点类型:在CPU、RAM、网络和存储方面有很多变化。切换到ARM架构可能会带来更大的节约。

——投资FinOps团队:组织中的一个专门团队可以通过协调保留实例、现场实例和节约计划来寻找释放更多节约的方法。

立即开始

在Kubernetes环境中监控成本可能很有挑战性,但有了OpenCost,就简单多了。要开始使用OpenCost并控制云支出,请访问OpenCost网站,在GitHub中获取代码,查看OpenCost文档,并参与CNCF Slack中的#OpenCost频道。

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头