你可以使用Kubernetes注解来附加任何未标识的元数据(metadata)到对象上。工具和类库等客户端可以检索这些元数据。
附加元数据到对象上
你可以使用label或者annotion来附加元数据到Kubernetes对象上。label可以用来通过条件选择对象和发现对象集合。相反,annotion并不用来标识和选择对象。annotion中的元数据可大可小,可结构化或非结构化,可以包括label不允许的字符。
annotion和label一样,是键值映射:
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
下面是一些可以记录在annotion中的信息:
- 声明式配置层所管理的字段。将这些字段作为注解附加以区分它们,由服务端或客户端所设置的默认值、自动生成的字段、自动大小调整或自动扩容系统所设置的字段。
- 构建、发布或镜像信息如 时间戳, 发布IDs, git分支, PR numbers, 镜像哈希, 和注册地址。
- 日志、监控、分析或审计仓库的指针.
- 用来进行调试客户端类库或工具信息:如,名称、版本和构建信息。
- 用户或工具/系统来源信息,比如来自其他生态系统组件的相关对象的URL。
- 轻量级展示工具元数据:如,配置或者检查点。
- 负责人的电话号码或传呼机号码,信息所在地的目录记录,比如团队网站。
- 终端用户的编辑行为或实现非标准功能的指令。
代替使用annotion,你可以存储这些信息到一个外部数据库或目录。但这回导致生产共享客户端类库和工具在部署、管理、返工之类的步骤都变得很困难。
语法(Syntax) 和字符集( character set)
annotion就是键值对。合法的建由两个部分组成:可选前缀和名称,由斜杠 (/) 分隔。名称部分是必须的,由少于63个字符组成,开头和结尾为数字或字母 ([a-z0-9A-Z]
),中间包含横杠(-)、下划线(_)、点(.)和数字或字母。前缀是可选的。如果有规定,前缀必须是一个DNS的子域:一个系列的DNS labels由点(.)分隔,不长于253个字符,后跟一个斜杠(/)。
如果前缀被忽略,label的键被假定是用户私有的。向终端用户对象添加标签的自动化系统组件(components)(如kube-scheduler
, kube-controller-manager
, kube-apiserver
, kubectl
或其他第三方自动化
)必须指定一个标签。
kubernetes.io/ 和 k8s.io/ 前缀为Kubernetes核心组件预留。