更新时间:2025-07-18 GMT+08:00

设置标签与注解

为了满足多维度的元数据管理需求,Kubernetes提供了标签(Labels)注解(Annotations)两种元数据机制。它们都以键值对(key-value)的形式为资源附加元数据,但设计目的和使用场景有本质区别:

  • 标签(Labels):主要用于标识和分类Kubernetes对象,采用结构化键值对(如app=frontend)的形式,支持通过选择器高效筛选资源,并直接参与资源的调度与管理。标签的键值需遵循命名规范,且通常用于表示资源对象的持久性特征(如版本信息等)。
  • 注解(Annotations):主要用于扩展功能和存储附加元数据,支持更自由的数据格式(如JSON、多行文本等),但不参与资源的筛选或调度逻辑。

标签和注解适用于多种Kubernetes资源类型,本章节主要聚焦于它们在Pod上的应用。

Pod标签

Pod标签的核心作用是实现资源间的智能关联。为Pod设置标签后,Kubernetes中的其他资源可以通过标签选择器(Label Selector)精准识别和关联这些Pod。标签的键和值需遵循一定规范,具体请参见Syntax and character set。例如,为2个工作负载(APP1和APP2)添加如下标签:

  • APP1:release=alpha
  • APP2:release=beta

当创建新工作负载APP3,并设置其“负载亲和性”条件为release=alpha时,Kubernetes会尝试将该工作负载调度到APP1所在的节点,或其他满足条件的节点上,从而实现APP1和APP3的智能协同部署。更多信息,请参见设置工作负载亲和/反亲和调度(podAffinity/podAntiAffinity)

您可以通过控制台或YAML为Pod增加标签,具体如下:

在控制台创建或升级工作负载时,您可以在“高级配置 > 标签与注解”中添加“Pod标签”,从而对Pod进行标识。创建工作负载时,系统会默认为Pod添加如下标签,其中app的值为工作负载名称。

图1 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注解设置为“kubernetes.AOM.log.stdout='[]'”,并单击“确认添加”

图2 将Pod设置为不采集容器标准输出

通过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添加相关注解。

表1 Pod 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监控自定义指标

-

prometheus.io/scrape

表示Prometheus指标上报参数,值为true表示当前负载开启上报。

具体使用请参见使用云原生监控插件监控自定义指标

-

prometheus.io/path

表示Prometheus采集的url路径。

具体使用请参见使用云原生监控插件监控自定义指标

/metrics

prometheus.io/port

表示Prometheus采集的endpoint端口号。

具体使用请参见使用云原生监控插件监控自定义指标

-

prometheus.io/scheme

表示Prometheus采集协议,值可以填写http或https。

具体使用请参见使用云原生监控插件监控自定义指标

-

kubernetes.io/ingress-bandwidth

表示Pod的入口带宽,用于控制进入Pod的数据传输速率,确保Pod具有处理外部请求的能力。

具体使用请参见为Pod配置QoS

-

kubernetes.io/egress-bandwidth

表示Pod的出口带宽,用于控制Pod向外发送数据的速率,影响Pod与外部服务或用户之间的通信效率。

具体使用请参见为Pod配置QoS

-

相关文档