注解

您可以使用 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 的清单,该 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:改进了对标签和注释的解释 (#43178) (837991aaf5)