Configuring PodDisruptionBudget for Dynamic Engine deployments
Last updated: 10/29/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
- 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