Skip to content

Commit c068feb

Browse files
authored
Merge pull request #6218 from piotrwrotniak/adddocs
Documents startup/status/ignore node taints.
2 parents 557b0f2 + 6fd2cb5 commit c068feb

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

cluster-autoscaler/FAQ.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ this document:
2525
* [Is Cluster Autoscaler compatible with CPU-usage-based node autoscalers?](#is-cluster-autoscaler-compatible-with-cpu-usage-based-node-autoscalers)
2626
* [How does Cluster Autoscaler work with Pod Priority and Preemption?](#how-does-cluster-autoscaler-work-with-pod-priority-and-preemption)
2727
* [How does Cluster Autoscaler remove nodes?](#how-does-cluster-autoscaler-remove-nodes)
28+
* [How does Cluster Autoscaler treat nodes with status/startup/ignore taints?](#how-does-cluster-autoscaler-treat-nodes-with-taints)
2829
* [How to?](#how-to)
2930
* [I'm running cluster with nodes in multiple zones for HA purposes. Is that supported by Cluster Autoscaler?](#im-running-cluster-with-nodes-in-multiple-zones-for-ha-purposes-is-that-supported-by-cluster-autoscaler)
3031
* [How can I monitor Cluster Autoscaler?](#how-can-i-monitor-cluster-autoscaler)
@@ -249,7 +250,37 @@ Cluster Autoscaler terminates the underlying instance in a cloud-provider-depend
249250
250251
It does _not_ delete the [Node object](https://kubernetes.io/docs/concepts/architecture/nodes/#api-object) from Kubernetes. Cleaning up Node objects corresponding to terminated instances is the responsibility of the [cloud node controller](https://kubernetes.io/docs/concepts/architecture/cloud-controller/#node-controller), which can run as part of [kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/) or [cloud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/).
251252
253+
### How does Cluster Autoscaler treat nodes with status/startup/ignore taints?
252254
255+
### Startup taints
256+
Startup taints are meant to be used when there is an operation that has to complete before any pods can run on the node, e.g. drivers installation.
257+
258+
Cluster Autoscaler treats nodes tainted with `startup taints` as unready, but taken into account during scale up logic, assuming they will become ready shortly.
259+
260+
**However, if the substantial number of nodes are tainted with `startup taints` (and therefore unready) for an extended period of time the Cluster Autoscaler
261+
might stop working as it might assume the cluster is broken and should not be scaled (creating new nodes doesn't help as they don't become ready).**
262+
263+
Startup taints are defined as:
264+
- all taints with the prefix `startup-taint.cluster-autoscaler.kubernetes.io/`,
265+
- all taints defined using `--startup-taint` flag.
266+
267+
### Status taints
268+
Status taints are meant to be used when a given node should not be used to run pods for the time being.
269+
270+
Cluster Autoscaler internally treats nodes tainted with `status taints` as ready, but filtered out during scale up logic.
271+
272+
This means that even though the node is ready, no pods should run there as long as the node is tainted and if necessary a scale-up should occur.
273+
274+
Status taints are defined as:
275+
- all taints with the prefix `status-taint.cluster-autoscaler.kubernetes.io/`,
276+
- all taints defined using `--status-taint` flag.
277+
278+
### Ignore taints
279+
Ignore taints are now deprecated and treated as startup taints.
280+
281+
Ignore taints are defined as:
282+
- all taints with the prefix `ignore-taint.cluster-autoscaler.kubernetes.io/`,
283+
- all taints defined using `--ignore-taint` flag.
253284
****************
254285
255286
# How to?

0 commit comments

Comments
 (0)