k8s-Label(标签)
一、Label是什么?
Label是Kubernetes系统中的一个核心概念。
Label以key/value键值对的形式附加到各种对象上,如Pod、Service、RC、Node等。
Label定义了这些对象的可识别属性,用来对它们进行管理和选择。Label可以在创建时附加到对象上,也可以在对象创建后通过API进行管理。
二、Label Selector
在为对象定义好Label后,其他对象就可以使用Label Selector(选择器)来定义其作用的对象了。
Label Selector的定义由多个逗号分隔的条件组成。
"labels": {
"key1": "value1",
"key2": "value2"
}
当前有两种Label Selector:
基于等式的(Equality-based)和基于集合的(Set-based),在使用时可以将多个Label进行组合来选择。
1、基于等式的Label Selector使用等式类的表达式来进行选择:
name = redis-slave: 选择所有包含Label中key="name"且value="redis-slave"的对象;
env != production: 选择所有包括Label中的key="env"且value不等于"production"的对象。
2、基于集合的Label Selector使用集合操作的表达式来进行选择:
name in (redis-master, redis-slave): 选择所有包含Label中的key="name"且value="redis-master"或"redis-slave"的对象;
name not in (php-frontend): 选择所有包含Label中的key="name"且value不等于"php-frontend"的对象。
ps:在某些对象需要对另一些对象进行选择时,可以将多个Label Selector进行组合,使用逗号","进行分隔即可。
基于等式的LabelSelector和基于集合的Label Selector可以任意组合。
例如:
name=redis-slave,env!=production
name not in (php-frontend),env!=production