## 拓扑调度
```sh
# 为所有node添加标识
[22:57:52 root@master1 scheduler]#kubectl label node master1 node=master1 zone=zoneA
node/master1 labeled
[22:59:35 root@master1 scheduler]#kubectl label node node1.noisedu.cn node=node1 zone=zoneA
node/node1.noisedu.cn labeled
[22:59:53 root@master1 scheduler]#kubectl label node node2.noisedu.cn node=node2 zone=zoneB
node/node2.noisedu.cn labeled
# 应用资源文件,所有节点分布是3:3:1
[23:02:51 root@master1 scheduler]#cat 16-scheduler-pod-topology-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-affinity-preferred
spec:
replicas: 7
selector:
matchLabels:
foo: bar
template:
metadata:
labels:
foo: bar
spec:
containers:
- name: pod-test
image: 10.0.0.55:80/mykubernetes/pod_test:v0.1
imagePullPolicy: IfNotPresent
topologySpreadConstraints:
- maxSkew: 3
topologyKey: zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
foo: bar
[23:02:55 root@master1 scheduler]#kubectl apply -f 16-scheduler-pod-topology-test.yaml
deployment.apps/pod-affinity-preferred created
[23:03:01 root@master1 scheduler]#kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-affinity-preferred-84567586c8-2dlfp 1/1 Running 0 10s 10.244.3.7 node1.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-bzm2g 1/1 Running 0 9s 10.244.4.5 node2.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-gk5g5 1/1 Running 0 9s 10.244.4.7 node2.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-jf2nq 1/1 Running 0 10s 10.244.3.8 node1.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-swgxt 1/1 Running 0 9s 10.244.3.10 node1.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-xjlx8 1/1 Running 0 10s 10.244.4.6 node2.noisedu.cn <none> <none>
pod-affinity-preferred-84567586c8-zdb75 1/1 Running 0 9s 10.244.3.9 node1.noisedu.cn <none> <none>
```