在ACK叢集中,Pod作為最小的可部署單元,是衡量叢集成本的關鍵因素。但不同Pod可能有不同的資源配置、調度策略和生命週期,導致其成本估算較為複雜。ACK提供一種通用性的成本資料模型定義和計算方法,幫您準確地衡量雲上ACK叢集的成本,並將成本分攤給不同維度(叢集、命名空間、應用等)的業務單元。
相關概念
下表為本文涉及的概念及解釋。
概念 | 說明 |
叢集總成本 | 運行一個ACK叢集所需的全部成本。 |
叢集資產成本 | 叢集下所有雲資源賬單的總和。 |
叢集間接成本 | 管理ACK叢集所需的額外費用或間接開銷,例如叢集管理費用。 |
叢集分配成本 | 叢集中已指派的空間按比例分攤叢集資產成本時,分攤的成本數額。 |
叢集閑置成本 | 叢集中未被分配的空間按比例分攤叢集資產成本,分攤的成本數額。 |
Pod分攤成本 | 一個Pod在特定周期內分攤叢集資產成本的數額。 |
一個ACK叢集的總成本包括叢集資產成本和叢集間接成本:叢集總成本 = 叢集資產成本 + 叢集間接成本
。
叢集資產成本可以進一步區分為叢集分配成本和叢集閑置成本:叢集資產成本 = 叢集分配成本 + 叢集閑置成本
。
叢集分配成本由Pod成本分攤確定,表示叢集內所有Pod分攤的成本總和,是叢集資產成本中已被分配的部分:叢集分配成本 = Σ (叢集下Pod分攤成本)
關係如下圖所示。
成本資料模型
叢集資產成本
一個ACK叢集通常包含節點、負載平衡、磁碟等基礎雲資源,以及Prometheus、NAT Gateway等可選雲資源。叢集資產成本是叢集關聯雲資源的賬單總和。
叢集自動建立的雲資源:在ACK叢集中,可以通過叢集ID的唯一標籤(
ack.aliyun.com:<叢集ID>
)來拆分叢集關聯雲資源的全部賬單,在賬單累加後得到叢集的總資產成本。非叢集自動建立的雲資源:可以為這些雲資源手動添加叢集ID的資源標籤,使其納入叢集資產成本統計範圍。
Pod分攤成本
計算公式
Pod通常並不直接出賬,需要從叢集資產成本中按比例拆算Pod分攤的成本,從而準確彙總叢集不同維度業務賬單。因此,計算一個Pod的分攤成本時,核心是計算一個Pod在叢集中的成本佔比。
Pod分攤成本 = Pod成本佔比 * 叢集資產成本
Pod成本佔比是Pod類比成本在待分攤總成本的佔比。
Pod成本佔比 = Pod類比成本 / 待分攤總成本
Pod類比成本由Pod類比單價和時間長度決定。要計算一個Pod的類比單價,需要考慮Pod上各資源(例如CPU、記憶體、GPU)的分配量以及資源單價。
Pod類比成本 = Pod類比單價 * 時間長度
Pod類比單價 = Σ(資源單價 * 資源分派量 )
資源單價是決定Pod成本的核心因素,在不同情境可能存在多種單價定價方式。您可以直接從雲端服務商擷取(已知資源單價),也可以自訂資源單價(未知資源單價)進行內部成本會計。
樣本一:已知計算資源單價
例如,在常見的通過計算資源估算Pod成本的情境下,您可以參見以下公式完成Pod成本的分攤:
Pod成本佔比 = Pod類比成本 / Σ(叢集下Node成本)
Pod類比成本 = (CPU單價 * CPU分配量 + 記憶體單價 * 記憶體配置量 + GPU單價 * GPU分配量 )* 時間長度
樣本二:未知計算資源單價
對於未直接提供計算資源單價的情境(例如阿里雲ECS直接提供了節點總價格),需要使用權重分攤模型拆分計算。權重分攤的方式給模型自訂帶來更多靈活度。
Pod計算資源的單價 = 資源權重 * 節點單價 / 節點資源總量
Σ(資源權重) = 1
此時,資源權重是決定資源價值的核心因素。ACK預設使用資源調度水位來決定該資源在叢集中的“昂貴”程度,即根據資源調度水位的佔比確定資源的推薦權重。您也可以根據實際情況自訂權重數值。
命名空間、應用成本
參見前文完成Pod分攤成本的計算後,您可以通過彙總Pod分攤成本,進一步計算命名空間、應用(工作負載)的成本。
命名空間是一組具有相同欄位的Pod的彙總。
命名空間成本 = Σ(命名空間下Pod的分攤成本)
工作負載是命名空間下具有相同Label的Pod的彙總。
工作負載成本 = Σ(相同Label Pod的分攤成本)
相關文檔
您可以通過HTTP API命令查看上報資料,便於您基於成本資料進行二次開發,請參見通過API擷取成本資料概述。
您可以基於叢集調度水位估算Pod成本,包括單資源(CPU、記憶體)估算和權重混合(CPU-記憶體混合)的資源估算,請參見成本估算策略介紹。