通过Annotation自定义标签实现Pod费用分析

标签(Tag)是一种用于对资源进行分类和描述的元数据,通过键值对的形式为资源添加标签。您可以使用阿里云标签来分组管理ACS Pod实例,便于筛选和批量操作。本文介绍如何通过Kubernetes Pod Annotation为ACS Pod绑定阿里云自定义标签,以便后续基于标签进行费用分析。

背景信息

阿里云标签是一种灵活且可定制的资源标记方式,适用于标识和分类云资源。通过为云资源打上标签,您可以更方便地管理和组织云资源,实现分类管理云资源的功能。具体信息,请参见标签概述

通过阿里云容器计算服务ACS创建的Pod实例默认带有以下系统标签:

系统标签key

系统标签说明

acs:acc:cluster_id

集群ID

acs:acc:cluster_name

集群名称

acs:acc:compute_class

实例类型

acs:acc:zone

可用区

说明

目前ACS仅支持配置标签用于费用分析等相关功能。

配置说明

您可以通过alibabacloud.com/custom-tags的Annotation为ACS Pod绑定自定义标签,最多可以绑定5个标签。标签键和标签值之间用英文半角冒号隔开,多个标签之间用英文半角逗号隔开。

重要
  • Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec.template.metadata下。

  • 仅支持在创建ACS Pod时添加Pod相关Annotation来生效自定义标签功能,更新ACS Pod时,添加或者修改Pod相关Annotation均不会生效。

  • 键与值内容限定匹配正则表达式 "^[a-zA-Z0-9_.!@#%&*+=:;/<>~-]{1,128}$",并符合标签通用规范。关于标签的详细内容,请参见标签概述

  • :用作分隔符,无法作为键值内容。

  • 不符合键值对规范的内容会直接忽略。

配置示例

以下示例通过使用YAML创建Deployment的方式,演示如何为Deployment中的Pod配置自定义标签。

  1. 使用以下内容创建nginx.yaml。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/compute-class: general-purpose
            alibabacloud.com/compute-qos: default
          annotations:
            alibabacloud.com/custom-tags: "<tag_key1>:<tag_value1>,<tag_key2>:<tag_value2>"   #绑定自定义标签
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80

    上述YAML在annotations中添加了两个标签,分别为<tag_key1>:<tag_value1><tag_key2>:<tag_value2>。参考配置说明,您可以添加自定义标签的key和value。

  2. 执行以下命令,查看Pod详情。命令中<Pod name>需要替换为实际Pod名称,如nginx-789f4xxxxx-vnjxz

    kubectl describe pod <Pod name> | grep -A 10 Annotations

    预期输出:

    Annotations:      ProviderCreate: done
                      alibabacloud.com/client-token: edf29202-54ac-438e-9626-a1ca007xxxxx
                      alibabacloud.com/custom-tags: <tag_key1>:<tag_value1>,<tag_key2>:<tag_value2>
                      alibabacloud.com/instance-id: acs-2ze008giupcyaqbxxxxx
                      alibabacloud.com/pod-ephemeral-storage: 30Gi
                      alibabacloud.com/pod-use-spec: 0.25-0.5Gi
                      alibabacloud.com/request-id: A0EF3BF3-37E7-5A07-AC2D-68A0CFCxxxxx
                      alibabacloud.com/schedule-result: finished
                      alibabacloud.com/user-id: 14889995898xxxxx
                      kubernetes.io/pod-stream-port: 10250
                      kubernetes.io/preferred-scheduling-node: virtual-kubelet-cn-beijing-g/1

    可以看到,在Annotations中新增的alibabacloud.com/custom-tags已生效。

  3. 在费用与成本页面,查看标签是否生效。

    1. (可选)启用费用标签

      按照业务实际情况设置需要进行成本分析的维度,将标签设置为费用标签。

      1. 访问费用与成本费用标签页面。

      2. 费用标签页面,阅读费用标签说明,单击下一步

      3. 选择使用标签实现成本分摊管理中绑定的标签,将其指定为费用标签,单击下一步

      4. 单击确认启用

    2. 查看费用标签对应的云资源

      1. 访问费用与成本成本分析页面。

      2. 在右侧筛选条件区域,单击标签

      3. 选择您设置的标签<tag_key1>:<tag_value1>,<tag_key2>:<tag_value2>,查询费用支出情况。

      4. 单击应用筛选条件

      说明
      • 成本分析支持选择多个标签,多个标签之间是或的关系。

      • 云产品控制台新增的标签,T+1同步至费用标签列表。

      • 费用标签包含用户历史创建的全部标签,用户确认在无使用场景的情况下,可选择不启用。

相关文档

如果您有云资源分账的需求,可以使用标签进行费用分析。具体内容,请参见标签分账概述