Skip to content

Commit e88861a

Browse files
docs: address review feedback on DaemonSet overhead note
Soften the PriorityClass guidance, which is best-effort rather than a guarantee, and add startup taints as the other option for keeping workload pods off a node until DaemonSets are ready. Also reflow the section to the one-sentence-per-line style used throughout scheduling.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: Vincent Creusot <vincent.creusot@gmail.com>
1 parent 2bef336 commit e88861a

5 files changed

Lines changed: 35 additions & 40 deletions

File tree

website/content/en/docs/concepts/scheduling.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,16 @@ Security groups for pods are [currently unsupported for Windows nodes](https://d
133133

134134
### DaemonSet overhead
135135

136-
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own
137-
requests, and picks an instance type large enough for the total.
136+
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own requests, and picks an instance type large enough for the total.
138137

139-
This overhead is only used to size the node. Karpenter does not reserve
140-
that capacity on the node after it joins the cluster, and it does not bind
141-
pods itself.
138+
This overhead is only used to size the node.
139+
Karpenter does not reserve that capacity on the node after it joins the cluster, and it does not bind pods itself.
142140

143141
{{% alert title="Note" color="primary" %}}
144-
To guarantee DaemonSets get their capacity, give them a
145-
[PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/)
146-
higher than your workloads with `preemptionPolicy: PreemptLowerPriority`.
142+
Options to help DaemonSet pods get that capacity include:
143+
144+
* [Startup taints]({{<ref "./nodepools/#spectemplatespecstartuptaints" >}}) will keep workload pods off the node until an external agent removes them, so DaemonSets that tolerate those taints will schedule first.
145+
* Setting a sufficiently high [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) on your DaemonSet pods will cause kube-scheduler to preempt lower-priority pods to make room for them. This is best-effort: pods of equal or higher priority will never be preempted, and PodDisruptionBudgets are only honored on a best-effort basis.
147146
{{% /alert %}}
148147

149148
## Selecting nodes

website/content/en/v1.0/concepts/scheduling.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,16 @@ Security groups for pods are [currently unsupported for Windows nodes](https://d
125125

126126
### DaemonSet overhead
127127

128-
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own
129-
requests, and picks an instance type large enough for the total.
128+
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own requests, and picks an instance type large enough for the total.
130129

131-
This overhead is only used to size the node. Karpenter does not reserve
132-
that capacity on the node after it joins the cluster, and it does not bind
133-
pods itself.
130+
This overhead is only used to size the node.
131+
Karpenter does not reserve that capacity on the node after it joins the cluster, and it does not bind pods itself.
134132

135133
{{% alert title="Note" color="primary" %}}
136-
To guarantee DaemonSets get their capacity, give them a
137-
[PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/)
138-
higher than your workloads with `preemptionPolicy: PreemptLowerPriority`.
134+
Options to help DaemonSet pods get that capacity include:
135+
136+
* [Startup taints]({{<ref "./nodepools/#spectemplatespecstartuptaints" >}}) will keep workload pods off the node until an external agent removes them, so DaemonSets that tolerate those taints will schedule first.
137+
* Setting a sufficiently high [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) on your DaemonSet pods will cause kube-scheduler to preempt lower-priority pods to make room for them. This is best-effort: pods of equal or higher priority will never be preempted, and PodDisruptionBudgets are only honored on a best-effort basis.
139138
{{% /alert %}}
140139

141140
## Selecting nodes

website/content/en/v1.12/concepts/scheduling.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,16 @@ Security groups for pods are [currently unsupported for Windows nodes](https://d
133133

134134
### DaemonSet overhead
135135

136-
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own
137-
requests, and picks an instance type large enough for the total.
136+
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own requests, and picks an instance type large enough for the total.
138137

139-
This overhead is only used to size the node. Karpenter does not reserve
140-
that capacity on the node after it joins the cluster, and it does not bind
141-
pods itself.
138+
This overhead is only used to size the node.
139+
Karpenter does not reserve that capacity on the node after it joins the cluster, and it does not bind pods itself.
142140

143141
{{% alert title="Note" color="primary" %}}
144-
To guarantee DaemonSets get their capacity, give them a
145-
[PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/)
146-
higher than your workloads with `preemptionPolicy: PreemptLowerPriority`.
142+
Options to help DaemonSet pods get that capacity include:
143+
144+
* [Startup taints]({{<ref "./nodepools/#spectemplatespecstartuptaints" >}}) will keep workload pods off the node until an external agent removes them, so DaemonSets that tolerate those taints will schedule first.
145+
* Setting a sufficiently high [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) on your DaemonSet pods will cause kube-scheduler to preempt lower-priority pods to make room for them. This is best-effort: pods of equal or higher priority will never be preempted, and PodDisruptionBudgets are only honored on a best-effort basis.
147146
{{% /alert %}}
148147

149148
## Selecting nodes

website/content/en/v1.13/concepts/scheduling.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,16 @@ Security groups for pods are [currently unsupported for Windows nodes](https://d
133133

134134
### DaemonSet overhead
135135

136-
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own
137-
requests, and picks an instance type large enough for the total.
136+
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own requests, and picks an instance type large enough for the total.
138137

139-
This overhead is only used to size the node. Karpenter does not reserve
140-
that capacity on the node after it joins the cluster, and it does not bind
141-
pods itself.
138+
This overhead is only used to size the node.
139+
Karpenter does not reserve that capacity on the node after it joins the cluster, and it does not bind pods itself.
142140

143141
{{% alert title="Note" color="primary" %}}
144-
To guarantee DaemonSets get their capacity, give them a
145-
[PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/)
146-
higher than your workloads with `preemptionPolicy: PreemptLowerPriority`.
142+
Options to help DaemonSet pods get that capacity include:
143+
144+
* [Startup taints]({{<ref "./nodepools/#spectemplatespecstartuptaints" >}}) will keep workload pods off the node until an external agent removes them, so DaemonSets that tolerate those taints will schedule first.
145+
* Setting a sufficiently high [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) on your DaemonSet pods will cause kube-scheduler to preempt lower-priority pods to make room for them. This is best-effort: pods of equal or higher priority will never be preempted, and PodDisruptionBudgets are only honored on a best-effort basis.
147146
{{% /alert %}}
148147

149148
## Selecting nodes

website/content/en/v1.14/concepts/scheduling.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,16 @@ Security groups for pods are [currently unsupported for Windows nodes](https://d
133133

134134
### DaemonSet overhead
135135

136-
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own
137-
requests, and picks an instance type large enough for the total.
136+
When Karpenter calculates the size of a node for a set of pending pods, it adds the resource requests of every DaemonSet that would run on that node to the pods' own requests, and picks an instance type large enough for the total.
138137

139-
This overhead is only used to size the node. Karpenter does not reserve
140-
that capacity on the node after it joins the cluster, and it does not bind
141-
pods itself.
138+
This overhead is only used to size the node.
139+
Karpenter does not reserve that capacity on the node after it joins the cluster, and it does not bind pods itself.
142140

143141
{{% alert title="Note" color="primary" %}}
144-
To guarantee DaemonSets get their capacity, give them a
145-
[PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/)
146-
higher than your workloads with `preemptionPolicy: PreemptLowerPriority`.
142+
Options to help DaemonSet pods get that capacity include:
143+
144+
* [Startup taints]({{<ref "./nodepools/#spectemplatespecstartuptaints" >}}) will keep workload pods off the node until an external agent removes them, so DaemonSets that tolerate those taints will schedule first.
145+
* Setting a sufficiently high [PriorityClass](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) on your DaemonSet pods will cause kube-scheduler to preempt lower-priority pods to make room for them. This is best-effort: pods of equal or higher priority will never be preempted, and PodDisruptionBudgets are only honored on a best-effort basis.
147146
{{% /alert %}}
148147

149148
## Selecting nodes

0 commit comments

Comments
 (0)