Koordinator 项目了解

388 阅读2分钟

概述

Koordinator设计的主要目的是容器混部,即在离线混部,在线容器指的是SLO要求高的延迟敏感的server类型容器,离线容器指的是以大数据应用为主的流式作业和批式作业,离线容器的SLO差别也很大,一般来讲有高优任务和低优任务,其中低优任务可以随意杀死,不需要保证SLO。

重点

售卖模型 和 QoS

image.png

image.png

控制面

  • Scheduler
    • Elastic Quota
    • resource overcommitment
    • resource reservation
    • Gang
    • 负载感知调度
    • Pod descheduling
  • Manager(Controller + webhook)
    • Colocation Profile 一套QoS描述约定,通过webhook增加标记帮助旧应用快速迁移到Koordinator
    • SLO 控制器。该控制器的核心职责是管理混部时的 SLO,如智能识别出集群中的异常节点并降低其权重,动态调整混部时的水位和压力策略,从而保证集群中 pod 的稳定性和吞吐量。
    • Recommender(即将推出),它使用 histograms 来统计和预测工作负载的资源使用细节,用来预估工作负载的峰值资源需求,从而支持更好地分散热点,提高混部的效率。支持VPA

数据面

  • Koordlet
    • 资源 Profiling
    • 资源隔离,避免低优Pod影响高优Pod
    • 干扰检测,对于运行中的 Pod,动态检测资源争夺
    • QoS 管理器,根据资源剖析、干扰检测结果和 SLO 配置,动态调整混部节点的水位
    • 资源调优,针对混部场景进行容器资源调优

一些依赖和特性

  • 基于社区 ElasticQuota CRD 实现了 Enhanced  ElasticQuota Scheduling
  • GPU调度强化(共享、超卖、百分比、多卡、NVLink感知)
  • CPU Suppress
  • CPU Burst
  • 主动驱逐

部署

部署完成后,api-resources会增加以下CRD

clustercolocationprofiles                         config.koordinator.sh          false        ClusterColocationProfile
devices                                           scheduling.koordinator.sh      false        Device
podmigrationjobs                  pmj             scheduling.koordinator.sh      false        PodMigrationJob
reservations                                      scheduling.koordinator.sh      false        Reservation
nodemetrics                                       slo.koordinator.sh             false        NodeMetric
nodeslos                                          slo.koordinator.sh             false        NodeSLO
elasticquotas                     eq,eqs          scheduling.sigs.k8s.io         true         ElasticQuota
podgroups                         pg,pgs          scheduling.sigs.k8s.io         true         PodGroup

他们主要作用:

参考

v1.0
v1.1
K8s ElasticQuota CRD
Koorinator Quota