我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:香港跑狗图 > 调度规则 >

Kubernetes 调度器浅析

归档日期:07-04       文本归类:调度规则      文章编辑:爱尚语录

  scheduler 的工作看似很简单,但其实不然。考虑的问题非常多,比如要保证每个节点被公平调度,提高资源利用率,提高 pod 调度效率,提升调度器扩展能力等等。

  可涉及的内容非常多,接下来会围绕两个核心步骤对 k8s 的默认调度策略深入了解。

  参考 Kubernetes 版本: v1.12二、PredicatesPredicates 在调度过程中的作用就是先进行过滤,过滤掉所有不符合条件的节点后,剩下的所有节点就都是可以运行带调度 Pod。

  具体的 Predicates 默认策略,可以参考:默认调度策略当开始调度一个 Pod 的时候,调度器会同时开启多个协程并发的进行 Node Predicates 过滤,最后返回一个可以运行 Pod 的节点列表。每个协程都是按照固定的顺序进行计算过滤的。

  3. 与宿主机相关的过滤规则这些规则主要考察待调度的 Pod 是否满足 Node 本身的一些条件。

  三、Priorities完成了前一个阶段的节点 “过滤” 之后,便需要通过Priorities为这些节点打分,选择得分最高的节点,作为调度对象。

  每一次打分的范围是 0 — 10 分。10 表示非常合适,0 表示非常不合适。

  并且每个打分函数都可以配置对应的权重值,下面介绍调度器策略配置时,也会涉及权重值的配置。默认权重值是 1,如果觉得某个打分函数特别重要,便可以加大该权重值。

  还有一个常见的是BalancedResourceAllocation,该规则主要目的是资源平衡。在所有节点里选择各种资源分配最均衡的节点,避免出现某些节点 CPU 被大量分配,但是 Memory 大量剩余的情况。

  注意: pod 运行时是否会下载 image,还跟 Pod ImagePullPolicy 配置有关。可以看到 k8s scheduler 完成一次调度所需的信息非常之多。所以在实际的调度过程中,大量的信息都事先已经缓存,提高了 Pod 的调度效率。

  四、调度策略配置Kubernetes 调度器有默认的调度策略,具体可以参考default。当然用户也可以修改调度策略,可以通过命令行参数policy-config-file指定一个 JSON 文件来描述哪些 predicates 和 priorities 在启动 k8s 时被使用, 通过这个参数调度就能使用管理者定义的策略了。

  五、自定义调度器前面提到了调度器的扩展能力,除了使用 k8s 自带的调度器,你也可以编写自己的调度器。通过修改 Pod 的spec.schedulername参数来指定调度器的名字。

本文链接:http://mikephotos.net/diaoduguize/729.html