添加标签
要给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