
# 设置标签与注解
为了满足多维度的元数据管理需求，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)。例如，为2个工作负载（APP1和APP2）添加如下标签：
- APP1：release=alpha
- APP2：release=beta
当创建新工作负载APP3，配置调度策略时，设置"负载亲和"为"自定义亲和策略"，在"工作负载亲和性-必须满足"下添加调度策略，命名空间选择APP1所在空间、拓扑域选择"kubernetes.io/hostname"、标签名设置为release、操作符使用默认In、标签值设置为alpha，Kubernetes会尝试将该工作负载调度到APP1所在的节点，或其他满足条件的节点上，从而实现APP1和APP3的智能协同部署。更多信息，请参见[设置工作负载亲和/反亲和调度（podAffinity/podAntiAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0893.html)。
您可以通过控制台或YAML为Pod增加标签，具体如下：
- [控制台中添加标签]
- [YAML中添加标签]
在控制台创建或升级工作负载时，您可以在"高级配置 \> 标签与注解"中添加"Pod标签"，从而对Pod进行标识。创建工作负载时，系统会默认为Pod添加app为工作负载名称，version为v1的标签。
图1Pod标签   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002288282914.png "点击放大")
在创建或升级工作负载时，您可以在YAML文件的下列位置为Pod添加标签：
```
...
spec:
  selector:
    matchLabels:
      app: nginx
      version: v1
  template:
    metadata:
      labels:
        app: nginx
        version: v1
    spec:
      ...
```
#### Pod注解
CCE为Pod提供了一些高级功能，可以通过给YAML添加注解的方式实现，具体操作如下：
- [控制台添加注解]
- [YAML中添加注解]
在控制台创建或升级工作负载时，您可以在"高级配置 \> 标签与注解"中添加"Pod注解"，从而启用Pod的高级功能。
例如，将Pod设置为不采集容器标准输出，即将Pod注解设置为"kubernetes.AOM.log.stdout='\[\]'"，并单击"确认添加"。
图2将Pod设置为不采集容器标准输出   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002323033845.png "点击放大")
通过YAML创建或升级工作负载时，您可以通过"annotations"参数启用Pod的高级功能。
例如，您可以通过"annotations"将Pod设置为不采集容器标准输出。
```
...
spec:
  replicas: 1     # 实例数量
  selector:
    matchLabels:  # 选择器，用于选择带有特定标签的资源
      app: nginx  
  template:
    metadata:
      labels:     # 标签
        app: nginx
      annotations:
        kubernetes.AOM.log.stdout: '[]'
...
```
#### 常用的Pod注解
[表1]中给出了一些常用注解，您可以根据需求为Pod添加相关注解。
 表1Pod Annotations 
| 注解                                           | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                 | 默认值      |
|:---|:---|:---|
| kubernetes.AOM.log.stdout                    | 表示容器标准输出采集参数，不配置时默认将全部容器的标准输出上报至AOM，可配置采集指定容器或全部不采集。 示例： - 全部不采集： ``` kubernetes.AOM.log.stdout: '[]' ```   - 采集container-1和container-2容器： ``` kubernetes.AOM.log.stdout: '["container-1","container-2"]' ```    | -        |
| metrics.alpha.kubernetes.io/custom-endpoints | 表示AOM监控指标上报参数，可将指定指标上报至AOM服务。 具体使用请参见[使用AOM监控自定义指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0201.html)。                                                                                                                                                                                                                                                                                  | -        |
| prometheus.io/scrape                         | 表示Prometheus指标上报参数，值为true表示当前负载开启上报。 具体使用请参见[使用云原生监控插件监控自定义指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0373.html)。                                                                                                                                                                                                                                                                    | -        |
| prometheus.io/path                           | 表示Prometheus采集的url路径。 具体使用请参见[使用云原生监控插件监控自定义指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0373.html)。                                                                                                                                                                                                                                                                                      | /metrics |
| prometheus.io/port                           | 表示Prometheus采集的endpoint端口号。 具体使用请参见[使用云原生监控插件监控自定义指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0373.html)。                                                                                                                                                                                                                                                                              | -        |
| prometheus.io/scheme                         | 表示Prometheus采集协议，值可以填写http或https。 具体使用请参见[使用云原生监控插件监控自定义指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0373.html)。                                                                                                                                                                                                                                                                         | -        |
| kubernetes.io/ingress-bandwidth              | 表示Pod的入口带宽，用于控制进入Pod的数据传输速率，确保Pod具有处理外部请求的能力。 具体使用请参见[为Pod配置QoS](https://support.huaweicloud.com/usermanual-cce/cce_10_0382.html)。                                                                                                                                                                                                                                                                     | -        |
| kubernetes.io/egress-bandwidth               | 表示Pod的出口带宽，用于控制Pod向外发送数据的速率，影响Pod与外部服务或用户之间的通信效率。 具体使用请参见[为Pod配置QoS](https://support.huaweicloud.com/usermanual-cce/cce_10_0382.html)。                                                                                                                                                                                                                                                                 | -        |
   
#### 相关文档
- 如果需要设置工作负载亲和/反亲和调度，请参见[设置工作负载亲和/反亲和调度（podAffinity/podAntiAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0893.html)
- 如果需要通过注解为Pod配置EIP，请参见[在CCE Turbo集群中为Pod配置EIP](https://support.huaweicloud.com/usermanual-cce/cce_10_0734.html)。
 
