发布公告 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 | 添加 M | memory: 2048 | memory: 2048M |
vcore | 添加 m | vcore: 250 | vcore: 250m |
other | none | license: 1 | license: 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
主要更新
插件模式的技术预览
作为此版本的一部分,我们添加了一种新的部署模式,该模式建立在 调度框架 之上。 这是调度器 k8shim 工作方式的一个重大变化。由于实现尚未成熟,此种部署模式被视为一种技术预览。 相关的设计文档可以在网站上找到 K8s 调度器插件 。 标准和插件的部署镜像都是通过默认构建程序构建的。 部署类型之间的选择是 基于 helm 变量 来进行的区分。
内存和 CPU 使用修复
作为该版本的一部分,主程序和 k8shim 之间的通信已被简化 YUNIKORN-462。 使用这些更改简化了 k8shim 中的缓存使用,并修复了许多内存泄漏的问题。 可以在 jiras YUNIKORN-876 和 YUNIKORN-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 已从孵化项目毕业。