diff --git a/roles/kubernetes-apps/csi_driver/cinder/tasks/main.yml b/roles/kubernetes-apps/csi_driver/cinder/tasks/main.yml
index aa5a1c6e8914823ca24f34fa36eaced25c5d4060..b63912d2b9fb0bfc0ec7bbcbebe3eb2b9e36a8aa 100644
--- a/roles/kubernetes-apps/csi_driver/cinder/tasks/main.yml
+++ b/roles/kubernetes-apps/csi_driver/cinder/tasks/main.yml
@@ -41,6 +41,7 @@
     - {name: cinder-csi-controllerplugin, file: cinder-csi-controllerplugin.yml}
     - {name: cinder-csi-nodeplugin, file: cinder-csi-nodeplugin-rbac.yml}
     - {name: cinder-csi-nodeplugin, file: cinder-csi-nodeplugin.yml}
+    - {name: cinder-csi-poddisruptionbudget, file: cinder-csi-poddisruptionbudget.yml}
   register: cinder_csi_manifests
   when: inventory_hostname == groups['kube-master'][0]
   tags: cinder-csi-driver
diff --git a/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-poddisruptionbudget.yml.j2 b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-poddisruptionbudget.yml.j2
new file mode 100644
index 0000000000000000000000000000000000000000..615721ff0acfe90f6c247e38b914426be5af8653
--- /dev/null
+++ b/roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-poddisruptionbudget.yml.j2
@@ -0,0 +1,14 @@
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: cinder-csi-pdb
+  namespace: kube-system
+spec:
+{% if cinder_csi_controller_replicas is defined and cinder_csi_controller_replicas > 1 %}
+  minAvailable: 1
+{% else %}
+  minAvailable: 0
+{% endif %}
+  selector:
+    matchLabels:
+      app: csi-cinder-controllerplugin