zoukankan      html  css  js  c++  java
  • k8s-scheduler-extender-example

    前言

    Scheduler是Kubernetes组件中功能&逻辑相对单一&简单的模块,它主要的作用是:watch kube-apiserver,监听PodSpec.NodeName为空的pod,并利用预选和优选算法为该pod选择一个最佳的调度节点,最终将pod与该节点进行绑定,使pod调度在该节点上运行

    展开上述调用流程中的scheduler部分,内部细节调用(参考Kubernetes Scheduler)如图所示:

    scheduler内部预置了很多预选和优选算法(参考scheduler_algorithm),比如预选:NoDiskConflict,PodFitsResources,MatchNodeSelector,CheckNodeMemoryPressure等;优选:LeastRequestedPriority,BalancedResourceAllocation,CalculateAntiAffinityPriority,NodeAffinityPriority等。但是在实际生产环境中我们常常会需要一些特殊的调度策略,比如批量调度(aka coscheduling or gang scheduling),这是kubernetes默认调度策略所无法满足的,这个时候就需要我们对scheduler进行扩展来实现这个功能了

    scheduler扩展方案

    目前Kubernetes支持四种方式实现客户自定义的调度算法(预选&优选),如下:

    • default-scheduler recoding: 直接在Kubernetes默认scheduler基础上进行添加,然后重新编译kube-scheduler
    • standalone: 实现一个与kube-scheduler平行的custom scheduler,单独或者和默认kube-scheduler一起运行在集群中
    • scheduler extender: 实现一个”scheduler extender”,kube-scheduler会调用它(http/https)作为默认调度算法(预选&优选&bind)的补充
    • scheduler framework: 实现scheduler framework plugins,重新编译kube-scheduler,类似于第一种方案,但是更加标准化,插件化

     sample-scheduler-framework

    自定义 Kubernetes 调度器

    Kubernetes Scheduler Extensibility

    k8s-scheduler-extender-example

  • 相关阅读:
    例3-7 统计字符
    大一第四周
    例3-5 四则运算
    MyBatis 查询缓存
    MyBatis 延迟加载
    Mybatis 关联查询
    Mybatis 动态SQL
    MyBatis mapper动态代理
    MyBatis 增删改查
    MyBatis 框架搭建
  • 原文地址:https://www.cnblogs.com/dream397/p/14981454.html
Copyright © 2011-2022 走看看