美文网首页K8S
k8s-label&annotation

k8s-label&annotation

作者: 阿沐木 | 来源:发表于2019-10-12 15:45 被阅读0次

    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.负责人电话/座机,或一些信息目录。

    相关文章

      网友评论

        本文标题:k8s-label&annotation

        本文链接:https://www.haomeiwen.com/subject/glgqmctx.html