# 设置标签与注解
为了满足多维度的元数据管理需求，Kubernetes提供了[标签（Labels）](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)和[注解（Annotations）](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)两种元数据机制。它们都以键值对（key-value）的形式为资源附加元数据，但设计目的和使用场景有本质区别：
- 标签（Labels）：主要用于标识和分类Kubernetes对象，采用结构化键值对（如app=frontend）的形式，支持通过选择器高效筛选资源，并直接参与资源的调度与管理。标签的键值需遵循命名规范，且通常用于表示资源对象的持久性特征（如版本信息等）。
- 注解（Annotations）：主要用于扩展功能和存储附加元数据，支持更自由的数据格式（如JSON、多行文本等），但不参与资源的筛选或调度逻辑。
标签和注解适用于多种Kubernetes资源类型，本章节主要聚焦于它们在Pod上的应用。
#### Pod标签
Pod标签的核心作用是实现资源间的智能关联。为Pod设置标签后，Kubernetes中的其他资源可以通过标签选择器（Label Selector）精准识别和关联这些Pod。标签的键和值需遵循一定规范，具体请参见[Syntax and character set](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set)。
您可以通过控制台或YAML为Pod增加标签，具体如下：
- [控制台中添加Pod标签]
  在控制台创建或升级工作负载时，您可以在"高级配置 \> 标签与注解"中添加"Pod标签"，从而对Pod进行标识。创建工作负载时，系统会默认为Pod添加如下标签，其中app的值为工作负载名称。
  图1Pod标签   
  ![](https://support.huaweicloud.com/usermanual-cce-autopilot/zh-cn_image_0000002538628817.png "点击放大")
- [YAML中添加Pod标签]
  在创建或升级工作负载时，您可以在YAML文件的下列位置为Pod添加标签：
  ```
  ...
  spec:
    selector:
      matchLabels:
        app: nginx
        version: v1
    template:
      metadata:
        labels:
          app: nginx
          version: v1
      spec:
        ...
  ```
#### Pod注解
CCE为Pod提供了一些高级功能，可以通过控制台或YAML添加注解的方式实现，具体操作如下：
- [控制台添加Pod注解]
  在控制台创建或升级工作负载时，您可以通过"高级配置 \> 标签与注解"，添加"Pod注解"，从而启用Pod的高级功能。
  例如，为Pod增加14GiB的临时存储空间，可以将"Pod注解"设置为"resource.cce.io/extra-ephemeral-storage-in-GiB=14"，并单击"确认添加"。
  图2为Pod增加临时存储空间   
  ![](https://support.huaweicloud.com/usermanual-cce-autopilot/zh-cn_image_0000002506908966.png "点击放大")
  
- [YAML中添加Pod注解]
  通过YAML创建或升级工作负载时，您可以通过"annotations"参数启用Pod的高级功能。
  例如，您可以通过"annotations"为Pod增加14GiB的临时存储空间。
  ```
  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: nginx     # 工作负载名称
  spec:
    replicas: 1     # 实例数量
    selector:
      matchLabels:  # 选择器，用于选择带有特定标签的资源
        app: nginx  
    template:
      metadata:
        labels:     # 标签
          app: nginx
        annotations:
          resource.cce.io/extra-ephemeral-storage-in-GiB: '14'
      spec:
        containers:
        - image: nginx:latest   # 镜像名称：镜像版本
          name: nginx
        imagePullSecrets:
        - name: default-secret
  ```
  
 #### 常用的Pod注解
[表1]中给出了一些常用注解，您可以根据需求为Pod添加相关注解。
 表1Pod Annotation 
| 功能及相关文档                                                                                                                      | 参数                                             | 示例值                    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| [设置可用区亲和性](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0232.html)                                          | node.cce.io/node-az-list                         | cn-east-3a,cn-east-3b   | 表示Pod亲和的可用区列表。 可以通过设置工作负载注解实现可用区亲和，将Pod调度到指定的可用区。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| [增加Pod的临时存储容量](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0867.html)                                     | resource.cce.io/extra-ephemeral-storage-in-GiB | 14                    | 表示额外增加的Pod临时存储容量，单位GiB，取值范围：0-994。 每个Pod的实际临时存储容量=30GiB（默认免费提供的临时存储容量）+额外增加的临时存储容量。 说明： 1.28.6-r0和1.27.8-r0及以上版本的集群支持该功能。                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| [使用镜像缓存](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0159.html) （两个参数二选一即可） | imagecache.cce.io/specified-name               | autopilot-test         | 用于指定镜像缓存，请填写待使用镜像缓存的名称，且该镜像缓存必须为可用状态。指定镜像缓存后，containers参数中的镜像信息需与镜像缓存中的镜像信息一致。 如果填写的镜像缓存不存在，或者未在镜像缓存中找到需要的镜像，则不再使用镜像缓存，集群会按照containers中的镜像信息重新下载镜像。                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| [使用镜像缓存](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0159.html) （两个参数二选一即可） | imagecache.cce.io/auto-match                   | true                    | 表示是否开启自动匹配镜像缓存，取值范围如下： - true：表示开启镜像缓存。  - false：表示不开启镜像缓存，默认为不开启。   开启后，集群将从所有可用的镜像缓存中自动匹配最优镜像，并且匹配顺序如下： - 镜像匹配度：选择镜像信息匹配度最高的镜像缓存。  - 创建时间：选择创建时间最新的镜像缓存。   如果在镜像缓存中未匹配到镜像，则不再使用镜像缓存。不使用镜像缓存后，集群将在SWR镜像仓库、镜像中心依次匹配输入的镜像名称，若最终未匹配，则返回镜像拉取失败。 |
| [设置实例类型](https://support.huaweicloud.com/usermanual-cce-autopilot/cce_11_0908.html)                                          | resource.cce.io/instance-type                    | general-computing-lite | 用于指定Pod实例使用的实例类型，取值范围如下： - general-computing：通用型  - general-computing-lite： 通用型（轻享）   说明： 1.28.8-r0与1.31.4-r0及以上版本的集群支持该功能。                                                                                                                                                                                                                                                                                                                |
   
#### Pod资源标签
通过为Pod添加资源标签，可以对Pod资源进行自定义标记，实现Pod资源的分类。
- 仅v1.28.10、v1.31.10、v1.32.6及以上版本的集群支持配置Pod资源标签。
- 系统为Pod自动添加资源标签"CCE-Cluster-ID={集群ID}"、"CCE-Namespace={命名空间名称}"，不支持删除。
- 您可以通过控制台或YAML为Pod设置自定义的资源标签。最多可以添加15个自定义Pod资源标签。 您可以在TMS中创建"预定义标签"，预定义标签对所有支持标签功能的服务资源可见，通过使用预定义标签可以提升标签创建和迁移效率。具体请参见[创建预定义标签](https://support.huaweicloud.com/usermanual-tms/zh-cn_topic_0144368884.html)。
  - 标签键只能包含中文、英文字母、数字、空格和特殊字符(-_.:=+@)，长度不超过128个字符，不能以_sys_开头。资源标签键不可以为空。
  
  - 标签值只能包含中文，英文字母、数字、空格和特殊字符(-_.:/=+@)，长度不超过255个字符。资源标签值可以为空。
   
- [控制台中添加Pod资源标签]
  在控制台创建或升级工作负载时，您可以在"高级配置 \> 标签与注解"中添加"Pod资源标签"。
  ![](https://support.huaweicloud.com/usermanual-cce-autopilot/zh-cn_image_0000002487047256.png "点击放大")
- [YAML中添加Pod资源标签]
  在创建或升级工作负载时，您可以在YAML文件的下列位置为Pod添加资源标签：
  ```
  ...
  spec:
    template:
      metadata:
        annotations:
          resource.cce.io/instance-type: general-computing
          pod.cce.io/tags: >-
            {"CCE-Cluster-ID":"c0751ce4-c043-11f0-8f3b-0255ac101784","CCE-Namespace":"monitoring","cce-ap-key001":"cce-ap-value1"}
        ...
  ```
  
