diff --git a/inventory/group_vars/k8s-cluster.yml b/inventory/group_vars/k8s-cluster.yml
index 800d9dbb9551a36c5d20a202df7850eca2da77eb..b925f5d7aaf26b6e4760075ba30a46084ec298f2 100644
--- a/inventory/group_vars/k8s-cluster.yml
+++ b/inventory/group_vars/k8s-cluster.yml
@@ -179,3 +179,8 @@ local_volumes_enabled: false
 ## Supplementary addresses that can be added in kubernetes ssl keys.
 ## That can be usefull for example to setup a keepalived virtual IP
 # supplementary_addresses_in_ssl_keys: [10.0.0.1, 10.0.0.2, 10.0.0.3]
+
+## Running on top of openstack vms with cinder enabled may lead to unschedulable pods due to NoVolumeZoneConflict restriction in kube-scheduler.
+## See https://github.com/kubernetes-incubator/kubespray/issues/2141
+## Set this variable to true to get rid of this issue
+disable_volume_zone_conflict: false
diff --git a/roles/kubernetes/master/defaults/main.yml b/roles/kubernetes/master/defaults/main.yml
index fb19290cd2549412fec72a04f98cc438d6320c09..4615591a7e8c38104c76c3a17447993b29d9fccd 100644
--- a/roles/kubernetes/master/defaults/main.yml
+++ b/roles/kubernetes/master/defaults/main.yml
@@ -80,3 +80,6 @@ scheduler_custom_flags: []
 # kubeadm settings
 # Value of 0 means it never expires
 kubeadm_token_ttl: 0
+
+## Variable for influencing kube-scheduler behaviour
+disable_volume_zone_conflict: false
diff --git a/roles/kubernetes/master/templates/manifests/kube-scheduler.manifest.j2 b/roles/kubernetes/master/templates/manifests/kube-scheduler.manifest.j2
index fd1d24547399c9d4b6c577affd5627eb8bb8dee4..7b7c2b8045b3adb7e95313ab126d597adfb73d44 100644
--- a/roles/kubernetes/master/templates/manifests/kube-scheduler.manifest.j2
+++ b/roles/kubernetes/master/templates/manifests/kube-scheduler.manifest.j2
@@ -28,7 +28,7 @@ spec:
     - scheduler
     - --leader-elect=true
     - --kubeconfig={{ kube_config_dir }}/kube-scheduler-kubeconfig.yaml
-{% if cloud_provider == 'openstack' %}
+{% if cloud_provider == 'openstack' and disable_volume_zone_conflict %}
     - --policy-config-file={{ kube_config_dir }}/kube-scheduler-policy.yaml
 {% endif %}
     - --profiling=false
@@ -65,7 +65,7 @@ spec:
     - mountPath: "{{ kube_config_dir }}/kube-scheduler-kubeconfig.yaml"
       name: kubeconfig
       readOnly: true
-{% if cloud_provider == 'openstack' %}
+{% if cloud_provider == 'openstack' and disable_volume_zone_conflict %}
     - mountPath: "{{ kube_config_dir }}/kube-scheduler-policy.yaml"
       name: kube-scheduler-policy
       readOnly: true
@@ -85,7 +85,7 @@ spec:
   - name: kubeconfig
     hostPath:
       path: "{{ kube_config_dir }}/kube-scheduler-kubeconfig.yaml"
-{% if cloud_provider == 'openstack' %}
+{% if cloud_provider == 'openstack' and disable_volume_zone_conflict %}
   - name: kube-scheduler-policy
     hostPath:
       path: "{{ kube_config_dir }}/kube-scheduler-policy.yaml"