From 5f2695be8e2ad5882144b625dd3e5ce9e3ab9145 Mon Sep 17 00:00:00 2001 From: Marcin Date: Fri, 27 May 2016 12:02:20 +0200 Subject: [PATCH] Support for cluster autoscaler in GCE Trusty and GCI images --- build/common.sh | 1 + cluster/gce/gci/configure-helper.sh | 17 +++++++++++++++++ cluster/gce/trusty/configure-helper.sh | 14 ++++++++++++++ cluster/gce/trusty/master.yaml | 1 + .../cluster-autoscaler.manifest | 2 ++ 5 files changed, 35 insertions(+) diff --git a/build/common.sh b/build/common.sh index 016df783d54..c60ed5ec3a9 100755 --- a/build/common.sh +++ b/build/common.sh @@ -911,6 +911,7 @@ function kube::release::package_kube_manifests_tarball() { mkdir -p "${dst_dir}" local salt_dir="${KUBE_ROOT}/cluster/saltbase/salt" + cp "${salt_dir}/cluster-autoscaler/cluster-autoscaler.manifest" "${dst_dir}/" cp "${salt_dir}/fluentd-es/fluentd-es.yaml" "${release_stage}/" cp "${salt_dir}/fluentd-gcp/fluentd-gcp.yaml" "${release_stage}/" cp "${salt_dir}/kube-registry-proxy/kube-registry-proxy.yaml" "${release_stage}/" diff --git a/cluster/gce/gci/configure-helper.sh b/cluster/gce/gci/configure-helper.sh index d20b87aeaa8..0d4a9dda6c6 100644 --- a/cluster/gce/gci/configure-helper.sh +++ b/cluster/gce/gci/configure-helper.sh @@ -622,6 +622,22 @@ function start-kube-scheduler { cp "${src_file}" /etc/kubernetes/manifests } +# Starts cluster autoscaler. +function start-cluster-autoscaler { + if [ "${ENABLE_NODE_AUTOSCALER:-}" = "true" ]; then + touch /etc/kubernetes/start-cluster-autoscaler-enabled + + # Remove salt comments and replace variables with values + src_file="${KUBE_HOME}/kube-manifests/kubernetes/gci-trusty/cluster-autoscaler.manifest" + remove-salt-config-comments "${src_file}" + + local params=`sed 's/^/"/;s/ /","/g;s/$/",/' <<< "${AUTOSCALER_MIG_CONFIG}"` + sed -i -e "s@\"{{param}}\",@${params}@g" "${src_file}" + sed -i -e "s@{%.*%}@@g" "${src_file}" + cp "${src_file}" /etc/kubernetes/manifests + fi +} + # A helper function for copying addon manifests and set dir/files # permissions. # @@ -812,6 +828,7 @@ if [[ "${KUBERNETES_MASTER:-}" == "true" ]]; then start-kube-controller-manager start-kube-scheduler start-kube-addons + start-cluster-autoscaler else start-kube-proxy # Kube-registry-proxy. diff --git a/cluster/gce/trusty/configure-helper.sh b/cluster/gce/trusty/configure-helper.sh index 4ce18321939..e7bb6be2028 100644 --- a/cluster/gce/trusty/configure-helper.sh +++ b/cluster/gce/trusty/configure-helper.sh @@ -614,6 +614,20 @@ start_kube_scheduler() { cp "${src_file}" /etc/kubernetes/manifests } +# Starts k8s cluster autoscaler. +start_cluster_autoscaler() { + if [ "${ENABLE_NODE_AUTOSCALER:-}" = "true" ]; then + # Remove salt comments and replace variables with values + src_file="${kube_home}/kube-manifests/kubernetes/gci-trusty/cluster-autoscaler.manifest" + remove_salt_config_comments "${src_file}" + + local params=`sed 's/^/"/;s/ /","/g;s/$/",/' <<< "${AUTOSCALER_MIG_CONFIG}"` + sed -i -e "s@\"{{param}}\",@${params}@g" "${src_file}" + sed -i -e "s@{%.*%}@@g" "${src_file}" + cp "${src_file}" /etc/kubernetes/manifests + fi +} + # Starts a fluentd static pod for logging. start_fluentd() { if [ "${ENABLE_NODE_LOGGING:-}" = "true" ]; then diff --git a/cluster/gce/trusty/master.yaml b/cluster/gce/trusty/master.yaml index 3af14aa72d6..411bf633726 100644 --- a/cluster/gce/trusty/master.yaml +++ b/cluster/gce/trusty/master.yaml @@ -191,6 +191,7 @@ script start_kube_controller_manager start_kube_scheduler start_kube_addons + start_cluster_autoscaler } 2>&1 | logger --priority daemon.info -t ${UPSTART_JOB} end script diff --git a/cluster/saltbase/salt/cluster-autoscaler/cluster-autoscaler.manifest b/cluster/saltbase/salt/cluster-autoscaler/cluster-autoscaler.manifest index e4244bad821..124765e3960 100644 --- a/cluster/saltbase/salt/cluster-autoscaler/cluster-autoscaler.manifest +++ b/cluster/saltbase/salt/cluster-autoscaler/cluster-autoscaler.manifest @@ -1,3 +1,4 @@ +{% if pillar.get('enable_node_autoscaler', '').lower() == 'true' %} {% set params = pillar['autoscaler_mig_config'] -%} { "kind": "Pod", @@ -56,3 +57,4 @@ "restartPolicy": "Always" } } +{% endif %}