一、概念
我们先创建一个普通的deploy资源,设置为10个副本
[root@k8s231 dns]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: dm01
spec:
replicas: 10
selector:
matchLabels:
k8s: k8s
template:
metadata:
labels:
k8s: k8s
spec:
containers:
- name: c
image: nginx:1.20.1-alpine
ports:
- name: p
containerPort: 80
[root@k8s231 dns]# kubectl apply -f deploy.yaml
我们查看一下创建的pod
[root@k8s231 dns]# kubectl get pods -o wide
我们发现,其是随机创建在,k8s232和k8s233节点上的;
那么我们有没有方法,让pod根据我们自己的想法,创建在我们想要的节点上呐?
接下来,我们就学习,关于pod调度的节点选择器,nodeSelector
二、接单选择器nodeSelector的使用
目的就是让pod创建在我们想要的节点上;
1,使用步骤
1,给节点(k8s231、k8s232、k8s233)打标签
2,pod中编辑节点选择(选择节点的标签)
3,创建资源
2,查看节点的标签
[root@k8s231 dns]# kubectl get nodes --show-labels
3,给节点打标签
· k8s231节点打标签
[root@k8s231 dns]# kubectl label node k8s231 k8s=xinjizhiwa-01
node/k8s231 labeled
· k8s232节点打标签
[root@k8s231 dns]# kubectl label node k8s232 k8s=xinjizhiwa-02
node/k8s232 labeled
· k8s233节点打标签
[root@k8s231 dns]# kubectl label node k8s233 k8s=xinjizhiwa-03
node/k8s233 labeled
4,编辑deploy资源清单
[root@k8s231 dns]# vim deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: dm01
spec:
replicas: 10
selector:
matchLabels:
k8s: k8s
template:
metadata:
labels:
k8s: k8s
spec:
#基于节点标签调度pod
nodeSelector:
#调度到哪个标签的节点上?
k8s: xinjizhiwa-03
containers:
- name: c
image: nginx:1.20.1-alpine
ports:
- name: p
containerPort: 80
5,创建资源
[root@k8s231 dns]# kubectl apply -f deploy.yaml
没有指定节点选择器的时候
编辑了节点选择器之后
至此,节点选择器nodeSelector学习完毕;