跳到主要内容

发布公告 v1.0.0

我们很高兴地宣布 Apache YuniKorn 社区已投票发布 1.0.0。这是 Apache YuniKorn 从孵化项目毕业后的第一个版本。

Apache YuniKorn 是一个独立的资源调度程序,旨在管理和调度容器编排框架(如 Kubernetes)上的大数据工作负载,用于本地和云端用例。

概述

The Apache YuniKorn 社区在此版本中修复了 173 个 JIRA问题

发布负责人: Wilfred Spiegelenburg

发布日期: 2022-05-03

不兼容的更改

作为此版本的一部分,我们引入了许多不兼容的更改。

helm 更新

随着对 helm chart 的更改,从旧版本使用 helm 升级到 1.0.0 可能无法正常执行。 解决方法是先卸载旧版本,然后执行当前版本的全新安装。

配置更改

队列配置现在可以支持度量修饰符。 这会改变配额值在配置中的解释方式。 在 1.0.0 之前,所有内存值都被解释为 megabytes 而 vcore(cpu) 值被解释为 milli cores。 从 1.0.0 开始,内存值在 bytes 中指定,vcore 在 cores YUNIKORN-629 中指定。

要保持配置中值的相同解释,请对 1.0.0 之前的配置进行如下更改:

类型修改旧值新值
memory添加 Mmemory: 2048memory: 2048M
vcore添加 mvcore: 250vcore: 250m
othernonelicense: 1license: 1

资源展示与通信

k8shim 将 pod 和其他对象的内存资源转换为 megabytes 可能会导致 Kubernetes 工具和 YuniKorn 占用的大小之间存在差异。 这可能会导致围绕节点匹配和节点自动缩放而产生问题。 在 1.0.0 中,所有内存资源在用于计算和通信之前都转换为 bytes YUNIKORN-1105

所有 REST 响应对象中的资源不再是单个字符串,而是使用每个资源类型的键值对的 JSON 结构。 新资源 JSON 响应对象的示例:

"allocatedResource": {
"memory": 54000000,
"vcore": 80
}

REST 返回的内容里不包括或不支持度量修饰符。 在 REST 响应对象的所有内存值都会转为 bytes 。 CPU值(即vcore)没有改变,仍然使用 milli cores。 REST 文档已更新,从而可以显示新的资源结构 YUNIKORN-165

REST 响应中的 Timestamp

REST API 中的所有 Timestamp 现在都返回为自 UTC 1970-01-01 时间以来经过的纳秒数。 int64 中可以显示的时间范围是从 1678 年到 2262 年,详情参见 Go Time UnixNano。 而早期版本中的 Timestamp 作为 REST 响应内容的一部分被转换为字符串进行创建 YUNIKORN-1170

删除旧的 REST API 接口

REST API 已更新为支持指定分区的接口。不带分区参数的旧版本接口已被删除:

  • /ws/v1/queues 替换为 /ws/v1/partition/{partitionName}/queues
  • /ws/v1/apps 替换为 ws/v1/partition/{partitionName}/queues/{queueName}/application
  • /ws/v1/nodes 替换为 /ws/v1/partition/{partitionName}/nodes

YUNIKORN-954

主要更新

插件模式的技术预览

作为此版本的一部分,我们添加了一种新的部署模式,该模式建立在 调度框架 之上。 这是调度器 k8shim 工作方式的一个重大变化。由于实现尚未成熟,此种部署模式被视为一种技术预览。 相关的设计文档可以在网站上找到 K8s 调度器插件 。 标准和插件的部署镜像都是通过默认构建程序构建的。 部署类型之间的选择是 基于 helm 变量 来进行的区分。

内存和 CPU 使用修复

作为该版本的一部分,主程序和 k8shim 之间的通信已被简化 YUNIKORN-462。 使用这些更改简化了 k8shim 中的缓存使用,并修复了许多内存泄漏的问题。 可以在 jiras YUNIKORN-876YUNIKORN-1100 中查看更详细的信息。

如果未执行调度操作,主程序中的空闲循环已被移除,这会降低调度器的 CPU 使用率 YUNIKORN-1106

安全改进

为了提高安全性,我们已经进行了许多更改。

调度器不再使用 cluster-admin 的权限。 调度器使用的权限与默认调度程序使用的权限相同。 添加了占位 pod 所需的一些额外权限 YUNIKORN-997

docker 镜像中的进程不再以 root 用户身份运行,而是使用 yunikorn 用户 YUNIKORN-1111

准入控制器使用的证书会在到期前自动轮换,从而不会导致停机 YUNIKORN-1119

占位处理会运行一个简单的暂停镜像。在默认情况下,此暂停镜像是从外部镜像存储库加载的。 YuniKorn 现在允许为占位操作设置自定义镜像。可以为 deployment 指定一个映镜像。 它接受一个镜像名称,包括一个主机名,可以使用本地存储库进行 air-gapped deployments YUNIKORN-638

提示

占位镜像应该是轻量级的镜像,最好是一个暂停或休眠镜像。

验证工具

作为发布的一部分,我们提供了一个新的脚本,可允许创建一个简单的基于 kind 的 Kubernetes 集群。

您需要解压档案文件并按照 README.md 文件中的说明构建镜像。 运行脚本以获取更多说明并列出验证版本所需的工具:

./validate_cluster.sh

创建的 kind 集群是一个小型但功能齐全的 Kubernetes 集群,这里面部署了 Apache YuniKorn YUNIKORN-764

社区

自最新的发布以来,Apache YuniKorn 已从孵化项目毕业。