From 3125f93b3f8a843dd9726e727a46a6a306fc348c Mon Sep 17 00:00:00 2001 From: Virgil Chereches Date: Thu, 18 Jan 2018 10:55:23 +0000 Subject: [PATCH] Added disable_volume_zone_conflict variable --- inventory/group_vars/k8s-cluster.yml | 5 +++++ roles/kubernetes/master/defaults/main.yml | 3 +++ .../master/templates/manifests/kube-scheduler.manifest.j2 | 6 +++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/inventory/group_vars/k8s-cluster.yml b/inventory/group_vars/k8s-cluster.yml index 800d9dbb9..b925f5d7a 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 fb19290cd..4615591a7 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 fd1d24547..7b7c2b804 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"