概述
Kubernetes 的 Scheduler 的作用主要是将等待被调度的 Pod 按照特定的调度算法那和调度策略绑定到集群中合适的 Node 上,这个绑定的动作在 K8S 里称为 Bind。
- 待调度的Pod列表PodList
- 待调度的Node列表NodeList
- 调度算法和策略AlgorithmProvider
其作用说明白了,就是将哪个 Pod 调度到哪个 Node 上的信息写到 etcd 上,供 Kubelet 来获取。
默认的调度流程分为两步:
- 预选predicates
- 优选priority
需要注意,kube-scheduler 服务是依赖于 kube-apiserver 的。
1
2
3
4
5
6
7
8
9
10
11
12
|
/data/kubernetes/bin/batch-scheduler \
--feature-gates=PodPriority=true,DisablePreemption=true \
--logtostderr=false \
--config=batch_scheduler_config.json \
--v=3 \
--log-dir=/data/kubernetes/log \
--address=127.0.0.1 \
--leader-elect=true \
--policy-config-file=/data/kubernetes/scheduler.conf \
--kube-api-qps=100 \
--kube-api-burst=200 \
--master=127.0.0.1:8080
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# config.json
{
"apiVersion": "kubescheduler.config.k8s.io/v1alpha1",
"leaderElection": {
"leaderElect": true
},
"plugins": {
"preFilter": {
"enabled": [
{
"name": "batch-scheduler"
}
]
},
"permit": {
"enabled": [
{
"name": "batch-scheduler"
}
]
},
"postBind": {
"enabled": [
{
"name": "batch-scheduler"
}
]
},
"queueSort": {
"enabled": [
{
"name": "batch-scheduler"
}
]
}
},
"pluginConfig": [
{
"name": "batch-scheduler",
"args": {
"kube_master": "127.0.0.1:8080",
"max_schedule_time": 10
}
}
]
}
|
参考资料
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。