创建和管理标签

您可以将用户标签应用于 Dataproc 集群和作业资源,以便对资源和相关操作进行分组,以便稍后进行过滤和列出。您可以在创建资源时(在创建集群或提交作业时)将标签与资源进行关联。一旦资源与标签进行关联,标签即会传播到对资源执行的操作(集群创建、更新、修补或删除;作业提交、更新、取消或删除),可让您通过标签过滤和列出集群、作业和操作。

您还可以向与集群资源(例如虚拟机实例和磁盘)关联的 Compute Engine 资源添加标签。

什么是标签?

标签是一种键值对,可分配给 Google Cloud Dataproc 集群和作业。它们可以帮助您按照所需的粒度大规模组织这些资源并管理费用。您可以将标签附加到各项资源,然后根据其标签对资源进行过滤。标签的相关信息会转发到结算系统,以便您按标签细分结算费用。使用内置的结算报告,您可以按资源标签对费用进行过滤和分组。您还可以使用标签查询结算数据导出

标签要求

应用于资源的标签必须符合以下要求:

  • 每个资源最多可以有 64 个标签。
  • 每个标签都必须采用键值对形式。
  • 键至少包含 1 个字符,最多包含 63 个字符,且不能为空。值可以为空,且最多包含 63 个字符。
  • 键和值只能包含小写字母、数字字符、下划线和短划线。所有字符必须使用 UTF-8 编码,允许使用国际字符。 键必须以小写字母或国际字符开头。
  • 标签的键部分在单个资源内必须是唯一的。不过,您可以将同一个键用于多个资源。

这些限制适用于每个标签的键和值,以及带有标签的各个 Google Cloud 资源。您可以对一个项目的所有资源应用任意数量的标签。

标签的常见用途

以下是标签的一些常见使用场景:

  • 团队或费用中心标签:根据团队或费用中心添加标签,以区分不同团队所拥有的 Dataproc 集群和作业(例如 team:researchteam:analytics)。这种标签可用于费用核算或预算。

  • 组件标签:例如 component:rediscomponent:frontendcomponent:ingestcomponent:dashboard

  • 环境或阶段标签:例如 environment:productionenvironment:test

  • 状态标签:例如 state:activestate:readytodeletestate:archive

  • 所有权标签:用于标识负责运营的团队,例如:team:shopping-cart

我们不建议创建大量唯一标签,例如为每个 API 调用的时间戳或个别值创建标签。这种方法的问题在于,当值经常变化或键导致目录杂乱时,很难有效地过滤和报告资源。

标签和标记

标签可用作资源可查询的注释,但不能用于设置政策的条件。通过对政策进行精细控制,标记提供了一种有条件地允许或拒绝政策的方法,具体取决于资源是否具有特定的标记。如需了解详情,请参阅标记概览

创建和使用 Dataproc 标签

gcloud 命令

您可以在创建或提交时使用 Google Cloud CLI 指定要应用于 Dataproc 集群或作业的一个或多个标签。

gcloud dataproc clusters create args --labels environment=production,customer=acme
gcloud dataproc jobs submit args --labels environment=production,customer=acme

创建 Dataproc 集群或作业后,您可以使用 Google Cloud CLI 更新与相应资源关联的标签。

gcloud dataproc clusters update args --update-labels environment=production,customer=acme
gcloud dataproc jobs update args --update-labels environment=production,customer=acme

同样,您可以使用 Google Cloud CLI 使用以下格式的过滤条件表达式按标签过滤 Dataproc 资源:labels.<key=value>

gcloud dataproc clusters list \
    --region=region \
    --filter="status.state=ACTIVE AND labels.environment=production"
gcloud dataproc jobs list \
    --region=region \
    --filter="status.state=ACTIVE AND labels.customer=acme"

如需详细了解如何编写过滤条件表达式,请参阅 clusters.listjobs.list Dataproc API 文档。

REST API

您可以通过 Dataproc REST API 将标签附加到 Dataproc 资源。您还可以使用 clusters.createjobs.submit API,在创建或提交集群或作业时将标签附加到集群或作业。创建资源后,可以使用 clusters.patchjobs.patch API 修改标签。以下是 cluster.create 请求的 JSON 正文,该请求可将 key1:value 标签附加到集群上。

{
  "clusterName":"cluster-1",
  "projectId":"my-project",
  "config":{
    "configBucket":"",
    "gceClusterConfig":{
      "networkUri":".../networks/default",
      "zoneUri":".../zones/us-central1-f"
    },
    "masterConfig":{
      "numInstances":1,
      "machineTypeUri":"..../machineTypes/n1-standard-4",
      "diskConfig":{
        "bootDiskSizeGb":500,
        "numLocalSsds":0
      }
    },
    "workerConfig":{
      "numInstances":2,
      "machineTypeUri":"...machineTypes/n1-standard-4",
      "diskConfig":{
        "bootDiskSizeGb":500,
        "numLocalSsds":0
      }
    }
  },
  "labels":{
    "key1":"value1"
  }
}

您可以使用 clusters.listjobs.list API 按照以下格式列出符合指定过滤条件的资源:labels.<key=value>

下面是一个示例 Dataproc API clusters.list HTTPS GET 请求,该请求指定了 key=value 标签过滤条件。调用者插入 projectregion、过滤条件 label-keylabel-value 以及 api-key。请注意,此示例请求被划分为两行以提高可读性。

GET https://dataproc.googleapis.com/v1/projects/project/regions/region/clusters?
filter=labels.label-key=label-value&key=api-key

如需详细了解如何编写过滤条件表达式,请参阅 clusters.listjobs.list Dataproc API 文档。

控制台

您可以使用 Google Cloud 控制台在创建或提交时指定要添加到 Dataproc 资源的一组标签。

  • 从 Dataproc 创建集群页面的“自定义集群”面板的“标签”部分中向集群添加标签。
  • 从 Dataproc 提交作业页面向作业添加标签。

创建 Dataproc 资源后,您可以更新与该资源关联的标签。要更新标签,您必须先点击页面左上角的 SHOW INFO PANEL。下面是 Dataproc→列出集群页面的一个示例。

显示信息面板后,您可以更新 Dataproc 资源的标签。以下示例展示了如何更新 Dataproc 集群标签。

您也可以在一次操作中更新多个项目的标签。在此示例中,同时更新了多个 Dataproc 作业的标签。

通过使用标签,您可以过滤 Dataproc→列出集群Dataproc→列出作业页面中显示的 Dataproc 资源。在页面顶部,您可以使用搜索模式 labels.<labelname>=<value> 按标签过滤资源。

自动应用的标签

在创建或更新集群时,Dataproc 会自动将多个标签应用于集群和集群资源。例如,在创建集群时,Dataproc 会将标签应用于虚拟机、永久性磁盘和加速器。自动应用的标签具有特殊的 goog-dataproc 前缀。

以下 goog-dataproc 标签会自动应用于 Cloud Dataproc 资源。您在创建集群时为预留的 goog-dataproc 标签提供的任何值都会替换自动提供的值。因此,不建议为这些标签提供您自己的值。

标签 说明
goog-dataproc-cluster-name 用户指定的集群名称
goog-dataproc-cluster-uuid 唯一集群 ID
goog-dataproc-location Dataproc 区域集群端点

您可以通过多种方式使用这些自动应用的标签,方式包括:

后续步骤