本頁說明如何使用 GKE 用量計算功能,瞭解 Google Kubernetes Engine (GKE) 標準叢集的使用率資料,並將使用率對應至您機構中的各個團隊或業務單位。GKE 用量計算功能不會對專案費用產生影響,而能讓您掌握更詳細的資源使用情形。
總覽
GKE 用量計算功能會追蹤資源要求的相關資訊,以及叢集工作負載的實際資源用量。目前,GKE 用量計算功能會追蹤 CPU、GPU、TPU、記憶體、儲存空間和網路輸出 (選用) 的相關資訊。您可以分別或同時使用 Kubernetes 命名空間和標籤來區別資源使用率。
資料會儲存在 BigQuery 中,您也可以使用 Looker Studio 等外部工具直接查詢資料或匯出資料進行分析。
GKE 用量計算功能的適用情境包括:
- 針對各用戶群在指定命名空間內運作的多用戶群叢集,追蹤每個用戶群的資源要求和實際資源用量。
- 為關聯工作負載的 Kubernetes 物件指派專屬標籤,判斷該工作負載在指定叢集內的資源用量。
- 識別資源要求與實際資源用量有明顯差異的工作負載,以便更有效地為每個工作負載分配資源。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
限制
您可以使用 BigQuery 的查詢範例及 Looker Studio 範本,將 GKE 用量計算資料及匯出至 BigQuery 的 Google Cloud 帳單資料相結合。這有助於估算叢集、命名空間和標籤的費用明細。
GKE 用量計算功能產生的資料純粹為建議性質,且不會影響您的 Google Cloud 費用。帳單資料一律以 Google Cloud 月結單為準。
限制如下:
- 特殊合約的折扣或抵免額不會納入計算。
- 在 GKE 範圍外建立的資源將不會以命名空間或標籤追蹤。
- 用量報表只會追蹤 Pod 和 PersistentVolumeClaim 物件的標籤。
- 系統僅支援動態佈建的 PersistentVolumes。
- 系統僅支援 pd-standard 和 pd-ssd 磁碟類型。GKE 用量計量可能包含同一 SKU 下兩種磁碟類型的區域版本費用。
- Looker Studio 不支援可突發的機器類型視覺化。
- 您只能將資料匯出至與叢集位於同一專案的 BigQuery 資料集。
- 請勿使用通訊埠 27304、47082 和 47083,因為這些通訊埠由網路輸出追蹤功能保留。
- 系統不支援自訂
StorageClass
物件。 - Windows Server 節點不支援網路輸出計量。
- 共用虛擬私有雲或虛擬私有雲網路對等互連不支援網路輸出流量用量計量。
- 如果叢集超過 150 個節點,則不支援網路輸出用量計量。
必要條件
如要使用 GKE 用量計算功能,必須符合以下先決條件:
- 如要追蹤實際資源用量,叢集必須使用 GKE 1.14.2-gke.3 以上版本。
- 如果您使用 E2 或 N2 機器類型,叢集版本必須為 GKE 1.15.11-gke.9 以上。
- 已啟用 BigQuery 帳單匯出功能。費用會與 BigQuery 使用量相關聯。
- 必須使用 250.0.0 以上版本的
gcloud
指令。請使用gcloud --version
進行檢查。 - 必須在 Google Cloud 專案中啟用 BigQuery API。但若是在 2018 年 7 月之後首次啟用 GKE,則 API 已啟用。
啟用 GKE 用量計算功能
如要啟用 GKE 用量計算服務,您必須先為單一叢集、專案中的多個叢集或整個專案建立 BigQuery 資料集。如要進一步瞭解如何選擇資料集與叢集間的對應關係,請參閱選擇一個或多個 BigQuery 資料集。
接著,在建立新叢集時啟用 GKE 用量計算功能,或是修改現有叢集。
您也可以選擇建立 Looker Studio 資訊主頁,以視覺化方式呈現叢集的資源用量。
建立 BigQuery 資料集
如要將 GKE 用量計算功能用於 Google Cloud 專案中的叢集,請先建立 BigQuery 資料集,再設定要使用的叢集。您可以使用一個 BigQuery 資料集來儲存同一專案中多個叢集的資源用量相關資訊。
詳情請參閱建立資料集。將資料集的 Default table expiration
設為 Never
,以使資料表不會過期。如果資料表到期,系統就會自動重新建立資料表 (做為空白資料表)。
為叢集啟用 GKE 用量計算功能
您可以使用 gcloud
指令或 Google Cloud 控制台,在新的或現有的叢集上啟用 GKE 用量計算功能。
啟用 GKE 用量計算功能時,系統也會預設啟用資源用量計算功能。如要在繼續追蹤資源要求的同時,選擇停用資源用量計算功能,請參閱本主題中有關使用 gcloud
指令啟用 GKE 用量計算功能的具體操作說明。
網路輸出計量功能預設為停用。如要啟用這項功能,請參閱本主題中「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明。
建立新叢集
您可以使用 gcloud CLI 或Google Cloud 控制台建立叢集。
gcloud
如要建立啟用 GKE 用量計算功能的叢集,請執行下列指令:
gcloud container clusters create CLUSTER_NAME \
--resource-usage-bigquery-dataset RESOURCE_USAGE_DATASET
更改下列內容:
CLUSTER_NAME
:GKE 叢集名稱。RESOURCE_USAGE_DATASET
:BigQuery 資料集的名稱。
資源用量計算功能預設為啟用。如要停用此功能而只要追蹤資源要求,請在上述指令中加上 --no-enable-resource-consumption-
metering
旗標。您還需要修改本主題其餘部分中的示例查詢,使其不會查詢資源用量。
如有需要,在叢集啟動時,會在 BigQuery 資料集中建立必要的資料表。
控制台
如要建立啟用 GKE 用量計算功能的叢集,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下「add_box Create」(建立)。
在導覽窗格的「Cluster」(叢集) 底下,按一下「Features」(功能)。
選取「Enable GKE usage metering」(啟用 GKE 用量計算功能)。
輸入 BigQuery 資料集的名稱。
選用:查看「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明後,可以選擇「Enable network egress metering」(啟用網路輸出計量功能)。
繼續設定叢集,然後按一下「Create」(建立)。
設定現有叢集
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 資料集中會建立一個資料表,如有需要可以使用。
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下要修改的叢集旁的more_vert「Actions」(動作),然後按一下edit「Edit」(編輯)。
在「Features」(功能) 下方,按一下「GKE usage metering」(GKE 用量計算功能) 旁的 edit「Edit」(編輯)。
選取「Enable GKE usage metering」(啟用 GKE 用量計算功能)。
輸入 BigQuery 資料集的名稱。
選用:查看「選用:啟用網路輸出計量功能」一節中的注意事項和操作說明後,可以選擇「Enable network egress metering」(啟用網路輸出計量功能)。
按一下「儲存變更」。
選用:啟用網路輸出計量功能
根據預設,系統不會收集或匯出網路輸出資料。測量網路輸出情形需在每個節點上執行網路計量代理程式 (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 用量計算部分,取消勾選「啟用網路輸出計量功能」。
確認已啟用 GKE 用量計算功能
如要確認叢集是否啟用 GKE 用量計算功能,以及哪一個 BigQuery 資料集儲存該叢集的資源用量資料,請執行下列指令:
gcloud container clusters describe CLUSTER_NAME \
--format="value(resourceUsageExportConfig)"
如果未啟用 GKE 用量計算功能,則輸出內容會空白一片,反之則顯示叢集使用的 BigQuery 資料集,如以下輸出範例所示:
bigqueryDestination={u'datasetId': u'test_usage_metering_dataset'}
選擇一或多個 BigQuery 資料集
資料集可以保存專案中一個或多個叢集的 GKE 用量計算資料,使用一個或是多個資料集,則視安全需求而定:
- 整個專案使用一個資料集,可簡化管理作業。
- 每個叢集使用一個資料集,可對資料集指派更為精細的存取權。
- 每個相關叢集群組使用一個資料集,可讓您依情況所需,在簡易性和精細度之間取得平衡。
使用 Looker Studio 資訊主頁,以視覺方式呈現 GKE 用量計算資料
您可使用 Looker Studio 資訊主頁,以視覺方式呈現 GKE 用量計算資料。您可以依叢集名稱、命名空間或標籤篩選資料。您也可以動態調整報表時間範圍。如果您熟悉 Looker Studio 和 BigQuery,可以建立自訂資訊主頁。您也可以直接複製我們專為 GKE 用量計算功能建立的資訊主頁。
您可以使用資訊主頁,以視覺方式呈現叢集上特定期間的資源要求和用量。
必要條件
啟用將帳單資料匯出至 BigQuery Google Cloud 的功能 (若此功能還未啟用)。
在這過程中將會建立一個資料集,但資料集中的資料表最多需要 5 個小時才會出現及開始填入資料。顯示的資料表名稱會是
gcp_billing_export_v1_BILLING_ACCOUNT_ID
。啟用 Looker Studio (若此功能還未啟用)。
收集以下資訊,您將需要使用這些資訊來設定資訊主頁:
- Cloud Billing 匯出資料集 ID 和資料表
- GKE 用量計算資料集 ID
確認您使用的是 BigQuery CLI 2.0.58 以上版本。 如要檢查版本,請執行
bq version
,並使用gcloud components update
更新 BigQuery CLI。本節中的指令應在 Linux 終端機或 Cloud Shell 中執行。
建立 BigQuery 費用明細資料表
下載下列任一查詢範本:
- 如果已啟用用量計算功能,請下載
this template
。 - 如果未啟用用量計算功能,請下載
this template
。
如果您使用 Cloud Shell,請將這個檔案複製到您執行下列指令的目錄。
- 如果已啟用用量計算功能,請下載
執行下列指令來設定環境變數:
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 CloudYOUR_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
。這個表格會做為 Looker Studio 的輸入內容。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
從範本算繪查詢:
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"
建立每 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 資料來源
- 在 Looker Studio 中,前往「資料來源」。
- 按一下「建立」add,然後按一下「資料來源」。
- 選取 [BigQuery]。
- 命名您的資料來源。在工具列中,點選「Untitled Data Source」,並用描述性名稱替換這段文字。
- 選取「自訂查詢」,然後選取專案 ID。
將下列查詢貼到查詢編輯器:
SELECT * FROM `USAGE_METERING_PROJECT_ID.USAGE_METERING_DATASET_ID.COST_BREAKDOWN_TABLE_ID`
按一下「連線」。
建立 Looker Studio 資訊主頁
- 將 GKE 用量計算資訊主頁複製到專案中。
- 依序按一下「更多選項」more_vert和「建立副本」 。
- 在「複製這份報表」對話方塊中,從「新的資料來源」清單選取您建立的資料來源。
- 按一下「複製報表」。
資訊主頁已建立完成,您可隨時在專案的Looker Studio 報表清單中存取此資訊主頁。
使用 Looker Studio 資訊主頁
資訊主頁包含多個報表:
- 用量詳細分析
- 這份報表包含所有將用量計算資料傳送到同一個 BigQuery 資料來源的叢集,整體叢集用量的占比。並依命名空間列出各資源類型 (例如 CPU、記憶體或網路輸出) 的詳細資訊。您可以將報告資料限制為一個或多個獨立的叢集或命名空間。
- 用量詳細分析 (未分配資源)
- 這份報表與用量明細報表類似,但會將未分配的資源按比例分散在所有命名空間中。未分配的資源包括閒置資源和 GKE 用量計算功能目前未分配給特定用戶群的任何資源。
- 成本趨勢 * 依命名空間細查
- 所有傳送用量計算資料到同一個 BigQuery 資料來源的叢集用量趨勢,依命名空間列出。您可以選取一或多個獨立的叢集、命名空間、資源或 SKU。
- 成本趨勢 * 依標籤細查
- 所有將用量計算資料傳送到同一 BigQuery 資料來源的叢集成本趨勢。您可選取一或多個獨立的叢集、資源、標籤名稱或標籤值。
- 按用量計算
- 所有將用量計算資料傳送到同一個 BigQuery 資料來源的叢集用量趨勢。您可以選取一或多個獨立的命名空間、標籤鍵或標籤值。至少要有一個叢集啟用了資源用量計算功能,系統才會填入這份報告。
您可以使用導覽選單變更頁面。以及使用日期選擇器更改頁面的時間範圍。如要與組織的成員共用報表或是撤銷成員的存取權,請按一下 person_add_alt「Share Report」。
將報表複製到專案後,您可以使用 Looker Studio 報表編輯器自訂其內容。即使 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 CloudUSAGE_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 |
資源用量的基本測量單位,例如標準儲存空間的基本單位為「位元組-秒」。 |
GKE 用量計算的單位應解讀如下:
CPU
usage.unit
是以秒為單位,代表 Pod 要求或使用的 CPU 總時間。舉例來說,假設有兩個 Pod,每個 Pod 要求 30 個 CPU,並執行 15 分鐘,則要求表中的匯總量為 54,000 秒 (2 個 Pod * 30 個 CPU * 15 分鐘 * 60 秒 / 分鐘)。記憶體
usage.unit
為位元組秒數,也就是 Pod 要求或使用的記憶體隨時間的積分。舉例來說,假設有兩個 Pod,每個 Pod 要求 30 GiB,且執行 15 分鐘,則要求表中的匯總量為 5.798+13 位元組秒 (2 個 Pod * 30 GiB * 15 分鐘 * 60 秒 / 分鐘 * 1073741824 位元組 / GiB)。
瞭解 GKE 用量計算資料寫入 BigQuery 的時間
在下列兩種情況下,GKE 用量計算功能會將用量記錄寫入 BigQuery 指標:
- Pod 階段會變更為
succeeded
或failed
,或在 Pod 遭到刪除時變更。 Pod 仍在執行中,但已達到每小時排程的記錄寫入時間戳記。
GKE 用量計算功能會產生每小時的排程,將所有目前執行的 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
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下要修改的叢集旁的more_vert「Actions」(動作),然後按一下edit「Edit」(編輯)。
在「Features」(功能) 下方,按一下「GKE usage metering」(GKE 用量計算功能) 旁的 edit「Edit」(編輯)。
取消勾選「Enable GKE usage metering」(啟用 GKE 用量計算功能)。
按一下 [儲存變更]。