From 8c834f22c0f08a61a70c7768f2644f7aa4db420e Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Mon, 11 Jan 2021 15:18:08 +0800 Subject: [PATCH] Resync concepts/scheduling-eviction/assign-pod-node.md --- .../scheduling-eviction/assign-pod-node.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md b/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md index 47ebab9f88..807e674e20 100644 --- a/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md +++ b/content/zh/docs/concepts/scheduling-eviction/assign-pod-node.md @@ -347,6 +347,72 @@ MatchExpressions,则添加“权重”到总和。 然后将这个评分与该节点的其他优先级函数的评分进行组合。 总分最高的节点是最优选的。 + +#### 逐个调度方案中设置节点亲和性 {#node-affinity-per-scheduling-profile} + +{{< feature-state for_k8s_version="v1.20" state="beta" >}} + + +在配置多个[调度方案](/zh/docs/reference/scheduling/config/#multiple-profiles)时, +你可以将某个方案与节点亲和性关联起来,如果某个调度方案仅适用于某组 +特殊的节点时,这样做是很有用的。 +要实现这点,可以在[调度器配置](/zh/docs/reference/scheduling/config/)中为 +[`NodeAffinity` 插件](/zh/docs/reference/scheduling/config/#scheduling-plugins) +添加 `addedAffinity` 参数。 +例如: + +```yaml +apiVersion: kubescheduler.config.k8s.io/v1beta1 +kind: KubeSchedulerConfiguration + +profiles: + - schedulerName: default-scheduler + - schedulerName: foo-scheduler + pluginConfig: + - name: NodeAffinity + args: + addedAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: scheduler-profile + operator: In + values: + - foo +``` + + +这里的 `addedAffinity` 除遵从 Pod 规约中设置的节点亲和性之外,还 +适用于将 `.spec.schedulerName` 设置为 `foo-scheduler`。 + + +{{< note >}} +DaemonSet 控制器[为 DaemonSet 创建 Pods](/zh/docs/concepts/workloads/controllers/daemonset/#scheduled-by-default-scheduler), +但该控制器不理会调度方案。因此,建议你保留一个调度方案,例如 +`default-scheduler`,不要在其中设置 `addedAffinity`。 +这样,DaemonSet 的 Pod 模板将会使用此调度器名称。 +否则,DaemonSet 控制器所创建的某些 Pods 可能持续处于不可调度状态。 +{{< /note >}} +