From 38c28177d6c1659b45004bdc7631fc74513f5120 Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Wed, 3 Aug 2016 12:30:21 +0200 Subject: [PATCH] Propagate cluster size through salt --- cluster/gce/gci/configure-helper.sh | 6 ++++++ cluster/gce/trusty/configure-helper.sh | 6 ++++++ .../salt/kube-apiserver/kube-apiserver.manifest | 15 ++++++++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/cluster/gce/gci/configure-helper.sh b/cluster/gce/gci/configure-helper.sh index cf4c170752..2652eaf132 100644 --- a/cluster/gce/gci/configure-helper.sh +++ b/cluster/gce/gci/configure-helper.sh @@ -635,6 +635,12 @@ function start-kube-apiserver { if [[ -n "${ENABLE_GARBAGE_COLLECTOR:-}" ]]; then params+=" --enable-garbage-collector=${ENABLE_GARBAGE_COLLECTOR}" fi + if [[ -n "${NUM_NODES:-}" ]]; then + # Set amount of memory available for apiserver based on number of nodes. + # TODO: Once we start setting proper requests and limits for apiserver + # we should reuse the same logic here instead of current heuristic. + params+=" --target-ram-mb=$((${NUM_NODES} * 60))" + fi if [[ -n "${SERVICE_CLUSTER_IP_RANGE:-}" ]]; then params+=" --service-cluster-ip-range=${SERVICE_CLUSTER_IP_RANGE}" fi diff --git a/cluster/gce/trusty/configure-helper.sh b/cluster/gce/trusty/configure-helper.sh index 90e952f429..67cf49a8b6 100644 --- a/cluster/gce/trusty/configure-helper.sh +++ b/cluster/gce/trusty/configure-helper.sh @@ -519,6 +519,12 @@ start_kube_apiserver() { params="${params} --authorization-policy-file=/etc/srv/kubernetes/abac-authz-policy.jsonl" params="${params} --etcd-servers-overrides=/events#http://127.0.0.1:4002" + if [ -n "${NUM_NODES:-}" ]; then + # Set amount of memory available for apiserver based on number of nodes. + # TODO: Once we start setting proper requests and limits for apiserver + # we should reuse the same logic here instead of current heuristic. + params="${params} --target-ram-mb=$((${NUM_NODES} * 60))" + fi if [ -n "${SERVICE_CLUSTER_IP_RANGE:-}" ]; then params="${params} --service-cluster-ip-range=${SERVICE_CLUSTER_IP_RANGE}" fi diff --git a/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest b/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest index a818f77ea1..a9ded4a88a 100644 --- a/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest +++ b/cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest @@ -57,6 +57,15 @@ {% set etcd_servers = "--etcd-servers=http://127.0.0.1:4001" -%} {% set etcd_servers_overrides = "--etcd-servers-overrides=/events#http://127.0.0.1:4002" -%} +{% set target_ram_mb = "" -%} +{% if pillar['num_nodes'] is defined -%} + # Set amount of memory available for apiserver based on number of nodes. + # TODO: Once we start setting proper requests and limits for apiserver + # we should reuse the same logic here instead of current heuristic. + {% set tmp_ram_mb = pillar['num_nodes']|int * 60 %} + {% set target_ram_mb = "--target-ram-mb=" + tmp_ram_mb|string -%} +{% endif -%} + {% set service_cluster_ip_range = "" -%} {% if pillar['service_cluster_ip_range'] is defined -%} {% set service_cluster_ip_range = "--service-cluster-ip-range=" + pillar['service_cluster_ip_range'] -%} @@ -124,15 +133,15 @@ {% set enable_garbage_collector = "" -%} {% if pillar['enable_garbage_collector'] is defined -%} -{% set enable_garbage_collector = "--enable-garbage-collector=" + pillar['enable_garbage_collector'] -%} + {% set enable_garbage_collector = "--enable-garbage-collector=" + pillar['enable_garbage_collector'] -%} {% endif -%} -{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout + " " + enable_garbage_collector -%} +{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + target_ram_mb + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout + " " + enable_garbage_collector -%} {% set params = params + " " + cert_file + " " + key_file + " --secure-port=" + secure_port + token_auth_file + " " + bind_address + " " + log_level + " " + advertise_address + " " + proxy_ssh_options + authz_mode + abac_policy_file + webhook_authentication_config + webhook_authorization_config -%} # test_args has to be kept at the end, so they'll overwrite any prior configuration {% if pillar['apiserver_test_args'] is defined -%} -{% set params = params + " " + pillar['apiserver_test_args'] -%} + {% set params = params + " " + pillar['apiserver_test_args'] -%} {% endif -%} {