本页面介绍了如何使用 GKE 用量计量来了解 Google Kubernetes Engine (GKE) Standard 集群的用量概况,并将用量与您组织中的个别团队或业务部门联系起来。GKE 用量计量不会影响您项目的结算费用;而且能帮您精细地了解资源用量。
概览
GKE 用量计量会跟踪您的集群工作负载的资源请求以及实际资源用量的信息。目前,GKE 用量计量会跟踪有关 CPU、GPU、TPU、内存、存储的信息,还可以选择跟踪有关网络出站流量的信息。您可以使用 Kubernetes 命名空间、标签或两者的组合来区分资源用量。
数据会存储在 BigQuery 中,您可以使用 Looker 数据洞察等外部工具直接查询这些数据,或者将其导出进行分析。
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 对象的标签。
- 仅支持动态预配的 PersistentVolume。
- 仅支持 pd-standard 和 pd-ssd 磁盘类型。GKE 用量计量可能包含同一 SKU 下这两种磁盘类型的区域版本费用。
- Looker 数据洞察不支持具备爆发能力的机器类型的可视化。
- 您只能将数据导出到与您的集群位于同一项目中的 BigQuery 数据集。
- 您不能使用端口 27304、47082 和 47083,因为这些端口是为网络出站流量跟踪预留的。
- 不支持自定义
StorageClass
对象。 - Windows Server 节点不支持网络出站流量计量。
- 共享 VPC 或 VPC 网络对等互连不支持网络出站流量计量。
- 具有 150 个以上节点的集群不支持网络出站流量计量。
前提条件
在使用 GKE 用量计量功能之前,您必须满足以下前提条件:
- 如需跟踪实际资源消耗量,集群必须使用 GKE 1.14.2-gke.3 或更高版本。
- 如果您使用的是 E2 或 N2 机器类型,则集群版本必须为 GKE 1.15.11-gke.9 或更高版本。
- 已启用 BigQuery 账单导出功能。费用与 BigQuery 使用量相关联。
- 必须使用
gcloud
命令的 250.0.0 版或更高版本。请使用gcloud --version
标志核实版本。 - 您必须在 Google Cloud 项目中启用 BigQuery API。如果您是在 2018 年 7 月以后首次启用 GKE,则该 API 已经启用。
启用 GKE 用量计量
如需启用 GKE 用量计量功能,您首先需要为项目中的一个或多个集群或者整个项目创建 BigQuery 数据集。有关选择数据集与集群之间的映射的详细信息,请参阅选择一个或多个 BigQuery 数据集。
接下来,您可创建新集群或修改现有集群并启用 GKE 用量计量功能。
您还可以选择创建一个 Looker 数据洞察信息中心来直观呈现集群的资源使用情况。
创建 BigQuery 数据集
如需在 Google Cloud 项目中为集群使用 GKE 用量计量功能,您首先要创建 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 控制台中,前往创建一个 Kubernetes 集群页面。
在导航窗格的集群下,点击功能。
选择启用 GKE 用量计量。
输入 BigQuery 数据集的名称。
仔细参阅“可选:启用网络出站流量计量”中的注意事项和说明后,您可以酌情选择启用网络出站流量计量。
继续配置您的集群,然后点击创建。
配置现有集群
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 操作,然后点击 edit 修改。
在功能下,点击 GKE 用量计量旁边的 edit 修改。
选择启用 GKE 用量计量。
输入 BigQuery 数据集的名称。
仔细参阅“可选:启用网络出站流量计量”中的注意事项和说明后,您可以酌情选择启用网络出站流量计量。
点击保存更改。
可选:启用网络出站流量计量
默认情况下,系统不会收集或导出网络出站流量数据。测量网络出站流量需要在每个节点上运行网络计量代理 (NMA)。NMA 作为特权 Pod 运行,会占用节点上的一些资源(CPU、内存和磁盘空间),还会在内核上启用 nf_conntrack_acct sysctl 标志(用于连接跟踪流程核算)。
如果您可以接受以上注意事项,则您可以启用网络出站流量跟踪,并将其与 GKE 用量计量搭配使用。如需启用网络出站流量跟踪,请在创建或更新集群时添加 --enable-network-egress-metering
选项,或是在 Google Cloud 控制台中启用 GKE 用量计量时选择启用网络出站流量计量。
如需停用网络出站流量计量,请在使用命令行更新集群时添加 --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 数据洞察信息中心直观呈现 GKE 用量计量数据
您可以使用 Looker 数据洞察信息中心直观呈现 GKE 用量计量数据。这样,您就可以按集群名称、命名空间或标签过滤数据。您还可以动态调整报告期。如果您有 Looker 数据洞察和 BigQuery 的经验,可以创建自定义信息中心。您还可以克隆我们专门为 GKE 用量计量创建的信息中心。
您可以使用信息中心直观呈现您的集群随时间的资源请求量和消耗量。
前提条件
启用将 Google Cloud 结算数据导出到 BigQuery(如果尚未启用)。
在此过程中,您将创建一个数据集,但数据集中的表最多可能需要 5 小时才能显示并开始填充。在该表出现时,其名称为
gcp_billing_export_v1_BILLING_ACCOUNT_ID
。在项目中的至少一个集群上启用