Karmada v1.16 版本发布!支持多模板工作负载调度
Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。
Karmada v1.16 版本现已发布,本版本包含下列新增特性:
- 支持多模板工作负载调度
- 使用 Webster 算法增强副本分配
- 驱逐队列速率限制
- 持续的性能优化
这些特性使 Karmada 在处理大规模、复杂的多集群场景时更加成熟和可靠。我们鼓励您升级到 v1.16.0,体验这些新功能带来的价值。
新特性概览
支持多模板工作负载调度
当前许多AI/大数据应用由多个组件构成,这些组件之间相互协作以完成复杂的计算任务。例如:
- FlinkDeployment 包含 JobManager 和 TaskManager,
- SparkApplication 包含 Driver 和 Executor,
- RayCluster 包含 Head 和 Worker 节点。
在 Karmada v1.16.0 中,我们引入了多模板调度,这是一项全新的能力,使得 Karmada 能够将由多个相互关联组件组成的多模板工作负载完整且统一地调度到具有充足资源的单个成员集群中。
此功能建立在 v1.15 版本引入的多模板工作负载资源精确感知功能之上,该支持使 Karmada 能够 准确理解复杂工作负载的资源拓扑。在 v1.16 中,调度器利用这些信息来:
- 基于 ResourceQuota 限制来估算成员集群可以容纳的完整的多模板工作负载数;
- 利用成员集群中实际节点的可用资源来预测工作负载的可调度性。
当前版本为以下多模板工作负载类型提供了内置的资源解释器:
- FlinkDeployment (flink.apache.org/v1beta1)
- SparkApplication (sparkoperator.k8s.io/v1beta2)
- Job (batch.volcano.sh/v1alpha1)
- MPIJob (kubeflow.org/v2beta1)
- RayCluster (ray.io/v1)
- RayJob (ray.io/v1)
- TFJob (kubeflow.org/v1)
- PyTorchJob (kubeflow.org/v1)
如果您使用的是其他的自定义多模板工作负载,也可以通过扩展 Karmada 的资源解释器来支持它们。
让我们举个简单的例子,假设您有一个 FlinkDeployment,其资源配置如下:
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
name: flink-example
spec:
jobManager:
replicas: 1
resource:
cpu: 1
memory: "1024m"
taskManager:
replicas: 2
resource:
cpu: 2
memory: "2048m"
启用多模板调度功能后,Karmada 会:
- 通过资源解释器准确解析出 JobManager 和 TaskManager 的资源需求;
- 评估每个成员集群是否有足够资源容纳完整的 FlinkDeployment(1 个 JobManager + 2 个 TaskManager);
- 将整个 FlinkDeployment 调度到单个满足条件的集群。
此功能的发布标志着 Karmada 在支持AI/大数据应用方面迈出了重要一步——将精准的资源解释、配额感知计算和跨集群调度融合在一个统一的框架中。
使用 Webster 算法增强副本分配
Karmada 支持多种副本调度策略,如 DynamicWeight、Aggregated 和 StaticWeight,用于在成员集群之间分配工作负载的副本。这些策略的核心在于将集群权重转化为实际副本数量的算法。
在之前的版本中,副本分配算法存在一定的局限性:
- 非单调性:当总副本数增加时,某些集群可能意外地获得更少的副本.
- 缺乏强幂等性:相同的输入可能产生不同的输出.
- 不公平的余数分配:在具有相同权重的集群之间分配剩余副本时缺乏合理的优先级策略。
在当前版本中,我们引入了 Webster 方法(也称为 Sainte-Laguë 方法)来改进跨集群调度期间的副本分配。通过采用 Webster 算法,Karmada 现在实现了:
- 单调副本分配:增加总副本数绝不会导致任何集群丢失副本,确保行为一致且直观。
- 剩余副本的公平处理:在权重相等的集群间分配副本时,优先考虑当前副本数较少的集群。这种“小优先”方式有助于促进均衡部署,更好地满足高可用性(HA)需求。
此次更新增强了跨集群工作负载分配的稳定性、公平性和可预测性,使多集群环境中的副本调度更加稳健。