标签
标签配置
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deployment # 标签配置
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
labels:
app: nginx-deployment # 标签配置
spec:
containers:
- image: wangyanglinux/myapp:v1
name: myapp
查看标签
kubectl get pods 命令默认不会列出任何标签,但我们可以使用 --show-labels 选项来查看 :
$ kubectl get po --show-labels
如果你只对某些标签感兴趣,可以使用 L 选项指定它们并将它们分别显示在 自己的列中,而不是列出所有标签。
指定标签列查看
$ kubectl get po -L creation_method,env
添加标签:
$ kubectl label pod pod名 key=values
修改标签:
$ kubectl label pod pod名 key=values --overwrite
标签选择器
标签选择器允许我们选择标记有特定标签的 pod 子集, 并对这些 pod 执行操作。是一种能够根据是否包含 key/values 来进行过滤资源的准则。标签选择器根据资源的以下条件来选择资源 :
- 包含或不包含特定键的标签
- 包含特定键和值的标签
- 包含特定键的标签,但其值与我们指定的不同(也就是 not )
查看匹配 标签 key= 标签 values 的 pod
[root@k8s-master01 ~]# kubectl get pod -l app=nginx-deployment
NAME READY STATUS RESTARTS AGE
nginx-deployment-697746d6c5-btn87 1/1 Running 0 9m
查看匹配 标签 key 的 pod
[root@k8s-master01 ~]# kubectl get pod -l app
NAME READY STATUS RESTARTS AGE
nginx-deployment-697746d6c5-btn87 1/1 Running 0 9m57s
tomcat-657759dcdb-g45nf 1/1 Running 0 59s
查看 不包含标签 env 的 pod
[root@k8s-master01 ~]# kubectl get pod -l '!app'
No resources found.
更多匹配
- 匹配标签 key 不是标签 values 的 pod creation_method!=manual
- 匹配带有 env 标签且值是 prod 或 devel 的 pod env in (prod, devel)
- 匹配带有 env 标签且值不是 prod 或 devel 的 pod env notin (prod, devel)
多条件匹配
使用逗号分隔的情况下,即可使用多个条件匹配。在包含多个逗号分隔的情况下,可以在标签选择器中同时使用多个条件,此时资源需要全部匹配才算成功匹配了选择器。例如,如果我们只想选择 product catalog 微服务的 beta 版本 pod,可以使用如下选择器
app=pc,rel=beta
评论区