Kubenetes:标签

1)创建带有标签的pod,编辑gwp-manual-with-labels.yaml

apiVersion: v1
kind: Pod
metadata:
  name: gwp-manual-v2
  labels:
    creation_method: manual
    env: prod
spec:
  containers:
  - image: registry.cn-hangzhou.aliyuncs.com/rogueq/gwp:v1
    name: gwp
    ports:
    - containerPort: 8080
      protocol: TCP

2)创建该pod

kubectl create -f gwp-manual-with-labels.yaml

3)查看pod标签

kubectl get pod --show-labels

4)使用-L选项分别显示标签

kubectl get pod -L creation_method,env

5)修改现有pod标签

kubectl label pod gwp-manual creation_method=manual

6)更新现有标签,需要使用--overwrite选项

kubectl label pod gwp-manual-v2 env=debug --overwrite

7)使用标签选择器列出pod

a.列出creation_method=manual的pod

kubectl get pod -l creation_method=manual

b.列出包含env标签的pod

kubectl get pod -l env

c.列出没有env标签的pod

kubectl get pod -l "!env"

d.列出creation_method!=manual的pod

kubectl get pod -l creation_method!=manual

e.列出带有env且值为prod和devel的pod

kubectl get pod -l "env in (prod,devel)"

f.列出带有env且值不为prod和devel的pod

kubectl get pod -l "env notin (prod,devel)"

d.使用多个标签选择器选择pod,用逗号分隔

kubectl get pod -l "env notin (prod,devel)",creation_method!=manual

8)给工作节点添加标签

kubectl label node minikube gpu=true

 查看节点标签

kubectl get node --show-labels

9)使用标签选择器将pod调度到特定节点

编辑gwp-gpu.yaml,在spec部分添加nodeSelector字段,并将gpu设置为false

apiVersion: v1
kind: Pod
metadata:
  name: gwp-gpu
spec:
  nodeSelector:
    gpu: "false"
  containers:
  - image: registry.cn-hangzhou.aliyuncs.com/rogueq/gwp:v1
    name: gwp
    ports:
    - containerPort: 8080
      protocol: TCP

创建pod

kubectl create -f gwp-gpu.yaml

查看pod,一直处于Pending状态,因为只有一个节点且gpu标签时true,所以无法调度

删除gwp-gpu,将yaml中的gpu字段设置为true,再创建pod,查看pod状态,pod正常调度