一、使用命令行方式操作标签
1.1 准备条件
创建dev,并创建两个pod,如下:
[root@master demo]# kubectl create namespace dev
namespace/dev created
[root@master demo]# kubectl run nginx1 --image=nginx:1.17.1 --port=8080 -n dev
pod/nginx1 created
[root@master demo]# kubectl run nginx2 --image=nginx:1.17.3 --port=8181 -n dev
pod/nginx2 created
[root@master demo]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
nginx1 1/1 Running 0 62s
nginx2 1/1 Running 0 37s
[root@master demo]#
1.2 查看Pod标签命令
如下,可以看到此时已经增加了标签,run=nginx1和run=nginx2
[root@master demo]# kubectl get pod -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 2m16s run=nginx1
nginx2 1/1 Running 0 111s run=nginx2
[root@master demo]#
1.3 使用命令给pod增加标签
如下,给nginx1增加version=1.17.1的标签,给nginx2增加version=1.17.3的标签
[root@master demo]# kubectl label pod nginx1 version=1.17.1 -n dev
pod/nginx1 labeled
[root@master demo]# kubectl label pod nginx2 version=1.17.3 -n dev
pod/nginx2 labeled
[root@master demo]# kubectl get pod -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 4m48s run=nginx1,version=1.17.1
nginx2 1/1 Running 0 4m23s run=nginx2,version=1.17.3
[root@master demo]#
1.4 使用等式方式根据标签过滤
如下使用等号过滤
[root@master demo]# kubectl get pod -l "version=1.17.1" -n dev
NAME READY STATUS RESTARTS AGE
nginx1 1/1 Running 0 8m29s
[root@master demo]#
如下使用不等号过滤
[root@master demo]# kubectl get pod -l "version!=1.17.1" -n dev
NAME READY STATUS RESTARTS AGE
nginx2 1/1 Running 0 8m42s
[root@master demo]#
1.5 使用集合的方式过滤标签
如下使用in的方式
[root@master demo]# kubectl get pod -l "version in (1.17.1)" -n dev
NAME READY STATUS RESTARTS AGE
nginx1 1/1 Running 0 10m
[root@master demo]#
如下,使用notin的方式
[root@master demo]# kubectl get pod -l "version notin (1.17.1)" -n dev
NAME READY STATUS RESTARTS AGE
nginx2 1/1 Running 0 11m
[root@master demo]#
1.6 更新标签
如下,将nginx1的version标签值更改为1.0
[root@master demo]# kubectl label pod nginx1 version=1.0 -n dev --overwrite
pod/nginx1 labeled
[root@master demo]# kubectl get pod -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 21m run=nginx1,version=1.0
nginx2 1/1 Running 0 21m run=nginx2,version=1.17.3
[root@master demo]#
1.7 删除标签
如下,将nginx1的version标签删除
[root@master demo]# kubectl label pod nginx1 version- -n dev
pod/nginx1 labeled
[root@master demo]# kubectl get pod -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 23m run=nginx1
nginx2 1/1 Running 0 22m run=nginx2,version=1.17.3
[root@master demo]#
二、使用配置文件创建标签
2.1 编写配置文件
如下,编写pod_nginx_label.yaml文件,内容如下:即创建一个命名空间dev,并创建一个pod,同时给pod打version=1.0和env=test的标签
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: dev
labels:
version: "1.0"
env: "test"
spec:
containers:
- image: nginx:1.17.3
name: pod
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
2.2 使用配置文件创建资源
使用如下命令创建资源
[root@master demo]# kubectl apply -f pod_nginx_label.yaml
namespace/dev unchanged
pod/nginx created
[root@master demo]#
如下,查询发现已经创建成功
[root@master demo]# kubectl get pod -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx 1/1 Running 0 81s env=test,version=1.0
[root@master demo]#