博客 / 詳情

返回

KubeCost 可觀測最佳實踐

FinOps 背景需求

在典型的互聯網公司的成本組成中,IT 成本佔比並不低,技術成本與人力成本的比例差不多在 1:2 ~ 1:2.5 左右, 降低 IT 成本顯然能帶來立竿見影的效果。

近 10 年來雲計算、雲原生、容器、Kubernetes、DevOps 等技術的高速發展,使得 IT 成本的管理變得更加複雜,也給成本的管理帶來了更多的挑戰。目前大多數互聯網公司,都基於 Kubernetes 實現資源的統一管控,實現統一的大池子,基於此的統一調度、分配、混合雲等都是過去降本增效的重要手段。

但是,隨着成本治理的深入,用户會發現資源治理團隊的壓力會越來越大。因為資源獲取途徑的簡化,會導致資源使用方很容易的開出大量資源,導致資源成本快速上升或劇烈波動,並且這個過程在流程上缺乏管控。

在雲原生時代,隨着資源池化之後,成本默認歸屬到了技術中心部門,業務部門對成本沒有感知,同時缺乏有效的手段針將成本拆分到業務線,即典型的大賬問題 ,導致無法有效評估業務 ROI。

圖片

Kubecost 簡介

為了解決“大帳問題”,分大帳為細賬,Kubecost 成本計量工具應運而生。Kubecost 是一款專為 Kubernetes 環境設計的成本監控與優化工具,是開源工具 OpenCost 的商業化版本。通過提供詳盡的資源使用情況報告,幫助用户深入瞭解其 Kubernetes 集羣的運行成本。Kubecost 的核心價值在於它能夠為用户提供一個直觀且易於理解的界面,讓用户能夠輕鬆地追蹤和管理雲資源的成本。無論是對於初創企業還是大型組織,Kubecost 都能幫助它們實現更高效的資源利用和成本控制。

Kubecost 的設計理念是基於這樣的認識:隨着 Kubernetes 在現代雲原生架構中的廣泛應用,越來越多的企業開始面臨如何有效管理和優化雲成本的問題。Kubecost 通過集成多種雲服務提供商的數據,為用户提供了一個統一的視圖,使得成本管理變得更加簡單直接。此外,Kubecost 還支持自定義成本分配規則,這意味着用户可以根據自身業務需求靈活調整成本計算方式,進一步提升成本管理的精準度。

核心功能

Kubecost 提供了一系列強大的功能,旨在幫助用户更好地理解和控制 Kubernetes 環境下的雲成本。以下是 Kubecost 的幾個關鍵特性:

  • 成本可視化:Kubecost 通過圖表和儀表板的形式,為用户提供了一個清晰的成本概覽。用户可以查看不同時間範圍內的成本趨勢,以及按命名空間、工作負載等維度細分的成本詳情。
  • 成本預測:基於歷史數據,Kubecost 可以預測未來的成本趨勢,幫助用户提前規劃預算並做出相應的成本優化決策。
  • 成本分配:Kubecost 支持自定義成本分配規則,允許用户根據實際業務場景調整成本分攤方式,確保成本計算更加符合實際情況。
  • 成本優化建議:Kubecost 不僅提供成本數據,還會根據用户的使用情況給出具體的優化建議,比如推薦更適合的工作負載配置或資源利用率改進方案。
  • 多雲支持:Kubecost 支持多種雲服務提供商,包括 AWS、Azure 和 Google Cloud 等,使得用户可以在不同的雲環境中統一管理成本。

通過這些功能,Kubecost 成為了 Kubernetes 用户不可或缺的工具之一,幫助他們在享受雲原生技術帶來的便利的同時,也能夠有效地控制和優化成本。

  • 產品詳細介紹鏈接:https://docs.kubecost.com/
  • 開源項目地址:https://github.com/opencost/opencost/blob/develop/spec/opencost-specv01.md
  • FinOps資料:https://www.finops.org/introduction/what-is-finops/

觀測雲集成

觀測雲提供了集成 KubeCost 的能力,通過 ServiceMonitor 方式獲取。

前置條件

  • 安裝 K8S 環境
  • 安裝 KubeCost
  • 安裝 DataKit
  • 安裝 Prometheus Operator

CRD 配置

KubeCost 已暴露了指標,只需要讓 DataKit 能夠發現指標並上報。

  • 新增 kubecost-serverMonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: kubecost-metrics
  labels:
    app.kubernetes.io/name: cost-analyzer
  namespace: kubecost
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: cost-analyzer
  endpoints:
    - interval: 30s
      path: /metrics
      port: tcp-model
      params:
        measurement:
          - kubecost-cost-analyzer
  • 執行
kubectl apply -f kubecost-serverMonitor.yaml

DataKit 配置

如已開啓,請忽略。

  • 開啓 DataKit Service Monitor 自動發現

添加 env : ENV_INPUT_CONTAINER_ENABLE_AUTO_DISCOVERY_OF_PROMETHEUS_SERVICE_MONITORS

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: daemonset-datakit
  name: datakit
  namespace: datakit
spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
      - env:
        ...
        - name: ENV_INPUT_CONTAINER_ENABLE_AUTO_DISCOVERY_OF_PROMETHEUS_SERVICE_MONITORS
          value: "true"
        ...
  • 重啓 DataKit

場景視圖

登錄觀測雲控制枱,點擊「場景」 -「新建儀表板」,輸入 “KubeCost”, 選擇 “KUBECOST”監控視圖,點擊 “確定” 即可添加視圖。

圖片

圖片

關鍵指標

以下是 KubeCost 關鍵指標的描述信息。

Metric 描述
container_cpu_allocation container cpu 分配
container_gpu_allocation container gpu 分配
container_memory_allocation_bytes container 內存分配
pv_hourly_cost PersistentVolume 每小時成本
node_total_hourly_cost 節點每小時總成本
node_cpu_hourly_cost 節點 cpu 每小時成本
node_ram_hourly_cost 節點 ram 每小時成本
node_gpu_hourly_cost 節點 gpu 每小時成本

總結

觀測雲可以集成 KubeCost,獲取 KubeCost 的指標並基於相關指標定製成本使用的相關視圖,從而通過關注成本視圖採取一些列的成本控制與優化策略,為企業的 FinOps 建設賦能。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.