目录

Kubernetes-Scheduler系列-00-简介

概述

Kubernetes 的 Scheduler 的作用主要是将等待被调度的 Pod 按照特定的调度算法那和调度策略绑定到集群中合适的 Node 上,这个绑定的动作在 K8S 里称为 Bind。

  1. 待调度的Pod列表PodList
  2. 待调度的Node列表NodeList
  3. 调度算法和策略AlgorithmProvider

其作用说明白了,就是将哪个 Pod 调度到哪个 Node 上的信息写到 etcd 上,供 Kubelet 来获取。

默认的调度流程分为两步:

  1. 预选predicates
  2. 优选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日,文中内容可能已过时,请谨慎参考。