Label是以key=value的键值对的形式设置,可以附加到各种资源对象。一个资源对象可以定义任意数量的Label,而同一个Label可以添加到任意数量的资源对象。Label通常在资源对象定义时确定,也可以在对象创建后动态添加或删除。

通过对资源对象设置Label,实现多维度的资源分组管理,以方便资源分配、调度、配置、部署等管理工作。

常用的Label示例如:

  • 版本标签:"release":"stable""release":"canary"

  • 环境标签:"environment":"dev""environment":"qa""environment":"production"

  • 架构标签: "tier":"frontend""tier":"backend""tier":"middleware"

  • 分区标签:"partition":"customerA""partition":"customerB"

  • 质量标签:"track":"daily""track":"weekly"

Label Selector

在对资源对象定义标签之后,就可以通过标签选择器Label Selector查询和筛选拥有某些Label的资源对象。

Label Selector可以基于等式匹配标签

name=redis-slave
env!=production

也可以使用集合进行匹配

name in (redis-master,redis-slave)
name notin (php-frontend)

多个Label Selector表达式还可以通过组合实现复杂选择

name=redis-slave,env!=production
name notin (php-frontend),env!=production

kube-controller进程通过资源对象RC定义的Label Selector筛选需要监控的Pod副本的数量,从而实现Pod数量符合预期设定。

kube-proxy进程通过Service的Label Selector选择对应的Pod,自动建立起每个Service对应Pod的请求转发路由表,从而实现Service的负载均衡。

kube-scheduler进程通过在Pod定义文件使用的NodeSelector,实现Pod的定向调度。

results matching ""

    No results matching ""