node标签设置后,pod可以根据要求让pod调度到想要的节点上运行,或者不在某节点运行。或者确保pod调度到具有高性能(比如ssd的机器)的节点山上。
展示节点标签
[root@k8s-master01 springboot-mysql]# kubectl get node --show-labels=true
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready master 28d v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01 Ready <none> 28d v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02 Ready <none> 19h v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
k8s-node03 NotReady <none> 19h v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node03,kubernetes.io/os=linux
添加节点标签
kubectl label nodes k8s-node01 area=bejing
kubectl label nodes k8s-node02 area=shanghai
查看标签
[root@k8s-master01 springboot-mysql]# kubectl get node --show-labels=true
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready master 28d v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01 Ready <none> 28d v1.17.3 area=bejing,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02 Ready <none> 19h v1.17.3 area=shanghai,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
k8s-node03 NotReady <none> 19h v1.17.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node03,kubernetes.io/os=linux
把pod调度到指定标签
启动一个deployment副本数为2,让pod调度到node1
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-select-node1
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
node: node1
containers:
- name: nginx-select-node1
image: nginx:latest
ports:
- containerPort: 80