查看叢集資源用量

本頁說明如何使用 GKE 用量計算功能,瞭解 Google Kubernetes Engine (GKE) Standard 叢集的用量概況,並將用量與機構中的個別團隊或業務單位建立關聯。GKE 用量計算功能不會影響專案的計費方式,可讓您精細瞭解資源用量。

總覽

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

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

GKE 用量計算功能適用於下列情境:

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

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。

限制

您可以運用 BigQuery 查詢範例和數據分析範本,在 BigQuery 中彙整 GKE 用量計算資料和匯出的 Google Cloud 帳單資料。這項功能可估算叢集、命名空間和標籤的費用明細。

GKE 用量計量資料僅供參考,不會影響您的 Google Cloud 帳單。如要查看帳單資料,請以 Google Cloud 月結單為準。

限制如下:

  • 未計入特殊合約折扣或抵免額。
  • 在 GKE 範圍外建立的資源將不會以命名空間或標籤追蹤。
  • 用量報表只會追蹤 Pod 和 PersistentVolumeClaim 物件的標籤。
  • 系統僅支援動態佈建的 PersistentVolume。
  • 僅支援 pd-standard 和 pd-ssd 磁碟類型。GKE 用量計量可能包含同一 SKU 下兩種磁碟類型的區域版本費用。
  • 數據分析不支援可高載機型的視覺化。
  • 您只能將資料匯出至與叢集位於同一專案的 BigQuery 資料集。此外,來源資料和目的地資料集必須位於相同區域。詳情請參閱「資料位置和移轉作業」。
  • 請勿使用通訊埠 27304、47082 和 47083,因為這些通訊埠由網路輸出追蹤功能保留。
  • 系統不支援自訂 StorageClass 物件。
  • Windows Server 節點不支援網路輸出計量。
  • Shared VPC 或虛擬私有雲網路對等互連不支援網路輸出流量計量。
  • 如果叢集超過 150 個節點,系統就不會計算網路輸出量。

必要條件

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

  • 已啟用 BigQuery 帳單匯出功能。費用與 BigQuery 使用量相關。
  • 您必須使用 Google Cloud CLI 250.0.0 以上版本。請使用 gcloud --version 檢查。
  • 您必須在 Google Cloud 專案中啟用 BigQuery API。如果您是在 2018 年 7 月後首次啟用 GKE,API 應已啟用。

啟用 GKE 用量計算功能

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

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

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

建立 BigQuery 資料集

如要對 Google Cloud 專案中的叢集採用 GKE 用量計算功能,您必須先建立 BigQuery 資料集,接著設定叢集使用該資料集。您可以使用一個 BigQuery 資料集來儲存同一專案中多個叢集的資源用量相關資訊。

詳情請參閱建立資料集。將資料集的 Default table expiration 設為 Never,以使資料表不會過期。如果資料表到期,系統會自動重新建立空白資料表。

在叢集上啟用 GKE 用量計算功能

您可以使用 Google Cloud CLI 或 Google Cloud 控制台,在叢集上啟用 GKE 用量計量功能。

啟用 GKE 用量計算功能時,系統預設也會啟用資源消耗量計算功能。如要選擇性停用資源耗用量計量功能,同時繼續追蹤資源要求,請參閱本文中,使用 Google Cloud CLI 啟用 GKE 用量計量功能的具體操作說明。

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

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --resource-usage-bigquery-dataset RESOURCE_USAGE_DATASET

資源用量計算功能預設為啟用。如要停用這項功能,只追蹤資源要求,請在上述指令中新增 --no-enable-resource-consumption-metering 旗標。您也需要修改本主題其餘部分中的範例查詢,以免查詢資源消耗量。

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

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

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下要修改的叢集旁的「Actions」(動作),然後按一下「Edit」(編輯)。

  3. 在「Features」(功能) 下方,按一下「GKE usage metering」(GKE 用量計算功能) 旁的 「Edit」(編輯)。

  4. 選取「Enable GKE usage metering」(啟用 GKE 用量計算功能)。

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

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

  7. 按一下「儲存變更」。

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

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

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

如要停用網路輸出計量,請使用指令列更新叢集時,新增 --no-enable-network-egress-metering 旗標。或者,您也可以在Google Cloud 控制台的叢集 GKE 用量計算部分,取消勾選「Enable network egress metering」(啟用網路輸出計量)。

確認已啟用 GKE 用量計算功能

如要確認叢集是否已啟用 GKE 用量計算功能,並確認哪個 BigQuery 資料集儲存叢集的資源用量資料,請執行下列指令:

gcloud container clusters describe CLUSTER_NAME \
    --format="value(resourceUsageExportConfig)"

如果未啟用 GKE 用量計算功能,輸出內容會是空白。否則,輸出內容會顯示叢集使用的 BigQuery 資料集,如下列範例輸出內容所示:

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

選擇一或多個 BigQuery 資料集

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

  • 整個專案使用一個資料集,可簡化管理作業。
  • 每個叢集都有專屬資料集,方便您委派資料集的精細存取權。
  • 每個相關叢集群組都有專屬資料集,可讓您根據需求,找出適當的簡化程度和精細程度。

使用數據分析資訊主頁,以圖表呈現 GKE 用量計算資料

您可以使用數據分析資訊主頁,以圖表呈現 GKE 用量計算資料。您可以依叢集名稱、命名空間或標籤篩選資料。您也可以動態調整報表統計期。如果您有使用數據分析和 BigQuery 的經驗,可以建立自訂資訊主頁。您也可以複製我們專為 GKE 用量計算功能建立的資訊主頁。

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

必要條件

  1. 如果尚未啟用,請將帳單資料匯出至 BigQuery Google Cloud 。

    在此程序中,您會建立資料集,但資料集內的資料表最多可能需要 5 小時才會顯示並開始填入資料。表格顯示時,名稱為 gcp_billing_export_v1_BILLING_ACCOUNT_ID。

  2. 在專案中至少一個叢集上啟用 GKE 用量計算功能。請記下您為 BigQuery 資料集選擇的名稱。

  3. 如果尚未啟用數據分析,請先啟用。

  4. 請先收集下列資訊,以便設定資訊主頁:

    • Cloud Billing 匯出資料集 ID 和資料表
    • GKE 用量計算資料集 ID
  5. 請確認您使用的是 BigQuery CLI 2.0.58 以上版本。 如要檢查版本,請執行 bq version,並使用 gcloud components update 更新 BigQuery CLI。

  6. 本節中的指令應在 Linux 終端機或 Cloud Shell 中執行。

建立 BigQuery 費用明細資料表

  1. 下載下列任一查詢範本:

    如果您使用 Cloud Shell,請將這個檔案複製到執行下列指令的目錄。

  2. 執行下列指令來設定環境變數:

    export GCP_BILLING_EXPORT_TABLE_FULL_PATH=YOUR_BILLING_EXPORT_TABLE_PATH
    export USAGE_METERING_PROJECT_ID=YOUR_USAGE_METERING_PROJECT_ID
    export USAGE_METERING_DATASET_ID=YOUR_USAGE_METERING_DATASET_ID
    export USAGE_METERING_START_DATE=YOUR_USAGE_METERING_START_DATE
    export COST_BREAKDOWN_TABLE_ID=YOUR_COST_BREAKDOWN_TABLE_ID
    export USAGE_METERING_QUERY_TEMPLATE=YOUR_TEMPLATE_PATH
    export USAGE_METERING_QUERY=YOUR_RENDERED_QUERY_PATH
    

    更改下列內容:

    • YOUR_BILLING_EXPORT_TABLE_PATH:產生的帳單匯出資料表路徑。這個資料表的名稱與 PROJECT_ID.DATASET_ID.gcp_billing_export_v1_xxxx 相似。
    • YOUR_USAGE_METERING_PROJECT_ID:Google Cloud 專案的名稱。
    • YOUR_USAGE_METERING_DATASET_ID:您在 BigQuery 中建立的資料集名稱,例如 all_billing_data。
    • YOUR_USAGE_METERING_START_DATE:查詢的開始日期,格式為 YYYY-MM-DD。
    • YOUR_COST_BREAKDOWN_TABLE_ID:您選擇的新資料表名稱,例如 usage_metering_cost_breakdown。這個表格會做為數據分析的輸入內容。
    • YOUR_TEMPLATE_PATH:您下載的查詢範本名稱,可以是 usage_metering_query_template_request_and_consumption.sql 或 usage_metering_query_template_request_only.sql。
    • YOUR_RENDERED_QUERY_PATH:所選轉譯查詢的路徑名稱,例如 cost_breakdown_query.sql。

    舉例來說,環境變數可能如下所示:

    export GCP_BILLING_EXPORT_TABLE_FULL_PATH=my-billing-project.all_billing_data.gcp_billing_export_v1_xxxx
    export USAGE_METERING_PROJECT_ID=my-billing-project
    export USAGE_METERING_DATASET_ID=all_billing_data
    export USAGE_METERING_START_DATE=2022-05-01
    export COST_BREAKDOWN_TABLE_ID=usage_metering_cost_breakdown
    export USAGE_METERING_QUERY_TEMPLATE=usage_metering_query_template_request_only.sql
    export USAGE_METERING_QUERY=cost_breakdown_query.sql
    
  3. 從範本轉譯查詢:

    sed \
    -e "s/\${fullGCPBillingExportTableID}/$GCP_BILLING_EXPORT_TABLE_FULL_PATH/" \
    -e "s/\${projectID}/$USAGE_METERING_PROJECT_ID/" \
    -e "s/\${datasetID}/$USAGE_METERING_DATASET_ID/" \
    -e "s/\${startDate}/$USAGE_METERING_START_DATE/" \
    "$USAGE_METERING_QUERY_TEMPLATE" \
    > "$USAGE_METERING_QUERY"
    
  4. 建立每 24 小時更新一次的全新費用明細表:

    bq query \
    --project_id=$USAGE_METERING_PROJECT_ID \
    --use_legacy_sql=false \
    --destination_table=$USAGE_METERING_DATASET_ID.$COST_BREAKDOWN_TABLE_ID \
    --schedule='every 24 hours' \
    --display_name="GKE Usage Metering Cost Breakdown Scheduled Query" \
    --replace=true \
    "$(cat $USAGE_METERING_QUERY)"
    

    如要進一步瞭解如何排定查詢,請參閱「設定排定查詢」。

建立 BigQuery 資料來源

  1. 在數據分析中,前往「資料來源」。
  2. 按一下「建立」,然後按一下「資料來源」。
  3. 選取 [BigQuery]。
  4. 命名您的資料來源。在工具列中,按一下「未命名的資料來源」,然後將文字替換成說明性名稱。
  5. 選取「自訂查詢」,然後選取專案 ID。
  6. 將下列查詢貼到查詢編輯器:

    SELECT
      *
    FROM
      `USAGE_METERING_PROJECT_ID.USAGE_METERING_DATASET_ID.COST_BREAKDOWN_TABLE_ID`
    
  7. 點選「連線」。

建立數據分析資訊主頁

  1. 將 GKE 用量計算資訊主頁複製到專案中。
  2. 依序按一下「更多選項」圖示 和「建立副本」圖示 。
  3. 在「Copy this report」(複製這份報表) 對話方塊中,從「New data source」(新資料來源) 清單選取您建立的資料來源。
  4. 按一下「複製報表」。

資訊主頁已建立完成,您可隨時在專案的數據分析報表清單中存取此資訊主頁。

使用數據分析資訊主頁

資訊主頁包含多個報表:

用量詳細分析
這份報表會顯示所有叢集的整體叢集用量比率,這些叢集會將用量計算資料傳送至相同的 BigQuery 資料來源。此外,還會提供資源類型 (例如 CPU、記憶體或網路輸出) 的詳細資訊 (依命名空間)。您可以將報表資料限制為一或多個個別叢集或命名空間。
未分配資源的用量明細
這份報表與使用量明細報表類似,但會將未分配的資源按比例分配給所有命名空間。未分配的資源包括閒置資源,以及 GKE 用量計算功能未分配給特定租戶的任何資源。
費用趨勢 * 依命名空間向下鑽取
依命名空間,將使用量計量資料傳送至相同 BigQuery 資料來源的所有叢集使用趨勢。您可以選取一或多個叢集、命名空間、資源或 SKU。
費用趨勢 * 依標籤下鑽
所有將用量計算資料傳送到同一 BigQuery 資料來源的叢集成本趨勢。您可選取一或多個獨立的叢集、資源、標籤名稱或標籤值。
按用量計算
所有將用量計算資料傳送到同一個 BigQuery 資料來源的叢集用量趨勢。您可以選取一或多個個別命名空間、標籤鍵或標籤值。至少要有一個叢集啟用了資源用量計算功能,系統才會填入這份報告。

你可以使用導覽選單變更頁面。您可以使用日期挑選器變更頁面的時間範圍。如要與貴組織成員分享報告,或撤銷存取權,請按一下「 Share Report」(分享報告)。

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

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

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

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

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

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

查詢資源要求

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_consumption'
WHERE
  namespace="NAMESPACE"

更改下列內容:

  • CLUSTER_GCP_PROJECT: Google Cloud專案名稱,該專案含有您要查詢的叢集。
  • USAGE_METERING_DATASET:用量計量表的名稱。
  • 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 基礎 Google Cloud 雲端資源的 SKU ID。
start_time TIMESTAMP 開始使用時的 UNIX 時間戳記。
end_time TIMESTAMP 結束使用時的 UNIX 時間戳記。
fraction FLOAT 產生用量時所占用的雲端資源比例。僅由單一命名空間使用的特定雲端資源,此分數固定為 1.0。對於在多個命名空間之間共享的資源,此比例計算為請求的數量除以底層雲端資源的總容量。
cloud_resource_size INTEGER 基礎 Google Cloud 資源的大小。例如,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 資源用量的基本測量單位,舉例來說,Standard Storage 的基本單位是「位元組秒」。

GKE 用量計量功能的單位必須以下列方式解讀:

  1. CPU usage.unit 的單位是秒,代表 Pod 要求或使用的 CPU 作業時間總計。舉例來說,假設有兩個 Pod,每個 Pod 要求 30 個 CPU,並執行 15 分鐘,則要求表中的匯總量為 54,000 秒 (2 個 Pod * 30 個 CPU * 15 分鐘 * 60 秒 / 分鐘)。

  2. 記憶體 usage.unit 是位元組秒,也就是 Pod 要求或使用的記憶體在一段時間內的積分。舉例來說,假設有兩個 Pod,每個 Pod 要求 30 GiB,且執行 15 分鐘,則要求資料表的匯總量為 5.798+13 位元組秒 (2 個 Pod * 30 GiB * 15 分鐘 * 60 秒 / 分鐘 * 1073741824 位元組 / GiB)。

瞭解 GKE 使用量計量資料何時會寫入 BigQuery

GKE 用量計算功能將用量記錄寫入 BigQuery 指標時,有以下兩種情況:

  1. Pod 階段變更為 succeeded 或 failed,或 Pod 遭到刪除。
  2. Pod 仍在執行中,但已達到每小時寫入記錄的時間戳記。

    GKE 用量計算功能會產生每小時的排程,將所有執行中 Pod 的 Pod 用量記錄寫入 BigQuery。所有叢集的時間表時間戳記不盡相同。

    如果該時間戳記有多個 Pod 正在執行,您會看到多筆具有相同 end_time 的用量記錄。這些使用記錄會end_time指出每小時時間表的時間戳記。

    此外,如果您有多個 Pod 已執行數小時,也會有一組使用記錄,其 end_time 與另一組使用記錄的 start_time 相符。

停用 GKE 用量計算功能

gcloud

如要停用叢集的 GKE 用量計算功能,請執行下列指令:

gcloud container clusters update CLUSTER_NAME \
    --clear-resource-usage-bigquery-dataset

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下要修改的叢集旁的「Actions」(動作),然後按一下「Edit」(編輯)。

  3. 在「Features」(功能) 下方,按一下「GKE usage metering」(GKE 用量計算功能) 旁的 「Edit」(編輯)。

  4. 取消勾選「Enable GKE usage metering」(啟用 GKE 用量計算功能)。

  5. 按一下 [儲存變更]。

後續步驟