标签选择器

Label和Label Selector:标签和标签选择器

Label
Label资源对象的源数据:任何资源类型的任一资源对象,包括pod(pod用的最多)
定义在 metadata.labels:
key: value
键名称:由“键前缀(可选)”和“键名”组成,格式为“key_prefix/key_name”
键前缀必须使用DNS域名格式
键名称的命名格式:支持字母、数字、连接号、下划线和点号,且只能以字母或数字开头;最长63个字符;

管理资源对象的Lable:有两种时刻可以做到
1、通过对象配置清单 如:定义在 metadata.labels:
key: value
2、通过"kubectl lable" 如:创建pod自带标签
显示资源对象的标签
[root@K8s-master01 chapter6]#kubectl get pods --show-labels
使用-l指定标签选择器来过滤符合条件的pod,同时也可使用kubectl label来管理标签
如:
添加标签:kubectl label pods liveness-exec-demo version=v1.0
修改标签:kubectl label pods --overwrite liveness-exec-demo version=v1.1
删除资源对象标签:-代表删除kubectl label pods liveness-exec-demo version-
只显示资源对象特定的label的信息:
等值比较
kubectl get pods -l version=v1.1 --show-labels
kubectl get pods -l version=v1.1 -L version
不等值比较
如:version不等于v1.0
kubectl get pods -l 'version!=v1.1' -L version
kubectl get pods -l 'version!=v1.1' --show-labels

一次添加两个标签:
kubectl label pods liveness-exec-demo version=v1.1 env=testing
查询两个条件同时满足的label:
kubectl get pods -l "version=v1.1,env=testing"
kubectl get pods -l "version=v1.1,env=testing" --show-labels
拥有该标签,该标签的值为某值:
kubectl grt pods -l 'version in (v1.0,v1.2)' --show-labels
不拥有该标签:
kubectl grt pods -l '!version ' --show-labels
Label Selector
Label Selector:基于资源对象的Lable来筛选资源对象
有些资源类型,在其期望状态中,即可使用标签选择器过滤特定类型的资源对象
如:Deployment、Service,能够筛选pod
kubectl get type -l selector

标签选择器:基于标签筛选对象的过滤条件,支持两种类型
基于等值关系的选择器
操作符:=或==、!=
基于集合关系的选择器
操作符:in、notin和exists
使用格式:KEY in (VALUE1, VALUE2, …)、 KEY notin (VALUE1, VALUE2, …)、KEY 和 !KEY