注解
你可以使用 Kubernetes 注解将任意的非标识性元数据附着到对象上。工具和库等客户端可以检索这些元数据。
向对象附加元数据
你可以使用标签或注解将元数据附加到 Kubernetes 对象。标签可以用来选择对象,以及查找满足特定条件的对象集合。相比之下,注解不用于标识和选择对象。注解中的元数据可以是小的或大的,有结构的或无结构的,并且可以包含标签中不允许的字符。在同一对象的元数据中同时使用标签和注解是可能的。
注解和标签一样,都是键值对
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
注意
映射中的键和值必须是字符串。换句话说,键或值都不能使用数字、布尔值、列表或其他类型。以下是一些可以在注解中记录的信息示例
由声明式配置层管理的字段。将这些字段作为注解附加,可以将它们与客户端或服务器设置的默认值、以及由自动生成字段和自动伸缩系统设置的字段区分开来。
构建、发布或镜像信息,例如时间戳、发布 ID、Git 分支、PR 号、镜像哈希和 Registry 地址。
指向日志、监控、分析或审计仓库的指针。
可用于调试目的的客户端库或工具信息:例如,名称、版本和构建信息。
用户或工具/系统来源信息,例如来自其他生态系统组件的相关对象的 URL。
轻量级发布工具元数据:例如,配置或检查点(checkpoints)。
负责人的电话或寻呼机号码,或者指定在哪里可以找到该信息的目录项,例如团队网站。
最终用户向实现发出的指令,用于修改行为或启用非标准特性。
除了使用注解,你也可以将这类信息存储在外部数据库或目录中,但这会使得为部署、管理、内省等目的创建共享客户端库和工具变得困难得多。
语法和字符集
注解(Annotations) 是键值对。有效的注解键有两个部分:可选的前缀和名称,用斜杠 (/
) 分隔。名称部分是必需的,必须少于或等于 63 个字符,以字母数字字符 ([a-z0-9A-Z]
) 开头和结尾,中间可包含短划线 (-
)、下划线 (_
)、点 (.
) 和字母数字。前缀是可选的。如果指定,前缀必须是一个 DNS 子域名:一系列用点 (.
) 分隔的 DNS 标签,总长度不超过 253 个字符,后跟一个斜杠 (/
)。
如果省略前缀,则注解键被认为是用户的私有键。向最终用户对象添加注解的自动化系统组件(例如 kube-scheduler
、kube-controller-manager
、kube-apiserver
、kubectl
或其他第三方自动化)必须指定一个前缀。
kubernetes.io/
和 k8s.io/
前缀保留供 Kubernetes 核心组件使用。
例如,这是一个带有注解 imageregistry: https://hub.docker.com/
的 Pod 的清单
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
接下来
- 了解更多关于标签和选择器的信息。
- 查找熟知标签、注解和污点