k8s-label标签查看、添加、筛选、删除命令

添加标签

要给pod添加标签,需要先创建pod

kubectl run nginx --image=nginx:latest --port=80 --namespace test

查看pod

kubectl get pod -n test

执行结果如下:

NAME                    READY   STATUS    RESTARTS   AGE
nginx-dd6b5d745-drpc9   1/1     Running   0          5s

给 nginx-dd6b5d745-drpc9 添加 version 标签

kubectl label pod nginx-dd6b5d745-drpc9 version=1.0 -n test

给 nginx-dd6b5d745-drpc9 添加 tier 标签

kubectl label pod nginx-dd6b5d745-drpc9 tier=backend -n test

查看标签

kubectl get pod  -n test --show-labels

执行结果:

NAME                    READY   STATUS    RESTARTS   AGE    LABELS
nginx-dd6b5d745-drpc9   1/1     Running   0          2m7s   pod-template-hash=dd6b5d745,run=nginx,tier=backend,version=1.0

解释: tier=backend,version=1.0 是我们添加的标签,其他是 k8s 添加的标签

更新标签

将 nginx-dd6b5d745-drpc9 的 version 标签 更新为 2.0

kubectl label pod nginx-dd6b5d745-drpc9 version=2.0 -n test --overwrite

提示: 在添加标签的命令后面加上 --overwrite

筛选标签

再创建一个pod并添加标签

要给pod添加标签,需要先创建pod

kubectl run nginx2 --image=nginx:latest --port=80 --namespace test

查看pod

kubectl get pod -n test

执行结果如下:

NAME                    READY   STATUS    RESTARTS   AGE
nginx-dd6b5d745-drpc9   1/1     Running   0          5s
nginx2-d55bbcbfc-88hcl   1/1     Running   0          75s

给 nginx2-d55bbcbfc-88hcl 添加 version 标签

kubectl label pod nginx2-d55bbcbfc-88hcl version=1.0 -n test

给 nginx2-d55bbcbfc-88hcl 添加 tier 标签

kubectl label pod nginx2-d55bbcbfc-88hcl tier=frontend -n test

查看标签

kubectl get pod -n test --show-labels

执行结果如下:

NAME                     READY   STATUS    RESTARTS   AGE     LABELS
nginx-dd6b5d745-drpc9    1/1     Running   0          13m     pod-template-hash=dd6b5d745,run=nginx,tier=backend,version=2.0
nginx2-d55bbcbfc-88hcl   1/1     Running   0          3m37s   pod-template-hash=d55bbcbfc,run=nginx2,tier=frontend,version=1.0

筛选 version 是 2.0

kubectl get pod -n test -l version=2.0  --show-labels

筛选 version 不是 2.0

kubectl get pod -n test -l version!=2.0  --show-labels

筛选 version 是 1.0、2.0

kubectl get pod -n test -l 'version in (1.0,2.0)'  --show-labels

筛选 tier 是 frontend 和 backend

kubectl get pod -n test -l 'tier in (frontend,backend)'  --show-labels

筛选 version 是 1.0,且 tier 是 frontend

kubectl get pod -n test -l 'version=1.0,tier=frontend'  --show-labels

筛选 version 是 1.0,且 tier 是 frontend 和 backend

kubectl get pod -n test -l 'version=1.0,tier in (frontend,backend)'  --show-labels

删除标签

kubectl label pod nginx-dd6b5d745-drpc9 -n test tier-

查看 pod 标签:

kubectl get pod  -n test --show-labels

执行结果如下:

NAME                     READY   STATUS    RESTARTS   AGE   LABELS
nginx-dd6b5d745-drpc9    1/1     Running   0          41m   pod-template-hash=dd6b5d745,run=nginx,version=2.0
nginx2-d55bbcbfc-88hcl   1/1     Running   0          31m   pod-template-hash=d55bbcbfc,run=nginx2,tier=frontend,version=1.0

可以看到 nginx-dd6b5d745-drpc9 已经没有 tier 标签了

yaml配置方式

创建pod时就指定标签

创建 yaml 配置文件

创建 pod-nginx-label.yaml 文件

vim pod-nginx-label.yaml

按 i 键,

复制粘贴下面内容:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: test
  labels: # 指定标签
    version: "3.0" # 指定version版本标签
    env: "test" # 指定evn环境标签
spec:
  containers:
  - image: nginx:latest
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP

按 esc,:wq 保存退出

创建

执行下面命令创建 pod:

kubectl apply -f pod-nginx-label.yaml

查看pod

kubectl get pod  -n test --show-labels
NAME                     READY   STATUS              RESTARTS   AGE   LABELS
nginx                    0/1     ContainerCreating   0          7s    env=test,version=3.0
nginx-dd6b5d745-drpc9    1/1     Running             0          50m   pod-template-hash=dd6b5d745,run=nginx,version=2.0
nginx2-d55bbcbfc-88hcl   1/1     Running             0          40m   pod-template-hash=d55bbcbfc,run=nginx2,tier=frontend,version=1.0

原文出处:/show_1IX6KTQA0P5d.html