Configuring PodDisruptionBudget for Dynamic Engine deployments
Last updated: 9/3/2026Enable, disable, and tune PodDisruptionBudget settings in the instance and environment Helm charts.
In Kubernetes, a PodDisruptionBudget object defines how many pods can be voluntarily disrupted at the same time. For background information, see Pod disruptions.
PodDisruptionBudget helps keep services available during voluntary disruptions such as node maintenance or cluster scaling. Apply this procedure during an initial deployment or when you upgrade an existing release.
Support for Kubernetes PodDisruptionBudget was introduced in Dynamic Engine v1.6.0.
Before you begin
-
The dynamic-engine-crd custom resource definitions must have been installed using the oci://ghcr.io/talend/helm/dynamic-engine-crd Helm chart. If not, run the following commands for the installation:
- Find the chart version to be used:
- Run the following Helm command:
helm show chart oci://ghcr.io/talend/helm/dynamic-engine-crd --version <engine_version> - See the version directly from Talend Management Console or check the Dynamic Engine changelog for the chart version included in your Dynamic Engine version.
- Use an API call to the Dynamic Engine version endpoint.
- Run the following Helm command:
- Run the following command to install the Helm
chart of a given version:Replace <helm_chart_version> with the chart version supported by your Dynamic Engine version.
helm install dynamic-engine-crd oci://ghcr.io/talend/helm/dynamic-engine-crd --version <helm_chart_version>Without specifying the version, you install the latest available dynamic-engine-crd chart version.
- Find the chart version to be used:
- Your Kubernetes cluster supports PodDisruptionBudget resources.
- You have basic knowledge of Kubernetes PodDisruptionBudget.
About this task
If you plan to use EKS Auto Mode or GKE Autopilot, it is recommended to first set up PodDisruptionBudget before you deploy. Use it with global.profile: minimal and configuration.persistence.enabled=false.
Data Integration Jobs use the global PodDisruptionBudget setting by default and do not expose a separate task-level setting. Task-level customization is available for Data Service and Route tasks only.
A Pod Disruption Budget (PDB) is usually useful for:
- Protecting critical services from being evicted during cluster maintenance
- Ensuring minimum pod availability quotas (minimum available or maximum unavailable pods)
- Balancing between availability and cluster operational flexibility
- Avoiding cascading failures during coordinated pod disruptions
Procedure
Results
The Dynamic Engine instance and its environment now use the selected PodDisruptionBudget settings. Use the following commands to confirm the active Helm values:
helm get values dynamic-engine-$DYNAMIC_ENGINE_ID --output json | jq -r '.global.pdb'
helm get values dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID --output json | jq -r '.global.pdb'If null is returned, the chart is using the default values and no PodDisruptionBudget resources are created.
If pod disruptions are rejected or PDB errors appear, verify the following:
- Verify that the PDB resources were created successfully with
Look for PDB resources in the qlik-dynamic-engine and qlik-processing-env-<env-id> namespaces.
kubectl get pdb -A -l 'app.kubernetes.io/part-of=qlik-dynamic-engine' - See the state of a PDB resource using
Verify the Disruptions Allowed, Current Healthy, and Desired Healthy fields.
kubectl describe pdb <pdb-name> -n <namespace> - Verify that the number of pods is enough to satisfy the PDB constraints with
If you have set minAvailable: 1 but only one pod exists, the PDB does not allow any disruptions. Consider adjusting the PDB constraints or increasing the number of replicas.
kubectl get pods -n <namespace> -l app=<service-name> - Review events related to disruption rejections with
kubectl get events -n <namespace> --sort-by=.lastTimestamp | grep -i disruption
What to do next
# for dynamic engine
helm upgrade dynamic-engine-$DYNAMIC_ENGINE_ID \
oci://ghcr.io/talend/helm/dynamic-engine --version $DYNAMIC_ENGINE_VERSION \
--reuse-values --set global.pdb.enabled=false
# for dynamic engine environment
helm upgrade dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
oci://ghcr.io/talend/helm/dynamic-engine-environment --version $DYNAMIC_ENGINE_VERSION \
--reuse-values --set global.pdb.enabled=false