diff --git a/contributors/design-proposals/scheduling/schedule-DS-pod-by-scheduler.md b/contributors/design-proposals/scheduling/schedule-DS-pod-by-scheduler.md index c0c7dffa1..c7038eacb 100644 --- a/contributors/design-proposals/scheduling/schedule-DS-pod-by-scheduler.md +++ b/contributors/design-proposals/scheduling/schedule-DS-pod-by-scheduler.md @@ -45,22 +45,21 @@ This option is to leverage NodeAffinity feature to avoid introducing scheduler 1. DS controller filter nodes by nodeSelector, but does NOT check against scheduler’s predicates (e.g. PodFitHostResources) 2. For each node, DS controller creates a Pod for it with the following NodeAffinity + ```yaml + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - nodeSelectorTerms: + matchExpressions: + - key: kubernetes.io/hostname + operator: in + values: + - dest_hostname + ``` 3. When sync Pods, DS controller will map nodes and pods by this NodeAffinity to check whether Pods are started for nodes 4. In scheduler, DaemonSet Pods will stay pending if scheduling predicates fail. To avoid this, an appropriate priority must be set to all critical DaemonSet Pods. Scheduler will preempt other pods to ensure critical pods were scheduled even when the cluster is under resource pressure. -```yaml -nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - nodeSelectorTerms: - matchExpressions: - - key: kubernetes.io/hostname - operator: in - values: - - dest_hostname -``` - ## Reference * [DaemonsetController can't feel it when node has more resources, e.g. other Pod exits](https://github.com/kubernetes/kubernetes/issues/46935)