前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >确定k8s的Annotation与Labels你用对了?

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

作者头像
公众号: 云原生生态圈
发布2021-06-10 14:37:28
13.6K0
发布2021-06-10 14:37:28
举报
文章被收录于专栏:云原生生态圈云原生生态圈

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

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

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

Annotations和Labels之间的实际区别实际上很简单:

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

K8s中的Labels是什么?

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

K8s中的Annotations是什么?

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

使用Annotations和Labels的示例

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

代码语言:javascript
复制
kubectl annotate svc nginx -n devops kubemaster.top/owner=@marionxue

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

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

下面准备了一个使用Annotation和selector的示例,其中selector用于匹配受控制的Pod,而annotation则是自定义添加的附加信息,K8s并不会用到这个信息。

参考资料

[1]Labels: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

[2]Annotations: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/

[3]RFC 1123: https://datatracker.ietf.org/doc/html/rfc1123

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • K8s中的Labels是什么?
  • K8s中的Annotations是什么?
  • 使用Annotations和Labels的示例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档