资源风味

一个对象,你可以定义它来描述集群中可用的资源。

集群中的资源通常不是同质的。资源可能在以下方面有所不同

  • 定价和可用性(例如,现货与按需 VM)
  • 架构(例如,x86 与 ARM CPU)
  • 品牌和型号(例如,Radeon 7000 与 Nvidia A100 与 T4 GPU)

ResourceFlavor 是一个代表这些资源变化的对象,它允许你通过标签、污点和容忍度将它们与集群节点关联起来。

注意:如果集群中的资源是同质的,你可以使用 空 ResourceFlavor,而不是向自定义 ResourceFlavor 添加标签。

一个示例 ResourceFlavor 如下所示

apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
  name: "spot"
spec:
  nodeLabels:
    instance-type: spot
  nodeTaints:
  - effect: NoSchedule
    key: spot
    value: "true"
  tolerations:
  - key: "spot-taint"
    operator: "Exists"
    effect: "NoSchedule"

你可以使用 .metadata.name 字段从 .spec.resourceGroups[*].flavors[*].name 字段中的 ClusterQueue 引用 ResourceFlavor。

ResourceFlavor 标签

需要 Kubernetes 1.23 或更新版本

要将 ResourceFlavor 与集群中节点的子集关联,您可以使用匹配的节点标签(唯一标识节点)配置 .spec.nodeLabels 字段。如果您正在使用 集群自动扩缩器(或等效控制器),请确保在添加新节点时控制器配置为添加这些标签。

为了确保 工作负载 中的 Pod 在 Kueue 选择的 flavor 关联的节点上运行,Kueue 执行以下步骤

  1. 在接纳工作负载时,Kueue 根据 工作负载 的 PodSpec 中的 .nodeSelector.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution 字段评估 ResourceFlavor 标签。与工作负载的节点亲和性不匹配的 ResourceFlavors 无法分配给工作负载的 podSet。

  2. 工作负载接纳后

    • Kueue 将 ResourceFlavor 标签添加到基础工作负载 Pod 模板的 .nodeSelector 中。如果工作负载尚未将 ResourceFlavor 标签指定为其 nodeSelector 的一部分,则会发生这种情况。

      例如,对于 batch/v1.Job,Kueue 将标签添加到 .spec.template.spec.nodeSelector 字段。这可确保工作负载的 Pod 只能调度到 Kueue 分配给工作负载的 flavor 所针对的节点上。

    • Kueue 将容忍度添加到基础工作负载 Pod 模板中。

      例如,对于 batch/v1.Job,Kueue 将容忍度添加到 .spec.template.spec.tolerations 字段。这允许工作负载 Pod 调度到具有特定污点的节点上。

ResourceFlavor 污点

要限制 ResourceFlavor 的使用,您可以配置 .spec.nodeTaints 字段。这些污点通常应与与 ResourceFlavor 关联的节点的污点匹配。

ResourceFlavor 上的污点与 节点污点 的工作方式类似。对于 Kueue “准许”工作负载使用 ResourceFlavor,工作负载中的 PodSpecs 应具有对其的容忍度。与 ResourceFlavor 标签 的行为相反,Kueue 不会为风味污点添加容忍度。

空 ResourceFlavor

如果你的集群具有同构资源,或者如果你不需要分别管理资源的不同风味的配额,你可以创建一个没有任何标签或污点的 ResourceFlavor。此类 ResourceFlavor 称为空 ResourceFlavor,其定义如下所示

apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
  name: default-flavor

接下来是什么?



最后修改时间为 2024 年 3 月 15 日:修复 resource_flavor.md 中的错别字(#1860)(041a57e7)