You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md
+45-9Lines changed: 45 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,9 +12,47 @@ products:
12
12
13
13
A [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) (PDB) allows you to limit the disruption to your application when its pods need to be rescheduled for some reason such as upgrades or routine maintenance work on the Kubernetes nodes.
14
14
15
-
ECK manages a default PDB per {{es}} resource. It allows one {{es}} Pod to be taken down, as long as the cluster has a `green` health. Single-node clusters are not considered highly available and can always be disrupted.
15
+
{{eck}} manages either a single default PDB, or multiple PDBs per {{es}} resource depending on the license level of the ECK installation.
16
16
17
-
In the {{es}} specification, you can change the default behavior as follows:
17
+
:::{note}
18
+
In {{eck}} 3.1 and earlier, all clusters follow the [default PodDisruptionBudget rules](#default-pdb-rules), regardless of license type.
19
+
:::
20
+
21
+
## Advanced rules (Enterprise license required)
22
+
```{applies_to}
23
+
deployment:
24
+
eck: ga 3.2
25
+
```
26
+
27
+
In Elasticsearch clusters managed by ECK and licensed with an Enterprise license, a separate PDB is created for each type of `nodeSet` defined in the manifest. This setup allows Kubernetes upgrade or maintenance operations to be executed more quickly. Each PDB permits one Elasticsearch Pod per `nodeSet` to be disrupted at a time, provided the Elasticsearch cluster maintains the health status described in the following table:
28
+
29
+
| Role | Cluster health required | Notes |
30
+
|------|------------------------|--------|
31
+
| master | Yellow ||
32
+
| data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. |
33
+
| data_frozen | Yellow | Since frozen data tier nodes only host partially mounted indices backed by searchable snapshots additional disruptions are allowed. |
34
+
| ingest | Yellow ||
35
+
| ml | Yellow ||
36
+
| coordinating | Yellow ||
37
+
| transform | Yellow ||
38
+
| remote_cluster_client | Yellow ||
39
+
40
+
Single-node clusters are not considered highly available and can always be disrupted regardless of license type.
In {{eck}} 3.1 and earlier, all clusters follow this behavior regardless of license type.
45
+
:::
46
+
47
+
In {{eck}} clusters that do not have an Enterprise license, one {{es}} Pod can be taken down at a time, as long as the cluster has a health status of `green`. Single-node clusters are not considered highly available and can always be disrupted.
48
+
49
+
## Overriding the default behavior
50
+
51
+
In the {{es}} specification, you can change the default behavior in two ways. By fully overriding the PodDisruptionBudget within the {{es}} spec or by disabling the default PodDisruptionBudget and specifying one or more PodDisruptionBudget(s).
52
+
53
+
### Specify your own PodDisruptionBudget [k8s-specify-own-pdb]
54
+
55
+
You can fully override the default PodDisruptionBudget by specifying your own PodDisruptionBudget in the {{es}} spec.
This will cause the ECK operator to only create the PodDisruptionBudget defined in the spec. It will not create any additional PodDisruptionBudgets.
76
+
77
+
::::{note}
38
78
[`maxUnavailable`](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#arbitrary-controllers-and-selectors) cannot be used with an arbitrary label selector, therefore `minAvailable` is used in this example.
39
79
::::
40
80
81
+
### Create a PodDisruptionBudget per nodeSet [k8s-pdb-per-nodeset]
41
82
42
-
## Pod disruption budget per nodeset [k8s-pdb-per-nodeset]
43
-
44
-
You can specify a PDB per nodeset or node role.
83
+
You can specify a PDB per `nodeSet` or node role.
45
84
46
85
```yaml subs=true
47
86
apiVersion: elasticsearch.k8s.elastic.co/v1
@@ -81,6 +120,3 @@ spec:
81
120
4. Pod disruption budget applies on all master nodes.
82
121
5. Specify pod disruption budget to have 1 hot node available.
83
122
6. Pod disruption budget applies on nodes of the same nodeset.
0 commit comments