Skip to content

Commit 9906275

Browse files
naemonorhr323
authored andcommitted
Update eck pdb docs (elastic#2361)
The following elastic/cloud-on-k8s#8780 is planned to be released with the ECK 3.2/Stack 9.2 release. --------- Signed-off-by: Michael Montgomery <[email protected]>
1 parent 2d56513 commit 9906275

File tree

1 file changed

+45
-9
lines changed

1 file changed

+45
-9
lines changed

deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,47 @@ products:
1212

1313
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.
1414

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.
1616

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.
41+
42+
## Default rules (Basic license) [default-pdb-rules]
43+
:::{note}
44+
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.
1856

1957
```yaml
2058
apiVersion: elasticsearch.k8s.elastic.co/v1
@@ -34,14 +72,15 @@ spec:
3472
elasticsearch.k8s.elastic.co/cluster-name: quickstart
3573
```
3674
37-
::::{note}
75+
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}
3878
[`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.
3979
::::
4080

81+
### Create a PodDisruptionBudget per nodeSet [k8s-pdb-per-nodeset]
4182

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.
4584

4685
```yaml subs=true
4786
apiVersion: elasticsearch.k8s.elastic.co/v1
@@ -81,6 +120,3 @@ spec:
81120
4. Pod disruption budget applies on all master nodes.
82121
5. Specify pod disruption budget to have 1 hot node available.
83122
6. Pod disruption budget applies on nodes of the same nodeset.
84-
85-
86-

0 commit comments

Comments
 (0)