• kubernetes进阶之四:Label和Label Selector


    一:什么是Label

    Label是Kubernetes系列中另外一个核心概念。是一组绑定到K8s资源对象上的key/value对。同一个对象的labels属性的key必须唯一。label可以附加到各种资源对象上,如Node,Pod,Service,RC等。

    通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作。

    示例如下: 

    • 版本标签:"release" : "stable" , "release" : "canary"...
    • 环境标签:"environment" : "dev" , "environment" : "production"
    • 架构标签:"tier" : "frontend" , "tier" : "backend" , "tier" : "middleware"
    • 分区标签:"partition" : "customerA" , "partition" : "customerB"...
    • 质量管控标签:"track" : "daily" , "track" : "weekly"
    二:什么是Label selector(标签选择器)


    Label selector是Kubernetes核心的分组机制,通过label selector客户端/用户能够识别一组有共同特征或属性的资源对象。

    三:Label selector的查询条件

    基于值相等的查询条件: 类似于SQL语句中的=或!=;  例如:select * from pod where name=(或!=)'redis-slave';

    基于子集的查询条件: 类似于SQL语句中的in或 not in; 例如:select * from pod where name in(或not in) ('redis-slave','redis-master');

    两种查询条件也可以组合在一起使用。

    新出现的管理对象如Deploment、ReplicaSet、DaemonSet和Job则可以在Selector中使用基于集合的筛选条件定义,例如:

    selector:
      matchLabels:
        app: myweb
      matchExpressions:
        - {key: tier, operator: In, values: [frontend]}
        - {key: environment, operator: NorIn, values: [dev]}
    

    matchLabels用于定义一组Label,与直接写在Selector中作用相同:matchExpression用于定义一组基于集合的筛选条件,可用的条件运算符包括:In、NotIn、Exists和DoesNotExist。

    如果同时设置了matchLabels和matchExpression,则两组条件为“AND”关系,即所有条件需要满足才能完成Selector的筛选。


    四:Label selector的使用场景

    1.kube-controller进程通过资源对象RC上定义的Label Selector来筛选要监控的Pod副本的数量,从而实现Pod副本的数量始终符合预期设定的全自动控制流程

    2.kupe-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立器每个Service到对应Pod的请求转发路由表,从而实现Service的智能负载均衡机制

    3.通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,Kube-scheduler进程可以实现Pod定向调度的特性

    在前面的留言板例子中,我们只使用了一个name=XXXLabel Selector。让我们看一个更复杂的例子。假设为Pod定义了Label: release、env和role,不同的Pod定义了不同的Label值,如图1.7所示,如果我们设置了“role=frontend”的Label Selector,则会选取到Node 1和Node 2上到Pod。

    screenshot

    而设置“release=beta”的Label Selector,则会选取到Node 2和Node 3上的Pod,如图所示。

    总结:使用Label可以給对象创建多组标签,Label和Label Selector共同构成了Kubernetes系统中最核心的应用模型,使得被管理对象能够被精细地分组管理,同时实现了整个集群的高可用性。

    screenshot



    总结:使用Label可以给对象创建多组标签,Label 和 Label Selector共同构成了Kubernetes系统中最核心的应用模型,
    使得被管理对象能够被精细地分组管理,同时实现了整个集群的高可用性.

     
  • 相关阅读:
    LinQ&EF任我行(一)LinQ to SQL (转)
    WPF数据模板和控件模板
    Sql优化
    SQL锁表语句
    js动态创建dom
    js实现等待n秒后按钮可用
    js关于事件冒泡
    工作流学习(个人总结)
    sql常用函数
    将Datatable序列化为Json对象返回到客户端
  • 原文地址:https://www.cnblogs.com/521football/p/10405208.html
Copyright © 2020-2023  润新知