我们可以使用 Kubernetes 注解将任意非标识元数据附加到对象。工具和库之类的客户端可以检索该元数据。
将元数据附加到对象
我们可以使用标签或注解将元数据附加到 Kubernetes 对象。标签可用于选择对象并查找满足特定条件的对象的集合。相反,注解不用于标识和选择对象。注解中的元数据可小可大,结构化或非结构化,并且可以包含标签不允许的字符。
像标签一样的注解是键/值映射:
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
以下是一些可以记录在注释中的信息示例:
- 由声明式配置层管理的字段。将这些字段附加为注解可将其与客户端或服务器设置的默认值,自动生成的字段以及通过自动调整大小或自动缩放系统设置的字段区分开;
- 构建、发布或镜像信息,例如时间戳、发行编号、git 分之、PR 号、镜像哈希及注册表地址;
- 指向日志、监控、分析或审核存储库的指针;
- 可用于调试目的的客户端库或工具信息:例如,名称、版本和内部版本信息;
- 用户或工具/系统出处信息,例如来自其他生态系统组件的相关对象的 URL;
- 轻量级推出工具元数据:例如,配置或检查点;
- 负责人的电话或寻呼机号码,或指定可在何处找到该信息的目录条目,例如团队网站;
- 从最终用户到实现的指令,以修改行为或使用非标准功能;
除了使用注解,我们还可以将这种类型的信息存储在外部数据库或目录中,但这将使制作共享客户端库和用于部署、管理、自省等工具变得更加困难。
语法和字符集
注解是键/值对。有效的注解键分为两部分:可选的前缀和名称,用斜杠(/
)分隔。名称段是必须的,并且必须为 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
下一步怎么做
- 了解有关标签和选择器的更多信息。