确定 k8s 的 Annotation 与 Labels 你用对了?

1. 确定 k8s 的 Annotation 与 Labels 你用对了?

Labels(标签)和 Annotations(注解)都是将元数据附加到 Kubernetes 中对象的方法, 但是你知道这两者之间的区别吗?

下面就来了解下这两个之间的区别吧:

  • Labels: 标签是附加到对象(例如 pod) 的键/值对。标签旨在用于指定对用户有意义和相关的对象的标识属性, 但不直接暗示核心系统的语义。标签可用于组织和选择对象的子集。标签可以在创建时附加到对象上, 然后随时添加和修改……标签允许高效的查询和观察, 非常适合在 UI 和 CLI 中使用。非识别信息应使用 Annotations[2] 记录。
  • Annotations: 注解的定义就非常简单了, 它是将任意非标识元数据附加到对象上。比如工具和库之类的客户端可以检索此元数据。
    Annotations 和 Labels 之间的实际区别实际上很简单:

Labels 适用于 Kubernetes, 而 Annotations 适用于人类。

1.1. K8s 中的 Labels 是什么?

标签与选择器结合使用来标识相关资源组。因为选择器是用来查询标签的, 所以这个操作需要高效。为确保高效查询, 标签受 RFC 1123 约束。RFC 1123 以及其他约束将标签限制为最大 63 个字符长度。因此, 当您希望 Kubernetes 对一组相关资源进行分组时, 应该使用标签。

1.2. K8s 中的 Annotations 是什么?

Annotations 用于非识别信息, 即 Kubernetes 不关心的元数据。因此, 注解键和值没有约束。因此, 如果您想为其他人添加有关给定资源的信息, 则注解是更好的选择。

1.3. 使用 Annotations 和 Labels 的示例

以下简单示例同时使用 Annotations 和 selector。Annotations 用于添加有关 Kubernetes 面向人类的服务的信息, 而 Kubernetes 则不会使用。通常我们可以通过 kubectl 对一个资源对象进行添加一些便于查问题和分析的信息, 如:

kubectl annotate svc nginx -n devops kubemaster.top/owner=@marionxue

这样在使用中其实很方便定位和通知相关的工程师, 提高问题在团队中排查解决的高效性, 当然还可以添加其他的说明信息, 如服务的描述信息, Owner, 沟通 channel, 依赖信息, runbook 等等

而这些信息, 我们可以在 kubernetes YAML、Kustomize 模板文件或 Helm Charts 添加, 这些信息也当然可以在自动化部署工具中被引用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值