Browse Source

allow definition of cpu/memory limits/resources (#11)

Jeff Cantrill 8 years ago
parent
commit
b335bd4e88

+ 11 - 0
roles/openshift_metrics/README.md

@@ -64,6 +64,17 @@ For default values, see [`defaults/main.yaml`](defaults/main.yaml).
 
 - `openshift_metrics_resolution`: How often metrics should be gathered.
 
+## Additional variables to control resource limits
+Each metrics component (hawkular, cassandra, heapster) can specify a cpu and memory limits and requests by setting
+the corresponding role variable:
+```
+openshift_metrics_<COMPONENT>_(limits|requests)_(memory|cpu): <VALUE>
+```
+e.g
+```
+openshift_metrics_cassandra_limits_memory: 1G
+openshift_metrics_hawkular_requests_cpu: 100
+```
 
 Dependencies
 ------------

+ 13 - 1
roles/openshift_metrics/defaults/main.yaml

@@ -5,18 +5,30 @@ openshift_metrics_image_version: latest
 openshift_metrics_master_url: https://kubernetes.default.svc.cluster.local
 openshift_metrics_project: openshift-infra
 openshift_metrics_startup_timeout: 500
+openshift_metrics_certs_dir: "{{ openshift.common.config_base }}/master/metrics"
 
 openshift_metrics_hawkular_user_write_access: False
 openshift_metrics_hawkular_replicas: 1
+openshift_metrics_hawkular_limits_memory: 2.5G
+openshift_metrics_hawkular_limits_cpu: null
+openshift_metrics_hawkular_requests_memory: 1.5G
+openshift_metrics_hawkular_requests_cpu: null
 
 openshift_metrics_cassandra_nodes: 1
 openshift_metrics_cassandra_storage_type: emptydir
 openshift_metrics_cassandra_pv_prefix: metrics-cassandra
 openshift_metrics_cassandra_pv_size: 10Gi
-openshift_metrics_certs_dir: "{{ openshift.common.config_base }}/master/metrics"
+openshift_metrics_cassandra_limits_memory: 2G
+openshift_metrics_cassandra_limits_cpu: null
+openshift_metrics_cassandra_requests_memory: 1G
+openshift_metrics_cassandra_requests_cpu: null
 
 openshift_metrics_heapster_standalone: False
 openshift_metrics_heapster_allowed_users: system:master-proxy
+openshift_metrics_heapster_limits_memory: 3.75G
+openshift_metrics_heapster_limits_cpu: null
+openshift_metrics_heapster_requests_memory: 0.9375G
+openshift_metrics_heapster_requests_cpu: null
 
 openshift_metrics_duration: 7
 openshift_metrics_resolution: 15s

+ 29 - 0
roles/openshift_metrics/templates/hawkular_cassandra_rc.j2

@@ -69,6 +69,35 @@ spec:
           mountPath: "/cassandra_data"
         - name: hawkular-cassandra-secrets
           mountPath: "/secret"
+{% if ((openshift_metrics_cassandra_limits_cpu is defined and openshift_metrics_cassandra_limits_cpu is not none) 
+   or (openshift_metrics_cassandra_limits_memory is defined and openshift_metrics_cassandra_limits_memory is not none)
+   or (openshift_metrics_cassandra_requests_cpu is defined and openshift_metrics_cassandra_requests_cpu is not none)
+   or (openshift_metrics_cassandra_requests_memory is defined and openshift_metrics_cassandra_requests_memory is not none)) 
+%}
+        resources:
+{% if (openshift_metrics_cassandra_limits_cpu is not none
+   or openshift_metrics_cassandra_limits_memory is not none)
+%}
+          limits:
+{% if openshift_metrics_cassandra_limits_cpu is not none %}
+            cpu: "{{openshift_metrics_cassandra_limits_cpu}}"
+{% endif %}
+{% if openshift_metrics_cassandra_limits_memory is not none %}
+            memory: "{{openshift_metrics_cassandra_limits_memory}}"
+{% endif %}
+{% endif %}
+{% if (openshift_metrics_cassandra_requests_cpu is not none 
+   or openshift_metrics_cassandra_requests_memory is not none) 
+%}
+          requests:
+{% if openshift_metrics_cassandra_requests_cpu is not none %}
+            cpu: "{{openshift_metrics_cassandra_requests_cpu}}"
+{% endif %}
+{% if openshift_metrics_cassandra_requests_memory is not none %}
+            memory: "{{openshift_metrics_cassandra_requests_memory}}"
+{% endif %}
+{% endif %}
+{% endif %}
         readinessProbe:
           exec:
             command:

+ 29 - 0
roles/openshift_metrics/templates/hawkular_metrics_rc.j2

@@ -73,6 +73,35 @@ spec:
           mountPath: "/secrets"
         - name: hawkular-metrics-client-secrets
           mountPath: "/client-secrets"
+{% if ((openshift_metrics_hawkular_limits_cpu is defined and openshift_metrics_hawkular_limits_cpu is not none) 
+   or (openshift_metrics_hawkular_limits_memory is defined and openshift_metrics_hawkular_limits_memory is not none)
+   or (openshift_metrics_hawkular_requests_cpu is defined and openshift_metrics_hawkular_requests_cpu is not none)
+   or (openshift_metrics_hawkular_requests_memory is defined and openshift_metrics_hawkular_requests_memory is not none)) 
+%}
+        resources:
+{% if (openshift_metrics_hawkular_limits_cpu is not none
+   or openshift_metrics_hawkular_limits_memory is not none)
+%}
+          limits:
+{% if openshift_metrics_hawkular_limits_cpu is not none %}
+            cpu: "{{openshift_metrics_hawkular_limits_cpu}}"
+{% endif %}
+{% if openshift_metrics_hawkular_limits_memory is not none %}
+            memory: "{{openshift_metrics_hawkular_limits_memory}}"
+{% endif %}
+{% endif %}
+{% if (openshift_metrics_hawkular_requests_cpu is not none 
+   or openshift_metrics_hawkular_requests_memory is not none) 
+%}
+          requests:
+{% if openshift_metrics_hawkular_requests_cpu is not none %}
+            cpu: "{{openshift_metrics_hawkular_requests_cpu}}"
+{% endif %}
+{% if openshift_metrics_hawkular_requests_memory is not none %}
+            memory: "{{openshift_metrics_hawkular_requests_memory}}"
+{% endif %}
+{% endif %}
+{% endif %}
         readinessProbe:
           exec:
             command:

+ 29 - 0
roles/openshift_metrics/templates/heapster.j2

@@ -42,6 +42,35 @@ spec:
         env:
         - name: STARTUP_TIMEOUT
           value: "{{ openshift_metrics_startup_timeout }}"
+{% if ((openshift_metrics_heapster_limits_cpu is defined and openshift_metrics_heapster_limits_cpu is not none) 
+   or (openshift_metrics_heapster_limits_memory is defined and openshift_metrics_heapster_limits_memory is not none)
+   or (openshift_metrics_heapster_requests_cpu is defined and openshift_metrics_heapster_requests_cpu is not none)
+   or (openshift_metrics_heapster_requests_memory is defined and openshift_metrics_heapster_requests_memory is not none)) 
+%}
+        resources:
+{% if (openshift_metrics_heapster_limits_cpu is not none
+   or openshift_metrics_heapster_limits_memory is not none)
+%}
+          limits:
+{% if openshift_metrics_heapster_limits_cpu is not none %}
+            cpu: "{{openshift_metrics_heapster_limits_cpu}}"
+{% endif %}
+{% if openshift_metrics_heapster_limits_memory is not none %}
+            memory: "{{openshift_metrics_heapster_limits_memory}}"
+{% endif %}
+{% endif %}
+{% if (openshift_metrics_heapster_requests_cpu is not none 
+   or openshift_metrics_heapster_requests_memory is not none) 
+%}
+          requests:
+{% if openshift_metrics_heapster_requests_cpu is not none %}
+            cpu: "{{openshift_metrics_heapster_requests_cpu}}"
+{% endif %}
+{% if openshift_metrics_heapster_requests_memory is not none %}
+            memory: "{{openshift_metrics_heapster_requests_memory}}"
+{% endif %}
+{% endif %}
+{% endif %}
         volumeMounts:
         - name: heapster-secrets
           mountPath: "/secrets"