1. 指定调度节点
1.1. 实例一:
- pod.spec.nodeName将pod直接调度到指定的Node节点上,会跳过Scheduler的调度策略,该匹配规则是强制匹配。
vim pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
nodeName: node1
containers:
- name: my-nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
//创建pod
[root@master1 scheduler]
deployment.apps/my-nginx created
//查看pod是不是所有都在node1节点创建
[root@master1 scheduler]
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-nginx-6994b6475f-m2bmt 1/1 Running 0 10s 10.244.1.66 node1 <none> <none>
my-nginx-6994b6475f-t6k8g 1/1 Running 0 10s 10.244.1.69 node1 <none> <none>
my-nginx-6994b6475f-v88zq 1/1 Running 0 10s 10.244.1.67 node1 <none> <none>
my-nginx-6994b6475f-xllf4 1/1 Running 0 10s 10.244.1.68 node1 <none> <none>
1.2. 实例二:
- pod.spec.nodeSelector:通过k8s的label-selector机制选择节点,由调度器调度策略匹配label,而后调度pod到目标节点,该匹配规则属于强制约束
vim pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
nodeSelector:
disk: ssd
containers:
- name: my-nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
//在node1上打标签为disk=ssd
[root@master1 scheduler]
node/node1 labeled
//创建pod
[root@master1 scheduler]
deployment.apps/my-nginx created
//查看pod创建是否在node1节点创建:
[root@master1 scheduler]
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-nginx-5d8fbfdd98-52m26 1/1 Running 0 8s 10.244.1.79 node1 <none> <none>
my-nginx-5d8fbfdd98-gf5bg 1/1 Running 0 8s 10.244.1.78 node1 <none> <none>
my-nginx-5d8fbfdd98-mt5jf 1/1 Running 0 8s 10.244.1.80 node1 <none> <none>
my-nginx-5d8fbfdd98-wbq64 1/1 Running 0 8s 10.244.1.81 node1 <none> <none>