0770-Apache YuniKorn (Incubating) 0.8发布
原文作者:杨巍威
翻译:Fayson
译文修订:杨巍威
回顾:什么是YuniKorn Scheduler
本文插图
Apache YuniKorn(Incubating)是一个独立的资源调度程序 , 旨在将针对大数据工作负载的高级调度功能引入容器化平台 。 具体可以参考前面的文章《YuniKorn:一个通用的资源调度程序》 。
自上次发表介绍YuniKorn的文章后 , 我们很荣幸的宣布2020年1月 , YuniKorn被Apache孵化器所接受!加入Apache Software Foundation可以帮助我们更好的扩展尚处于发展阶段的YuniKorn社区 , 同时可以吸引更多不同的贡献者/用户加入我们 。 如果您有兴趣 , 请访问Apache YuniKorn网站和Github仓库:
https://yunikorn.apache.org/ https://github.com/apache/incubator-yunikorn-core/
0.8.0版本的新特性
YuniKorn 0.8.0版本是一个重要的里程碑 , 已经在大规模生产/临时(production/staging)环境中测试了几个月 。 我们认为这是第一个稳定版本 , 鼓励用户可以使用这个版本 。
http://yunikorn.apache.org/release/v0.8.0.html在接下来的章节中 , 我们将讨论0.8.0的新特性和一些性能基准测试 。
2.1 Dynamic Queue Management
使用此功能 , 用户可以通过设置放置规则(placement rules)来委派队列管理 。
https://github.com/apache/incubator-yunikorn-core/blob/master/docs/placement_rules.md放置规则提供了一种简单的声明性方式来定义动态队列 , 该队列会被自动创建和删除 。 最简单的一个用例就是将命名空间(namespace)和队列设置为一对一 , YuniKorn将为每个命名空间创建一个队列 , 参考:
https://github.com/apache/incubator-yunikorn-core/blob/master/docs/placement_rules.md#tag-rule使用这种方式 , 不需要其他设置即可在K8s集群上运行YuniKorn 。
2.2 Natively support K8s operators (Pluggable Application Management)
YuniKorn现在可以支持各种K8s operators , 这利用了pluggable application management的新特性:
https://github.com/apache/incubator-yunikorn-core/blob/master/docs/design/pluggable-app-management.md这个版本也打包了Spark-k8s-operator(alpha) , 提供对其原生的支持:
https://github.com/GoogleCloudPlatform/spark-on-k8s-operator借助Pluggable Application Management框架 , YuniKorn可以轻松地与第三方K8s operator进行集成 , 例如Spark-k8s-operator , Flink-k8s-operator , Kubeflow等 。
https://github.com/GoogleCloudPlatform/spark-on-k8s-operatorhttps://github.com/GoogleCloudPlatform/flink-on-k8s-operatorhttps://www.kubeflow.org/YuniKorn监视由这些operator定义的Custom Resource Definitions ,
https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/因此它可以无缝管理端到端的应用程序生命周期 。
2.3 Resource Reservation
在这个版本中 , YuniKorn社区重新设计了核心调度逻辑以包括资源预留(reservation)功能 。 在批量调度场景中 , 预留不仅可以避免大型/挑剔的资源请求被饿死 , 而且还可以避免队首阻塞(Head-of-line blocking, HOL)其他请求 。 调度程序会自动将队列和最适合节点上的资源为未完成的请求进行预留 。
2.4 Pluggable Node Sorting Policies
关于Pod的分布式 , YuniKorn中提供了2种内置节点排序策略 。 一个是FAIR , 它会试图将Pod均匀地分配到每个节点上 。 另一个是BIN-PACKING , 它尝试将Pod打包到最少数量的节点上 。 前一种适用于数据中心场景 , 它有助于平衡集群节点的压力 。 后者适合在云上使用 , 它可以在使用自动扩展时最大程度地减少节点实例的数量 , 以节省成本 。 节点排序策略是可插拔的 , 用户可以实现自己的策略并将其插入到调度程序 。