全部產品
Search
文件中心

:自訂成本會計的策略

更新時間:Jan 26, 2025

除預設的成本分攤策略外,成本套件功能還支援自訂成本會計策略。如果您對雲上資源成本分攤的要求較高,需要定製分賬商務邏輯,您可以編寫設定檔自訂資源價格,從而更貼合您的分賬商務邏輯。

說明

本功能目前處於灰階中。如需使用,請提交工單申請。

使用情境

自訂成本會計能夠協助您更精細化地進行企業IT成本治理。其典型使用情境如下。

  • 企業內部營運團隊批量購買了底層計算資源,然後以轉售的形式分發給不同的業務團隊。

  • 對於部分企業來說,同規格Pod調度到不同規格節點時將產生費用偏差,希望在業務維度屏蔽資源動態性帶來的成本差異。

  • 對於企業的不同業務部門,將相同資源請求量的Pod按不同超賣比例部署於同一台計算節點,要實現部門間差異化的成本會計,需要在計算Pod單價時考慮資源Limit的因素。

為解決上述情境下企業成本會計時的資料定製需求,成本套件提供自訂價格模板功能,您可以通過編輯模板配置Pod的各資源單價,即可彙總出Pod的定價成本。

說明

目前Pod定價成本僅支援以API的形式透出,開啟並完成定價配置後,您可以通過API響應的customCost欄位擷取Pod的定價成本。API的使用方式,請參見通過API擷取成本資料概述

前提條件

步驟一:開啟cost-exporter自訂價格開關

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 在頁面上方,切換命名空間為kube-system,在Deployment列表的操作列,單擊ack-cost-exporter對應的更多>查看Yaml,在command中增加'--enable-custom-price=true',開啟自訂價格功能,然後單擊更新image

步驟二:配置定價模板

操作步驟

  1. 使用以下範例程式碼,建立名為price-template.yaml的檔案。

    重要
    • 模板中spec欄位下的欄位均為可選。如果spec下已配置的所有欄位都符合Pod元資訊,則判定Pod與該模板匹配。spec為空白的模板可以匹配所有Pod。

    • 匹配定價模板時為順序匹配,即當多個模板和Pod同時匹配時,系統會根據模板YAML自上而下地選定第一個匹配到的模板,用於給Pod定價。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: price-template
      namespace: kube-system
    data:
      template.yaml: |
        - name: template-nginx
          spec:
            labelSelector:
              app: nginx
            namespaceSelector:
              - default
              - kube-system
            resource:
              cpu: 500m
              memory: 512Mi
              cpu-overcommit-ratio: 2
              memory-overcommit-ratio: 2
          price:
            cpu: 0.2
            memory: 0.03
        - name: template-default
          price:
            cpu: 0.1
            memory: 0.02

    此定價模板表示:

    • 對於叢集中同時符合以下條件的Pod,使用名為template-nginx的模板進行定價:

      • 標籤包含app:nginx

      • 命名空間為default或kube-system

      • CPU申請量為500 MB,限制量為1 Core

      • 記憶體申請量為512 MiB,限制量為1 GiB

    • 對於叢集中其他Pod,使用名為template-default的模板進行定價。

    相關參數解釋如下表所示:

    參數

    說明

    name

    定價模板的名稱。

    spec.labelSelector

    待匹配的Pod標籤集合,Pod任一標籤存在該集合中即認為匹配。

    spec.namespaceSelector

    待匹配的Pod命名空間列表。

    spec.resource.cpu

    Pod的CPU申請量。

    spec.resource.memory

    Pod的記憶體申請量。

    spec.resource.cpu-overcommit-ratio

    Pod的CPU超賣比,即CPU限制量/CPU申請量。

    spec.resource.memory-overcommit-ratio

    Pod的記憶體超賣比,即記憶體限制量/記憶體申請量。

    spec.price.cpu

    Pod的CPU單價,單位為Core * Hour。

    spec.price.memory

    Pod的記憶體單價,單位為GiB * Hour。

  2. 執行以下命令,在kube-system命名空間下建立名為price-template的ConfigMap,以應用自訂的定價配置。

    kubectl apply -f price-template.yaml -n kube-system

相關文檔

  • 您可以基於叢集調度水位估算Pod成本,包括單資源(CPU、記憶體)估算和權重混合(CPU-記憶體混合)的資源估算,請參見成本估算策略介紹

  • 您可以通過HTTP API命令查看上報資料,便於您基於成本資料進行二次開發,請參見通過API擷取成本資料概述