注释

您可以使用 Kubernetes 注释将任意非识别元数据附加到 对象。工具和库等客户端可以检索此元数据。

将元数据附加到对象

您可以使用标签或注释将元数据附加到 Kubernetes 对象。标签可用于选择对象,并查找满足特定条件的对象集合。相比之下,注释不用于识别和选择对象。注释中的元数据可以是小数据或大数据,结构化或非结构化,并且可以包含标签不允许的字符。可以在同一对象的元数据中使用标签和注释。

注释与标签一样,是键值对映射

"metadata": {
  "annotations": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

以下是一些可能在注释中记录的信息示例

  • 由声明式配置层管理的字段。将这些字段作为注释附加,将它们与客户端或服务器设置的默认值、自动生成的字段以及自动调整大小或自动扩展系统设置的字段区分开来。

  • 构建、发布或镜像信息,例如时间戳、发布 ID、git 分支、PR 编号、镜像哈希和注册表地址。

  • 指向日志记录、监控、分析或审计存储库的指针。

  • 可用于调试目的的客户端库或工具信息:例如名称、版本和构建信息。

  • 用户或工具/系统来源信息,例如来自其他生态系统组件的相关对象的 URL。

  • 轻量级推出工具元数据:例如配置或检查点。

  • 负责人员的电话或寻呼机号码,或指定在何处可以找到这些信息的目录条目,例如团队网站。

  • 来自最终用户到实现的指令,以修改行为或使用非标准功能。

您无需使用注释,而可以在外部数据库或目录中存储此类信息,但这将使生成用于部署、管理、自省等的共享客户端库和工具变得更加困难。

语法和字符集

注释 是键值对。有效的注释键包含两个部分:可选的前缀和名称,用斜杠 (/) 分隔。名称部分是必需的,必须不超过 63 个字符,以字母数字字符 ([a-z0-9A-Z]) 开头和结尾,并在其间包含连字符 (-)、下划线 (_)、点 (.) 和字母数字字符。前缀是可选的。如果指定,前缀必须是 DNS 子域:用点 (.) 分隔的一系列 DNS 标签,总长度不超过 253 个字符,后跟斜杠 (/)。

如果省略前缀,则假定注释键对用户私有。自动系统组件(例如 kube-schedulerkube-controller-managerkube-apiserverkubectl 或其他第三方自动化)在向最终用户对象添加注释时,必须指定前缀。

kubernetes.io/k8s.io/ 前缀保留用于 Kubernetes 核心组件。

例如,以下是一个 Pod 的清单,它具有注释 imageregistry: https://hub.docker.com/

apiVersion: v1
kind: Pod
metadata:
  name: annotations-demo
  annotations:
    imageregistry: "https://hub.docker.com/"
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

下一步

上次修改时间:2023 年 10 月 3 日上午 8:25 PST:改进了标签和注释的说明 (#43178) (837991aaf5)