在多集群中运行 LeaderWorkerSet
运行 MultiKueue 调度的 LeaderWorkerSet。
在你开始之前
查阅 MultiKueue 安装指南以了解如何正确设置 MultiKueue 集群。
工作原理
LeaderWorkerSet 每个副本创建一个 Workload,这在 MultiKueue 中需要特殊处理。
来自 LeaderWorkerSet 的所有 Workload 会被原子性地分配到同一个工作集群:
- 每个工作负载等待所有 Workload 组成员存在于管理集群上。
- 主 Workload(索引 0)被提名并分配到目标工作集群。
- 一旦远程 Workload 被工作集群接受,主要的
ClusterName就会被设置。 - 所有其他 Workload 组成员根据
ClusterName调度到相同的工作集群。 - 在所有 Workload 同步完成后,LeaderWorkerSet 会被在工作集群上创建出来。
这确保了 LeaderWorkerSet 的所有副本都会在同一工作集群上一起运行。
局限性
LeaderWorkerSet 当前不支持 managedBy 字段。
由于这一限制,要获取 LeaderWorkerSet 的实际状态,你需要访问工作集群。
示例
这是一个示例 LeaderWorkerSet:
apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
name: nginx-leaderworkerset
labels:
app: nginx
kueue.x-k8s.io/queue-name: user-queue
spec:
replicas: 2
leaderWorkerTemplate:
leaderTemplate:
spec:
containers:
- name: nginx-leader
image: registry.k8s.io/nginx-slim:0.27
resources:
requests:
cpu: "100m"
ports:
- containerPort: 80
size: 3
workerTemplate:
spec:
containers:
- name: nginx-worker
image: registry.k8s.io/nginx-slim:0.27
resources:
requests:
cpu: "200m"
ports:
- containerPort: 80你可以使用以下命令创建 LeaderWorkerSet:
kubectl create -f sample-leaderworkerset.yaml
反馈
这个页面有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.