kubectl使用-l或-L参数查找k8s Pod标签

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"