瞭解叢集資源使用量

本頁說明如何使用 GKE 用量計算功能,以理解 GKE 叢集使用率資料,並將使用率對應至您機構中的各個團隊或業務單位。GKE 用量計算功能不會對專案費用產生影響,而能讓您掌握更詳細的資源使用情形。

總覽

GKE 用量計算功能會追蹤資源要求的相關資訊,以及叢集工作負載的實際資源用量。目前,GKE 用量計算功能會追蹤 CPU、GPU、TPU、記憶體、儲存空間和網路輸出 (選用) 的相關資訊。您可以分別或同時使用 Kubernetes 命名空間標籤來區別資源使用率。

資料會儲存在 BigQuery 中,您也可以使用 Google 數據分析等外部工具直接查詢資料或匯出資料進行分析。

GKE 用量計算功能的適用情境包括:

  • 針對各用戶群在指定命名空間內運作的多用戶群叢集,追蹤每個用戶群的資源要求和實際資源用量。
  • 為關聯工作負載的 Kubernetes 物件指派專屬標籤,判斷該工作負載在指定叢集內的資源用量。
  • 識別資源要求與實際資源用量有明顯差異的工作負載,以便更有效地為每個工作負載分配資源。

與初始 Beta 版不同的變更

自最初的 Beta 版發布以來,GKE 用量計算功能做了以下更動:

  • 除了資源要求之外,現在也會追蹤實際資源用量。系統會針對執行 v1.12.8-gke.8 以上版本、v1.13.6-gke.7 以上版本或 1.14.2-gke.8 以上版本的叢集追蹤資源用量。資源用量計算資料會儲存在 BigQuery 資料集的 gke_cluster_resource_consumption 資料表中。在之前,系統只會追蹤資源要求。
  • 現在系統會追蹤 TPU 要求 (而不是實際資源用量)。
  • 您現在可以使用自訂機器類型來追蹤節點上的資源要求和實際資源用量。
  • 您現在可以在 Google Cloud Platform Console 建立或更新叢集時啟用 GKE 用量計算功能。
  • 如果 BigQuery 資料集遭到刪除,現在的 GKE 用量計算功能會自動重新建立該資料集,歷史記錄會遺失。

升級

所有變更都與初始 Beta 版回溯相容,所以不需要修改或遷移資料。

當您將叢集升級為支援資源用量計算功能的 GKE 版本時,系統並不會自動啟用資源用量計算功能。您必須使用 --enable-resource-consumption-metering 旗標予以明確啟用。系統會自動在 BigQuery 資料集中建立另一個資料表,兩個資料表會使用相同的結構定義

升級後,您只需要建立新的數據分析資訊主頁,即可新增實際資源用量的相關資訊。

限制

您可以使用 BigQuery 的查詢範例及 Google 數據分析範本,將 GKE 用量計算資料及匯出至 BigQuery 的 GCP 帳單資料相結合,依叢集、命名空間及標籤來估算成本。GKE 用量計算功能產生的資料純粹為建議性質,且不會影響您的 GCP 費用。帳單資料一律以 GCP 的月結單為準。

限制如下:

  • 特殊合約的折扣及減免都不會納入計算。
  • 在 GKE 範圍外建立的資源將不會以命名空間或標籤追蹤。

必備條件

如要使用 GKE 用量計算功能,必須符合以下先決條件:

  • 如要追蹤實際資源用量,叢集必須使用 GKE v1.11.10-gke.5 以上版本、v1.12.8-gke.8 以上版本、v1.13.6-gke.7 以上版本或 1.14.2-gke.3 以上版本。
  • 必須針對 BigQuery 啟用帳單匯出功能,費用會與 BigQuery 使用量相關聯。
  • 必須使用 250.0.0 以上版本的 gcloud 指令。請使用 gcloud --version 進行檢查。
  • 必須對您的 Google Cloud Platform 專案啟用 BigQuery API,但若是在 2018 年 7 月之後首次啟用 GKE,則此功能已啟用。

啟用 GKE 用量計算功能

如要啟用 GKE 用量計算服務,您必須先為單一叢集、專案中的多個叢集或整個專案建立 BigQuery 資料集。如要進一步瞭解如何選擇資料集與叢集間的對應關係,請參閱選擇一個或多個 BigQuery 資料集

接著,在建立新叢集時啟用 GKE 用量計算功能,或是修改現有叢集。

您也可以選擇建立 Google 數據分析資訊主頁,以視覺化方式呈現叢集的資源用量。

建立 BigQuery 資料集

如果要將 GKE 用量計算功能用於 Google Cloud Platform 專案中的叢集,請先建立 BigQuery 資料集,再設定要使用的叢集。您可以使用一個 BigQuery 資料集來儲存同一專案中多個叢集的資源用量相關資訊。

詳情請參閱建立資料集。將資料集的 Default table expiration 設為 Never,以使資料表不會過期。但在第二個 GKE 用量計算功能 Beta 版中,如果資料表到期,系統就會自動重新建立資料表 (做為空白資料表)。

為叢集啟用 GKE 用量計算功能

您可以使用 gcloud 指令或 GCP Console,在新的或現有的叢集上啟用 GKE 用量計算功能。

對於執行 GKE v1.12.8-gke.8 以上版本或 v1.13.6-gke.7 以上版本的叢集,根據預設,啟用 GKE 用量計算功能也將會啟用資源用量計算功能。如要在繼續追蹤資源要求的同時,選擇停用資源用量計算功能,請參閱本主題中有關使用 gcloud 指令啟用 GKE 用量計算功能的具體操作說明。

網路輸出計量功能預設為停用。如要啟用這項功能,請參閱本主題中「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明。

建立新叢集

gcloud

如要建立啟用 GKE 用量計算功能的叢集,請執行以下指令。

如要在貼上前先將您自己的值插入範例,請點選任意一個 highlighted 欄位並編輯該值。重新整理頁面以重設值。

gcloud container clusters create [CLUSTER-NAME] \
  --resource-usage-bigquery-dataset [RESOURCE-USAGE-DATASET]

執行 GKE v1.12.8-gke.8 以上版本或 v1.13.6-gke.7 以上版本的叢集預設會啟用資源用量計算功能。如要停用此功能而只要追蹤資源要求,請在上面的指令中加上 --no-enable-resource-consumption-metering 旗標。您還需要修改本主題其餘部分中的示例查詢,使其不會查詢資源用量。

如有需要,在叢集啟動時,會在 BigQuery 資料集中建立必要的資料表。

主控台

  1. 前往 GCP Console 的 Google Kubernetes Engine 選單。

    前往 Google Kubernetes Engine 選單

  2. 按一下 [Create cluster] (建立叢集)。

  3. 選擇 [Standard cluster] (標準叢集) 範本,或者根據工作負載選擇適用的範本

  4. 按一下 [Availability, networking, security, and additional features] (可用性、網路、安全性和其他功能)

  5. 選取 [Enable GKE usage metering] (啟用 GKE 用量計算功能)

  6. 輸入 BigQuery 資料集的名稱。

  7. 查看「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明後,可以選擇啟用「Enable network egress metering」(啟用網路輸出計量功能)

  8. 繼續設定叢集,然後按一下 [Save] (儲存)

設定現有叢集

gcloud

如要在現有叢集上啟用 GKE 用量計算功能,請執行以下指令。

如要在貼上前先將您自己的值插入範例,請點選任意一個 highlighted 欄位並編輯該值。重新整理頁面以重設值。

gcloud container clusters update [CLUSTER-NAME] \
  --resource-usage-bigquery-dataset [RESOURCE-USAGE-DATASET]"

執行 GKE v1.12.8-gke.8 以上版本或 v1.13.6-gke.7 以上版本的叢集預設會啟用資源用量計算功能。如要停用此功能而只要追蹤資源要求,請在上面的指令中加上 --no-enable-resource-consumption-metering 旗標。您還需要修改本主題其餘部分中的示例查詢,使其不會查詢資源用量。

您也可以調整 --resource-usage-bigquery-dataset 旗標的值,變更既有叢集用於儲存其用量計算資料的資料集。

叢集更新時,BigQuery 資料集中會建立一個資料表,如有需要可以使用。

主控台

  1. 前往 GCP Console 的 Google Kubernetes Engine 選單。

    前往 Google Kubernetes Engine 選單

  2. 找到您要修改的叢集,按一下 [Edit] (編輯) 按鈕,它看起來像隻鉛筆。

  3. 啟用「GKE usage metering」(GKE 用量計算功能)

  4. 輸入 BigQuery 資料集的名稱。

  5. 查看「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明後,可以選擇啟用「Enable network egress metering」(啟用網路輸出計量功能)

  6. 繼續設定叢集,然後按一下 [Save] (儲存)

選用:啟用網路輸出計量功能

根據預設,系統不會收集或匯出網路輸出資料。測量網路輸出情形需在每個節點上執行網路計量代理程式 (NMA)。NMA 會以特殊權限 Pod 的形式運作。這類代理程式會耗用節點中的部分資源 (例如 CPU、記憶體和磁碟空間),並在核心上啟用 nf_conntrack_acct sysctl 旗標,以便追蹤連線並進行計算。

如果您可以接受上述注意事項,則可啟用網路輸出追蹤功能來搭配 GKE 用量計算功能。如要啟用網路輸出追蹤功能,請在建立或更新叢集時加入 --enable-network-egress-metering 選項,或在 Google Cloud Platform Console 中啟用 GKE 用量計算功能時,選取 [Enable network egress metering] (啟用網路輸出計量功能)

檢查 GKE 用量計算功能是否已啟用

如要確認叢集是否啟用 GKE 用量計算功能,以及哪一個 BigQuery 資料集儲存該叢集的用量計算資料,請使用 gcloud container clusters describe 指令。在下列範例中:

如要在貼上前先將您自己的值插入範例,請點選任意一個 highlighted 欄位並編輯該值。重新整理頁面以重設值。

gcloud container clusters describe [CLUSTER-NAME]\
  --format="value(resourceUsageExportConfig)"

如果未啟用 GKE 用量計算功能,則輸出內容會空白一片,反之則顯示叢集使用的 BigQuery 資料集,如以下輸出所示:

bigqueryDestination={u'datasetId': u'test_usage_metering_dataset'}

停用 GKE 用量計算功能

gcloud

如要在叢集上停用 GKE 用量計算功能,請執行以下指令。

如要在貼上前先將您自己的值插入範例,請點選任意一個 highlighted 欄位並編輯該值。重新整理頁面以重設值。

gcloud container clusters update [CLUSTER-NAME] \
  --clear-resource-usage-bigquery-dataset

主控台

  1. 前往 GCP Console 的 Google Kubernetes Engine 選單。

    前往 Google Kubernetes Engine 選單

  2. 找到您要修改的叢集,按一下 [Edit] (編輯) 按鈕,它看起來像隻鉛筆。

  3. 停用 GKE 用量計算功能

  4. 按一下 [Save] (儲存)。

選擇一個或多個 BigQuery 資料集

資料集可以保存專案中一個或多個叢集的 GKE 用量計算資料,使用一個或是多個資料集,則視安全需求而定:

  • 整個專案使用一個資料集,可簡化管理作業。
  • 每個叢集使用一個資料集,可對資料集指派更為精細的存取權。
  • 每個關聯的叢集組使用一個資料集,可讓您依情況所需,在簡易性和精細度之間取得平衡。

使用數據分析資訊主頁,以視覺方式呈現 GKE 用量計算資料

您可使用數據分析資訊主頁將用量計算服務資料視覺化,使資料可依叢集名稱、命名空間或標籤進行篩選,並動態調整報表統計期。如果您是數據分析及 BigQuery 的進階使用者,那麼您可以建立完全自訂的資訊主頁;當然您也可以直接複製我們專為 GKE 用量計算功能建立的資訊主頁。

您可以使用資訊主頁,以視覺方式呈現叢集上特定期間的資源要求和用量。

必備條件

  1. 啟用將 Google Cloud Platform 帳單資料匯出到 BigQuery 的功能 (若此功能還未啟用)。在這過程中將會建立一個資料集,但資料集中的資料表最多需要 5 個小時才會出現及開始填入資料。顯示的資料表名稱會是 gcp_billing_export_v1_[BILLING_ACCOUNT_ID]
  2. 在專案中的至少一個叢集上啟用 GKE 用量計算功能。請記下您為 BigQuery 資料集選擇的名稱。
  3. 啟用數據分析 (若此功能還未啟用)。
  4. 收集以下資訊,您將需要使用這些資訊來設定資訊主頁

    • Cloud Billing 匯出資料集 ID 和資料表
    • GKE 用量計算資料集 ID

建立數據分析資訊主頁

建立資料來源和資訊主頁的過程已經簡化。滿足先決條件後,請使用自訂數據分析連接器自動建立資料來源和資訊主頁。

  1. 前往 GKE 用量計算數據分析連接器

    您也可以前往數據分析連接器資料庫並搜尋 GKE 用量計算功能,尋找連接器。

  2. 閱讀並接受提示,授予連接器所需的權限。

  3. 系統提示時,請提供專案 ID、Cloud Billing 匯出資料集 ID 和資料表,以及 GKE 用量計算資料集 ID。

  4. 啟用資源用量計算功能 (如果已為叢集啟用這個功能)。這個規則適用於多數使用者。

  5. 按一下 [Connect] (連線)。系統會建立新的資料來源,並使用 GKE Usage Metering 這個預設名稱。您也可以選擇按一下頁面標題中的名稱來重新命名。

  6. 按一下 [Create report] (建立報表),建立數據分析資訊主頁。

資訊主頁已建立,並在資訊主頁編輯器中開啟。如要查看和使用資訊主頁,請按一下 [View] (查看)

您隨時可以在專案的數據分析報表清單中存取資訊主頁。

使用數據分析資訊主頁

資訊主頁包含多個報表:

用量詳細分析
在所有會傳送用量計算資料到同一 BigQuery 資料來源的叢集中,整體叢集用量的占比,以及依命名空間列出各資源類型 (例如 CPU、記憶體或網路輸出) 的詳細資訊。您可以將報告資料限制為一個或多個獨立的叢集或命名空間。
用量詳細分析 (未分配資源)
這份報表與前一份報表類似,但會將未分配的資源按比例分散在所有命名空間中。未分配的資源包括閒置資源和 GKE 用量計算功能目前未分配給特定用戶群的任何資源。
成本趨勢 - 依命名空間細查
所有傳送用量計算資料到同一個 BigQuery 資料來源的叢集用量趨勢,依命名空間列出。您可選取一個或多個獨立的叢集、命名空間、資源或 SKU。
成本趨勢 - 依標籤細查
所有將用量計算資料傳送到同一 BigQuery 資料來源的叢集成本趨勢。您可選取一或多個獨立的叢集、資源、標籤名稱或標籤值。
按用量計算
所有將用量計算資料傳送到同一個 BigQuery 資料來源的叢集用量趨勢。您可選取一或多個獨立的命名空間、標籤鍵或標籤值。至少要有一個叢集啟用了資源用量計算功能,系統才會填入這份報告。

您可利用畫面左上方附近的箭頭翻頁,以及使用日期選擇器更改頁面的時間範圍。如要與組織的成員共用報表或是撤銷成員的存取權,請點選 [Share Report] (共用報表) 連結 (旁邊有個 + 號的人像)。

此動畫呈現了資訊主頁的每個畫面。

將報表複製到專案後,您可以使用數據分析報表編輯器自訂其內容。 即使 Google 提供的報表範本變更,您的副本也不受影響。

使用 BigQuery 探索 GKE 用量計算資料

如要使用 BigQuery 查看資源要求相關資料,請查詢相關 BigQuery 資料集中的 gke_cluster_resource_usage 資料表。

如要查看有關實際資源用量的資料,請查詢 gke_cluster_resource_usage_consumed 資料表。網路輸出用量資料會保留在 gke_cluster_resource_usage 中,因為對於與輸出有關的資源要求沒有概念。

如要進一步瞭解如何在 Cloud Bigtable 中進行查詢,請參閱執行查詢結構定義中的欄位是固定的,但日後可能會有更多欄位加入。

這些查詢都是簡單的範例,您可自訂查詢以找出所需的資料。

查詢資源要求

如要在貼上前先將您自己的值插入範例,請點選任意一個 highlighted 欄位並編輯該值。重新整理頁面以重設值。

SELECT
  cluster_name,
  labels,
  usage
FROM
  `[CLUSTER_GCP_PROJECT].[USAGE_METERING_DATASET].gke_cluster_resource_usage`
WHERE
  namespace="[NAMESPACE]"

查詢資源用量

SELECT
  cluster_name,
  labels,
  usage
FROM
  `[CLUSTER_GCP_PROJECT].[USAGE_METERING_DATASET].gke_cluster_resource_usage_consumed`
WHERE
  namespace="[NAMESPACE]"

更多範例

展開以下部分以參閱更為複雜的範例。

BigQuery 中的 GKE 用量計算結構定義

下表說明 BigQuery 資料集中 GKE 用量計算資料表的結構定義。如果您的叢集執行的 GKE 版本支援資源用量計算功能以及資源要求,就會使用相同的結構定義建立另一個資料表。

欄位 類型 說明
cluster_location STRING GKE 叢集所屬的 Compute Engine 區域或地區名稱。
cluster_name STRING GKE 叢集名稱。
namespace STRING 產生用量的 Kubernetes 命名空間。
resource_name STRING 資源名稱,例如「cpu」、「memory」及「storage」。
sku_id STRING 底層 GCP 雲端資源的 SKU ID。
start_time TIMESTAMP 開始使用時的 UNIX 時間戳記。
end_time TIMESTAMP 結束使用時的 UNIX 時間戳記。
fraction FLOAT 產生用量時所占用的雲端資源比例。僅由單一命名空間使用的特定雲端資源,此分數固定為 1.0。對於在多個命名空間之間共享的資源,此比例計算為請求的數量除以底層雲端資源的總容量。
cloud_resource_size INTEGER 底層 GCP 資源的大小。例如,n1-standard-2 執行個體上的 vCPU 大小為 2。
labels.key STRING 與該用量相關的 Kubernetes 標籤鍵。
labels.value STRING 與該用量相關的 Kubernetes 標籤值。
project.id STRING GKE 叢集所屬專案的 ID。
usage.amount FLOAT usage.unit 使用的數量。
usage.unit STRING 資源用量的基本測量單位,例如標準儲存空間的基本單位為「位元組-秒」

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件