Browse Source

Allow for overriding scheduler config

- introduce openshift_master_scheduler_predicates and
  openshift_master_scheduler_priorities to override the default scheduler
  predicates and priorities

- switch default scheduler priorities to use SelectorSpreadPriority instead
  of ServiceSpreadingPriority
Jason DeTiberus 9 years ago
parent
commit
ccc5a30e00

+ 16 - 1
roles/openshift_facts/library/openshift_facts.py

@@ -1492,6 +1492,19 @@ class OpenShiftFacts(object):
                                   debug_level=2)
 
         if 'master' in roles:
+            scheduler_predicates = [
+                {"name": "MatchNodeSelector"},
+                {"name": "PodFitsResources"},
+                {"name": "PodFitsPorts"},
+                {"name": "NoDiskConflict"},
+                {"name": "Region", "argument": {"serviceAffinity" : {"labels" : ["region"]}}}
+            ]
+            scheduler_priorities = [
+                {"name": "LeastRequestedPriority", "weight": 1},
+                {"name": "SelectorSpreadPriority", "weight": 1},
+                {"name": "Zone", "weight" : 2, "argument": {"serviceAntiAffinity" : {"label": "zone"}}}
+            ]
+
             defaults['master'] = dict(api_use_ssl=True, api_port='8443',
                                       controllers_port='8444',
                                       console_use_ssl=True,
@@ -1507,7 +1520,9 @@ class OpenShiftFacts(object):
                                       session_secrets_file='',
                                       access_token_max_seconds=86400,
                                       auth_token_max_seconds=500,
-                                      oauth_grant_method='auto')
+                                      oauth_grant_method='auto',
+                                      scheduler_predicates=scheduler_predicates,
+                                      scheduler_priorities=scheduler_priorities)
 
         if 'node' in roles:
             defaults['node'] = dict(labels={}, annotations={},

+ 2 - 2
roles/openshift_master/tasks/main.yml

@@ -65,9 +65,9 @@
   - restart master controllers
 
 - name: Create the scheduler config
-  template:
+  copy:
+    content: "{{ scheduler_config | to_nice_json }}"
     dest: "{{ openshift_master_scheduler_conf }}"
-    src: scheduler.json.j2
     backup: true
   notify:
   - restart master

+ 0 - 15
roles/openshift_master/templates/scheduler.json.j2

@@ -1,15 +0,0 @@
-{
-  "kind": "Policy",
-  "apiVersion": "v1",
-  "predicates": [
-    {"name": "MatchNodeSelector"},
-    {"name": "PodFitsResources"},
-    {"name": "PodFitsPorts"},
-    {"name": "NoDiskConflict"},
-    {"name": "Region", "argument": {"serviceAffinity" : {"labels" : ["region"]}}}
-  ],"priorities": [
-    {"name": "LeastRequestedPriority", "weight": 1},
-    {"name": "ServiceSpreadingPriority", "weight": 1},
-    {"name": "Zone", "weight" : 2, "argument": {"serviceAntiAffinity" : {"label": "zone"}}}
-  ]
-}

+ 6 - 0
roles/openshift_master/vars/main.yml

@@ -8,6 +8,12 @@ openshift_master_session_secrets_file: "{{ openshift_master_config_dir }}/sessio
 openshift_master_policy: "{{ openshift_master_config_dir }}/policy.json"
 openshift_version: "{{ openshift_pkg_version | default(openshift_image_tag) | default(openshift.common.image_tag) | default('') }}"
 
+scheduler_config:
+  kind: Policy
+  apiVersion: v1
+  predicates: "{{ openshift.master.scheduler_predicates }}"
+  priorities: "{{ openshift.master.scheduler_priorities }}"
+
 openshift_master_valid_grant_methods:
 - auto
 - prompt

+ 2 - 0
roles/openshift_master_facts/tasks/main.yml

@@ -63,3 +63,5 @@
       master_count: "{{ openshift_master_count | default(None) }}"
       controller_lease_ttl: "{{ osm_controller_lease_ttl | default(None) }}"
       master_image: "{{ osm_image | default(None) }}"
+      scheduler_predicates: "{{ openshift_master_scheduler_predicates | default(None) }}"
+      scheduler_priorities: "{{ openshift_master_scheduler_priorities | default(None) }}"