kubectl使用-l或-L参数查找k8s Pod标签
新建一个pod
vim test_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nodejs
labels:
versions: Minor_upgrade
env: development
spec:
containers:
- image: wangyunan/nodejs:v1
name: nodejs
ports:
- containerPort: 8080
protocol: TCP
创建:
kubectl create -f test_pod.yaml
查看新创建的pod的标签:kubectl get pod --show-labels
[root@master1 k8s]# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 73m <none>
nodejs-1 1/1 Running 0 81m <none>
nodejs-2 1/1 Running 0 2m38s env=development,versions=Minor_upgrade
kubectl指定 -L 参数查找特定的标签:
kubectl get pod -L env,versions
小写的 -l 参数也可以查找标签,-l 和 -L 的区别:
小写的-l需要指定标签的键值对、大写的-L只需指定标签的键即可。
为现有pod添加新标签:
执行命令:
kubectl label pod nodejs versions=test env=Basic_version
更新现有pod的标签:
执行命令:
kubectl label pod nodejs env=development_version --overwrite
通过标签选择器列出pod子集
1)过滤资源准则: 包含(或不包含)使用特定键的标签 包含具有特定键和值的标签 包含具有特定键的标签,但其值与我们指定的不同
列出所有包含 env 标签的pod,无论其值如何:
kubectl get pod -L env
列出所有不包含 env 标签的pod,无论其值如何:
kubectl get pod -L '!env'
列出所有不包含 env!=Basic_version 标签键值的pod:
kubectl get pod -l 'env!=Basic_version'
使用标签分类工作节点:
例如把node1节点设置成gpu节点
执行命令:
kubectl label node node1 gpu=true
使用-l 或 -L参数查看是否设置成功
kubectl get nodes -l gpu=true
输出结果:
[root@master1 k8s]# kubectl get nodes -l gpu=true
NAME STATUS ROLES AGE VERSION
node1 Ready <none> 23d v1.19.4
创建一个新pod,并指定部署到node1节点:
vim nodejs-gpu.yaml
apiVersion: v1
kind: Pod
metadata:
name: nodejs-gpu
spec:
nodeSelector:
gpu: "true"