创建虚拟集群和运行中虚拟集群添加服务时(如创建RayCluster)支持将EMR服务 Pod 调度到具有特定标签的节点上。本文介绍如何对调度策略进行配置。
说明
创建虚拟集群时,仅资源类型为已有 VKE 资源的场景支持配置调度策略。
{ "nodeAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [ { "matchExpressions": [ { "key": "emr-local-disk", "operator": "Exists" } ] } ] } } }
不同的服务默认调度策略不一样,本章节详细列出 EMR各核心服务组件的默认 Pod 调度策略。
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 }, { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/cluster-role", "operator": "In", "values": [ "proton-data-server" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": [ { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-master" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "master" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" } ] } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 }, { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "hive-metastore" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 100 } ], "requiredDuringSchedulingIgnoredDuringExecution": null } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": [ { "labelSelector": { "matchExpressions": [ { "key": "app", "operator": "In", "values": [ "zk" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" } ] } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 }, { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "kyuubi" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 100 } ], "requiredDuringSchedulingIgnoredDuringExecution": null } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "preference": { "matchExpressions": [ { "key": "emr-local-disk", "operator": "DoesNotExist", "values": null } ], "matchFields": null }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": null }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/role", "operator": "In", "values": [ "worker" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 }, { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "volcano-admission" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 100 } ], "requiredDuringSchedulingIgnoredDuringExecution": null } }
"affinity": { "nodeAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": null, "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [ { "matchExpressions": [ { "key": "emr-local-disk", "operator": "Exists", "values": null } ], "matchFields": null } ] } }, "podAffinity": null, "podAntiAffinity": { "preferredDuringSchedulingIgnoredDuringExecution": [ { "podAffinityTerm": { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-master" ] }, { "key": "app.kubernetes.io/cluster-role", "operator": "In", "values": [ "proton-meta-server" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" }, "weight": 1 } ], "requiredDuringSchedulingIgnoredDuringExecution": [ { "labelSelector": { "matchExpressions": [ { "key": "app.kubernetes.io/name", "operator": "In", "values": [ "celeborn-worker" ] }, { "key": "app.kubernetes.io/cluster-role", "operator": "In", "values": [ "proton-data-server" ] } ], "matchLabels": null }, "namespaceSelector": null, "namespaces": null, "topologyKey": "kubernetes.io/hostname" } ] } }