From fd4bc263385f599a244873de9a4e8b697c32daeb Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Fri, 1 Aug 2025 10:21:14 -0400 Subject: [PATCH 01/10] Adjusting ECK PDB documentation for upcoming changes. Signed-off-by: Michael Montgomery --- .../cloud-on-k8s/pod-disruption-budget.md | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 9ad648c6f4..f47fd001bb 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -12,7 +12,28 @@ products: 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. -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. +ECK manages either a single default PDB, or multiple PDBs per {{es}} resource according to the license available. + +## Enterprise licensed customers + +A separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDB allows one {{es}} Pod to be taken down as long as the cluster has the health defined in the following table: + +| Role | Cluster Health Required | Notes | +|------|------------------------|--------| +| Master | Yellow | | +| Data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. | +| Data Frozen | Yellow | Since the frozen tier are essentially stateless, managing searchable snapshots, additional disruptions are allowed. | +| Ingest | Yellow | | +| ML | Yellow | | +| Coordinating | Yellow | | +| Transform | Yellow | | +| Remote Cluster Client | Yellow | | + +Single-node clusters are not considered highly available and can always be disrupted. + +## Non-enterprise licensed customers + +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. In the {{es}} specification, you can change the default behavior as follows: @@ -34,7 +55,7 @@ spec: elasticsearch.k8s.elastic.co/cluster-name: quickstart ``` -::::{note} +::::{note} [`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. :::: @@ -81,6 +102,3 @@ spec: 4. Pod disruption budget applies on all master nodes. 5. Specify pod disruption budget to have 1 hot node available. 6. Pod disruption budget applies on nodes of the same nodeset. - - - From eb666dadbd74ca727ff720b45c45282b65e9fa5d Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Fri, 1 Aug 2025 10:26:15 -0400 Subject: [PATCH 02/10] Adjust wording. Signed-off-by: Michael Montgomery --- deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index f47fd001bb..5b687311a1 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -16,7 +16,7 @@ ECK manages either a single default PDB, or multiple PDBs per {{es}} resource ac ## Enterprise licensed customers -A separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDB allows one {{es}} Pod to be taken down as long as the cluster has the health defined in the following table: +A separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDBs allow one {{es}} Pod per nodeSet to simultaneously be taken down as long as the cluster has the health defined in the following table: | Role | Cluster Health Required | Notes | |------|------------------------|--------| From 9f29bba4d479a5282b6a363117abccee0d8f6fde Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Mon, 8 Sep 2025 09:41:33 -0500 Subject: [PATCH 03/10] Update docs per suggestion. Signed-off-by: Michael Montgomery --- .../cloud-on-k8s/pod-disruption-budget.md | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 5b687311a1..1aae67a2c3 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -14,11 +14,19 @@ A [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/confi ECK manages either a single default PDB, or multiple PDBs per {{es}} resource according to the license available. -## Enterprise licensed customers +:::{note} +In ECK 3.1 and earlier, all clusters follow the [non-enterprise behavior](#non-enterprise-licensed-customers), regardless of license type. +::: + +### Enterprise licensed customers +```{applies_to} +deployment: + eck: ga 3.2 +``` A separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDBs allow one {{es}} Pod per nodeSet to simultaneously be taken down as long as the cluster has the health defined in the following table: -| Role | Cluster Health Required | Notes | +| Role | Cluster health required | Notes | |------|------------------------|--------| | Master | Yellow | | | Data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. | @@ -27,14 +35,19 @@ A separate PDB is created for each type of nodeSet defined in the manifest allow | ML | Yellow | | | Coordinating | Yellow | | | Transform | Yellow | | -| Remote Cluster Client | Yellow | | +| Remote cluster client | Yellow | | Single-node clusters are not considered highly available and can always be disrupted. -## Non-enterprise licensed customers +### Non-enterprise licensed customers +:::{note} +In ECK 3.1 and earlier, all clusters follow this behavior regardless of license type. +::: 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. +## Overriding the default behavior + In the {{es}} specification, you can change the default behavior as follows: ```yaml @@ -55,14 +68,15 @@ spec: elasticsearch.k8s.elastic.co/cluster-name: quickstart ``` +This will cause the ECK operator to only create the PodDisruptionBudget defined in the spec and will not create any additional PodDisruptionBudgets. + ::::{note} [`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. :::: +## Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] -## Pod disruption budget per nodeset [k8s-pdb-per-nodeset] - -You can specify a PDB per nodeset or node role. +You can specify a PDB per nodeSet or node role. ```yaml apiVersion: elasticsearch.k8s.elastic.co/v1 From 34821aa1cb3768e256ecd5110c87b48c91b45779 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Tue, 30 Sep 2025 15:37:20 -0500 Subject: [PATCH 04/10] Review comments. Signed-off-by: Michael Montgomery --- .../cloud-on-k8s/pod-disruption-budget.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 1aae67a2c3..90e2149593 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -18,24 +18,24 @@ ECK manages either a single default PDB, or multiple PDBs per {{es}} resource ac In ECK 3.1 and earlier, all clusters follow the [non-enterprise behavior](#non-enterprise-licensed-customers), regardless of license type. ::: -### Enterprise licensed customers +## Enterprise licensed customers ```{applies_to} deployment: eck: ga 3.2 ``` -A separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDBs allow one {{es}} Pod per nodeSet to simultaneously be taken down as long as the cluster has the health defined in the following table: +In {{eck}} clusters licensed with an enterprise license, a separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDBs allow one {{es}} Pod per nodeSet to simultaneously be taken down as long as the cluster has the health defined in the following table: | Role | Cluster health required | Notes | |------|------------------------|--------| -| Master | Yellow | | -| Data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. | -| Data Frozen | Yellow | Since the frozen tier are essentially stateless, managing searchable snapshots, additional disruptions are allowed. | -| Ingest | Yellow | | -| ML | Yellow | | -| Coordinating | Yellow | | -| Transform | Yellow | | -| Remote cluster client | Yellow | | +| master | Yellow | | +| data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. | +| data_frozen | Yellow | Since data_frozen nodes are essentially stateless, managing searchable snapshots when compared to other data node types, additional disruptions are allowed. | +| ingest | Yellow | | +| ml | Yellow | | +| coordinating | Yellow | | +| transform | Yellow | | +| remote_cluster_client | Yellow | | Single-node clusters are not considered highly available and can always be disrupted. @@ -44,11 +44,13 @@ Single-node clusters are not considered highly available and can always be disru In ECK 3.1 and earlier, all clusters follow this behavior regardless of license type. ::: -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. +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. ## Overriding the default behavior -In the {{es}} specification, you can change the default behavior as follows: +In the {{es}} specification, you can change the default behavior in 2 ways. By fully overriding the PodDisruptionBudget within the {{es}} spec or by disabling the default PodDisruptionBudget and specifying one or more PodDisruptionBudget(s). + +### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] ```yaml apiVersion: elasticsearch.k8s.elastic.co/v1 @@ -68,13 +70,13 @@ spec: elasticsearch.k8s.elastic.co/cluster-name: quickstart ``` -This will cause the ECK operator to only create the PodDisruptionBudget defined in the spec and will not create any additional PodDisruptionBudgets. +This will cause the ECK operator to only create the PodDisruptionBudget defined in the spec. It will not create any additional PodDisruptionBudgets. ::::{note} [`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. :::: -## Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] +### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] You can specify a PDB per nodeSet or node role. From f358c99b1f165a3c5b02103453c818df6048b4ff Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Tue, 30 Sep 2025 16:48:39 -0500 Subject: [PATCH 05/10] Note about single node clusters. Signed-off-by: Michael Montgomery --- deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 58c4c5a531..4368a70f0a 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -37,7 +37,7 @@ In {{eck}} clusters licensed with an enterprise license, a separate PDB is creat | transform | Yellow | | | remote_cluster_client | Yellow | | -Single-node clusters are not considered highly available and can always be disrupted. +Single-node clusters are not considered highly available and can always be disrupted regardless of license type. ### Non-enterprise licensed customers :::{note} From 673a03febbc4bc876e0472b73fc56b9776136005 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Tue, 30 Sep 2025 17:02:40 -0500 Subject: [PATCH 06/10] Update hierarchy Signed-off-by: Michael Montgomery --- .../deploy/cloud-on-k8s/pod-disruption-budget.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 4368a70f0a..2cabc5810e 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -39,18 +39,18 @@ In {{eck}} clusters licensed with an enterprise license, a separate PDB is creat Single-node clusters are not considered highly available and can always be disrupted regardless of license type. -### Non-enterprise licensed customers +## Non-enterprise licensed customers :::{note} In ECK 3.1 and earlier, all clusters follow this behavior regardless of license type. ::: 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. -## Overriding the default behavior +### Overriding the default behavior In the {{es}} specification, you can change the default behavior in 2 ways. By fully overriding the PodDisruptionBudget within the {{es}} spec or by disabling the default PodDisruptionBudget and specifying one or more PodDisruptionBudget(s). -### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] +#### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] ```yaml apiVersion: elasticsearch.k8s.elastic.co/v1 @@ -76,7 +76,7 @@ This will cause the ECK operator to only create the PodDisruptionBudget defined [`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. :::: -### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] +#### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] You can specify a PDB per nodeSet or node role. From 36562d19ec90b4e15f09c8463c36e82d78c0f233 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Wed, 1 Oct 2025 09:57:34 -0500 Subject: [PATCH 07/10] Review comments. Signed-off-by: Michael Montgomery --- .../deploy/cloud-on-k8s/pod-disruption-budget.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 2cabc5810e..40c1c6de09 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -12,10 +12,10 @@ products: 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. -ECK manages either a single default PDB, or multiple PDBs per {{es}} resource according to the license available. +{{eck}} manages either a single default PDB, or multiple PDBs per {{es}} resource depending on the license level of the ECK installation. :::{note} -In ECK 3.1 and earlier, all clusters follow the [non-enterprise behavior](#non-enterprise-licensed-customers), regardless of license type. +In {{eck}} 3.1 and earlier, all clusters follow the [non-enterprise behavior](#non-enterprise-licensed-customers), regardless of license type. ::: ## Enterprise licensed customers @@ -24,13 +24,13 @@ deployment: eck: ga 3.2 ``` -In {{eck}} clusters licensed with an enterprise license, a separate PDB is created for each type of nodeSet defined in the manifest allowing upgrade or maintenance operations to be more quickly executed. The PDBs allow one {{es}} Pod per nodeSet to simultaneously be taken down as long as the cluster has the health defined in the following table: +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 allowing upgrade or maintenance operations to be more quickly executed. Each PDB permits one Elasticsearch Pod per nodeSet to be disrupted at a time, provided the cluster maintains the health status described in the following table: | Role | Cluster health required | Notes | |------|------------------------|--------| | master | Yellow | | | data | Green | All Data roles are grouped together into a single PDB, except for data_frozen. | -| data_frozen | Yellow | Since data_frozen nodes are essentially stateless, managing searchable snapshots when compared to other data node types, additional disruptions are allowed. | +| data_frozen | Yellow | Since frozen data tier nodes only host partially mounted indices backed by searchable snapshots additional disruptions are allowed. | | ingest | Yellow | | | ml | Yellow | | | coordinating | Yellow | | @@ -41,7 +41,7 @@ Single-node clusters are not considered highly available and can always be disru ## Non-enterprise licensed customers :::{note} -In ECK 3.1 and earlier, all clusters follow this behavior regardless of license type. +In {{eck}} 3.1 and earlier, all clusters follow this behavior regardless of license type. ::: 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. From 4dd64710e53d05ee2b9b75b0eaecd429a57cc8e0 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Mon, 6 Oct 2025 09:09:13 -0500 Subject: [PATCH 08/10] Review changes Signed-off-by: Michael Montgomery --- .../cloud-on-k8s/pod-disruption-budget.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 40c1c6de09..2292b25817 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -15,16 +15,16 @@ A [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/confi {{eck}} manages either a single default PDB, or multiple PDBs per {{es}} resource depending on the license level of the ECK installation. :::{note} -In {{eck}} 3.1 and earlier, all clusters follow the [non-enterprise behavior](#non-enterprise-licensed-customers), regardless of license type. +In {{eck}} 3.1 and earlier, all clusters follow the [default PodDisruptionBudget rules](#default-pdb-rules), regardless of license type. ::: -## Enterprise licensed customers +## Advanced PodDisruptionBudget rules (Enterprise License Required) ```{applies_to} deployment: eck: ga 3.2 ``` -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 allowing upgrade or maintenance operations to be more quickly executed. Each PDB permits one Elasticsearch Pod per nodeSet to be disrupted at a time, provided the cluster maintains the health status described in the following table: +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 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 cluster maintains the health status described in the following table: | Role | Cluster health required | Notes | |------|------------------------|--------| @@ -39,18 +39,18 @@ In Elasticsearch clusters managed by ECK and licensed with an enterprise license Single-node clusters are not considered highly available and can always be disrupted regardless of license type. -## Non-enterprise licensed customers +## Default PodDisruptionBudget rules (Basic license) [default-pdb-rules] :::{note} In {{eck}} 3.1 and earlier, all clusters follow this behavior regardless of license type. ::: 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. -### Overriding the default behavior +## Overriding the default behavior -In the {{es}} specification, you can change the default behavior in 2 ways. By fully overriding the PodDisruptionBudget within the {{es}} spec or by disabling the default PodDisruptionBudget and specifying one or more PodDisruptionBudget(s). +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). -#### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] +### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] ```yaml apiVersion: elasticsearch.k8s.elastic.co/v1 @@ -76,9 +76,9 @@ This will cause the ECK operator to only create the PodDisruptionBudget defined [`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. :::: -#### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] +### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] -You can specify a PDB per nodeSet or node role. +You can specify a PDB per `nodeSet` or node role. ```yaml subs=true apiVersion: elasticsearch.k8s.elastic.co/v1 From 7a27175da957edd717150cacc8d594781bcd7c48 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Mon, 6 Oct 2025 13:24:49 -0500 Subject: [PATCH 09/10] more review comments. Signed-off-by: Michael Montgomery --- .../deploy/cloud-on-k8s/pod-disruption-budget.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 2292b25817..9d4d2ffb98 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -18,13 +18,13 @@ A [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/confi In {{eck}} 3.1 and earlier, all clusters follow the [default PodDisruptionBudget rules](#default-pdb-rules), regardless of license type. ::: -## Advanced PodDisruptionBudget rules (Enterprise License Required) +## Advanced rules (Enterprise license required) ```{applies_to} deployment: eck: ga 3.2 ``` -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 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 cluster maintains the health status described in the following table: +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 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 cluster maintains the health status described in the following table: | Role | Cluster health required | Notes | |------|------------------------|--------| @@ -39,12 +39,12 @@ In Elasticsearch clusters managed by ECK and licensed with an enterprise license Single-node clusters are not considered highly available and can always be disrupted regardless of license type. -## Default PodDisruptionBudget rules (Basic license) [default-pdb-rules] +## Default rules (Basic license) [default-pdb-rules] :::{note} In {{eck}} 3.1 and earlier, all clusters follow this behavior regardless of license type. ::: -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. +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. ## Overriding the default behavior From 7ef7c67c7c2ee86b60d3a903418456ddfd297224 Mon Sep 17 00:00:00 2001 From: Michael Montgomery Date: Tue, 7 Oct 2025 08:33:39 -0500 Subject: [PATCH 10/10] Review changes. Signed-off-by: Michael Montgomery --- .../deploy/cloud-on-k8s/pod-disruption-budget.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md index 9d4d2ffb98..1748f4bf64 100644 --- a/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md +++ b/deploy-manage/deploy/cloud-on-k8s/pod-disruption-budget.md @@ -24,7 +24,7 @@ deployment: eck: ga 3.2 ``` -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 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 cluster maintains the health status described in the following table: +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: | Role | Cluster health required | Notes | |------|------------------------|--------| @@ -50,7 +50,9 @@ In {{eck}} clusters that do not have an Enterprise license, one {{es}} Pod can b 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). -### Fully override the PodDisruptionBudget within the {{es}} spec [k8s-override-default-pdb] +### Specify your own PodDisruptionBudget [k8s-specify-own-pdb] + +You can fully override the default PodDisruptionBudget by specifying your own PodDisruptionBudget in the {{es}} spec. ```yaml apiVersion: elasticsearch.k8s.elastic.co/v1 @@ -76,7 +78,7 @@ This will cause the ECK operator to only create the PodDisruptionBudget defined [`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. :::: -### Pod disruption budget per nodeSet [k8s-pdb-per-nodeset] +### Create a PodDisruptionBudget per nodeSet [k8s-pdb-per-nodeset] You can specify a PDB per `nodeSet` or node role.