Kubernetes 官方文档
  • 前言
  • 词汇表
  • 概念
    • 概述
      • 组件
      • 对象
        • 理解 Kubernetes 对象
        • 管理 Kubernetes 对象
        • 对象名称和 ID
        • 标签(Label)和选择算符(Selector)
        • 命名空间(Namespace)
        • 注解(Annotation)
        • 字段选择器
        • Finalizers
        • 属主与附属
    • 架构
      • 节点
    • 工作负载
      • 工作负载资源
        • Job
    • 服务、负载均衡和网络
      • 服务
        • 服务定义
        • 无头服务(Headless Service)
        • 发布服务
    • 配置
      • 配置最佳实践
    • 策略
      • 资源配额
    • 调度、抢占和驱逐
      • Kubernetes 调度器
    • 集群管理
      • 证书
      • 管理资源
        • 组织资源配置
        • kubectl 中的批量操作
        • 有效地使用标签
        • 金丝雀部署
        • 更新标签
      • 集群网络系统
  • 任务
    • 管理集群
      • 手动生成证书
    • 运行应用
      • Pod 水平自动扩缩容
        • HPA 是如何工作的?
      • HPA 演练
        • 创建 HPA
        • 附录
    • TLS
      • 管理集群中的 TLS 认证
  • 参考
    • API 访问控制
      • 使用 RBAC 鉴权
        • API 对象
        • 默认 Roles 和 Role Bindings
        • 初始化与预防权限提升
        • 命令行工具
        • ServiceAccount 权限
        • EndpointSlices 和 Endpoints 写权限
        • 从 ABAC 升级
    • 组件工具
      • kube-scheduler
    • 调度
      • 调度器配置
      • 调度策略
    • 网络参数
      • Service 所用的协议
      • 虚拟 IP 和服务代理
    • 命令行工具 (kubectl)
  • 博客
    • 移除 Dockershim 的常见问题
由 GitBook 提供支持
在本页
  • 为对象附加元数据
  • 语法和字符集

这有帮助吗?

在GitHub上编辑
  1. 概念
  2. 概述
  3. 对象

注解(Annotation)

可以使用 Kubernetes Annotations 为对象附加任意非标识的元数据。客户端程序(例如工具和库)能够获取这些元数据信息。

为对象附加元数据

可以使用 labels 和 annotations 将元数据附加到 Kubernetes 对象。

  • Labels 可以用来选择对象和查找满足某些条件的对象集合。

  • Annotitions 不用于标识和选择对象。它的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的,能够包含 label 不允许的字符。

annotations 和 labels 一样,也是键值对:

metadata:
  annotations:
    key1: value1
    key2: value2

说明:键和值必须是字符串。换句话说,不能使用数字、布尔值、列表或其他类型的键或值。

以下是一些例子,用来说明哪些信息可以使用 annotations 来记录:

  • 由声明性配置所管理的字段。将这些字段附加到 annotations,能够将它们与客户端或服务端设置的默认值、自动生成的字符以及通过自动调整大小或自动伸缩系统设置的字段区分开来。

  • 构建、发布或镜像信息(如时间戳、发布ID、Git 分支、RP 数量、镜像哈希、仓库地址等)。

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

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

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

  • 轻量级上线工具的元数据信息。例如,配置或检查点。

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

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

可以将此类信息存储在外部数据库或目录中而不使用 annotations,但这样做使得开发人员很难生成用于部署、管理、自检的客户端共享库和工具。

语法和字符集

Annotations 存储的形式是键值对。有效的键分为两部分:

  • 前缀和名称,以 / 分隔。

  • 名称段是必选项,并且必须在 63 个字符以内,以字母数字字符([a-z0-9A-Z])开头和结尾。

  • 名称段允许使用 -、_、. 和字母数字。

  • 前缀是可选的。如果指定,则前缀必须是 DNS 子域:一系列由 . 分隔的 DNS 标签,总计不超过 253 个字符,后跟 /。

  • 如果省略前缀,则假定 annotations 对用户是私有的。

  • 向用户对象添加 annotations 的自动化系统组件(例如:kube-scheduler、kube-controller-manager、kube-apiserver、kubectl 或其他第三方自动化)必须指定前缀。

例如,下面是一个 Pod 的配置文件,其 annotations 中包含 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.7.9
    ports:
    - containerPort: 80
上一页命名空间(Namespace)下一页字段选择器

最后更新于2年前

这有帮助吗?