k8s-label&annotation

label(标签)

标签其实就一对 key/value,被关联到k8s对象上,比如pod/node等。标签可以用来划分特定组的对象,用户可通过标签来组织pod和所有其他Kubemetes对象。

selector(标签选择器)

通过label选择器,客户端/用户能方便辨识出一组对象,API目前支持两种选择器:基于相等的和基于集合的。一个label选择器一可以由多个必须条件组成,由逗号分隔。在多个必须条件指定的情况下,所有的条件都必须满足,因而逗号起着AND逻辑运算符的作用。
1.基于相等性或者不相等性的条件

environment=production //所有键等于 environment 值为 production 的资源
tier!=frontend //选择所有键为 tier 值不等于 frontend 的资源,和没有键为 tier 的label的资源。

2.基于set的条件
基于集合的label条件允许用一组值来过滤键。支持三种操作符: in , notin ,和 exists(仅针对于key符号) 。例如

environment in (production, qa)//选择所有键等于 environment ,且value等于 production 或者 qa 的资源
tier notin (frontend, backend)//选择所有键等于 tier 且值是除了 frontend 和 backend 之外的资源,和那些没有label的键是 tier 的资源
partition//选择所有所有有一个label的键为partition的资源;值是什么不会被检查
!partitio//选择所有的没有lable的键名为 partition 的资源;值是什么不会被检查

如何通过label组织pod

标签是可以附加到资源的任意键值对,用以选择具有该确切标签的资源(这是通过标签选择器完成的 )。 只要标签的key在资源内是唯一的, 一个资源便可以拥有多个标签。我们定义一些标签来组织pod.

  • app,指定pod属于那个应用,组件或者服务。
  • rel, 它显示在pod中运行的应用程序版本。


    file_a7822537ed7147b49f1fa96c53c1d197_blob.png

使用标签选择器列出pod

我们可以将pod与以下标签选择器进行匹配:

  • creation_rnethod!=rnanual 选择带有creation_rnethod标签, 并且
    值不等于manual的pod
  • env in (prod, devel)选择带有env标签且值为prod或devel的pod
  • env notin (prod, devel)选择带有env标签, 但其值不是prod或
    devel的pod

1 .在标签选择器中使用单个条件

 selector:
    app: pc
file_672f86cd9a77406c99fec8baceeeb630_blob.png

2 .在标签选择器中使用 多个条件

 selector:
    app: pc
    rel: 20
file_2f12a216a5b84b23903695c7e2a0d905_blob.png

annotation(注解)

Annotation与Label类似,也使用key/value键值对的形式进行定义。Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。Annotation则是用户任意定义的“附加”信息,可以包括标签不允许使用的字符。以便于外部工具进行查找,相比而言annotaion则可以包含更多的信息。大量使用注解可以为每个pod或其他API对象添加说明,以便每个使用该集群的人都可以快速查找有关每个单独对象的信息

  • 以下是在Annotations中记录信息的一些例子:

1.构建、发布的镜像信息,如时间戳,发行ID,git分支,PR编号,镜像hashes和注Registry地址。
2.一些日志记录、监视、分析或audit repositories。
3.一些工具信息:例如,名称、版本和构建信息。
4.用户或工具/系统来源信息,例如来自其他生态系统组件对象的URL。
5.负责人电话/座机,或一些信息目录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容