什么是标签
标签其实就一对 key/value ,被关联到对象上,比如 Pod,标签的使用我们倾向于能够表示对象的特 殊特点,就是一眼就看出了这个 Pod 是干什么的,标签可以用来划分特定的对象(比如版本,服务类型 等),标签可以在创建一个对象的时候直接定义,也可以在后期随时修改,每一个对象可以拥有多个标 签,但是,key 值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对 pod 打标 签,之后就可以使用标签来查看、删除指定的 pod。
在 k8s 中,大部分资源都可以打标签。
给 pod 资源打标签
对已经存在的 pod 打标签
[root@master01 ~]# kubectl label pods demo-pod release=v1
查看标签是否打成功:
[root@master01 ~]# kubectl get pods demo-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo-pod 1/1 Running 0 2d6h app=myapp,env=dev,release=v1
查看资源标签
查看默认名称空间下所有 pod 资源的标签
[root@master01 ~]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo-pod 1/1 Running 0 2d6h app=myapp,env=dev,release=v1
nginx-7f466444dc-pc9pn 1/1 Running 0 2d1h k8s-app=nginx,pod-template-hash=7f466444dc
nginx-7f466444dc-sqd9d 1/1 Running 0 2d1h k8s-app=nginx,pod-template-hash=7f466444dc
查看默认名称空间下指定 pod 具有的所有标签
[root@master01 ~]# kubectl get pods demo-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo-pod 1/1 Running 0 2d6h app=myapp,env=dev,release=v1
列出默认名称空间下标签 key 是 release 的 pod,不显示标签
[root@master01 ~]# kubectl get pods -l release
NAME READY STATUS RESTARTS AGE
demo-pod 1/1 Running 0 2d6h
列出默认名称空间下标签 key 是 release、值是 v1 的 pod,不显示标签
[root@master01 ~]# kubectl get pods -l release=v1
NAME READY STATUS RESTARTS AGE
demo-pod 1/1 Running 0 2d6h
列出默认名称空间下标签 key 是 release 的所有 pod,并打印对应的标签值
[root@master01 ~]# kubectl get pods -l release --show-labels
NAME READY STATUS RESTARTS AGE LABELS
demo-pod 1/1 Running 0 2d6h app=myapp,env=dev,release=v1
查看所有名称空间下的所有 pod 的标签
[root@master01 ~]# kubectl get pod -A --show-labels