@@ -473,6 +473,9 @@ function kube-up {
473
473
find-release-tars
474
474
upload-server-tars
475
475
476
+ # ensure that environmental variables specifying number of migs to create
477
+ set_num_migs
478
+
476
479
if [[ ${KUBE_USE_EXISTING_MASTER:- } == " true" ]]; then
477
480
create-nodes
478
481
create-autoscaler
@@ -616,21 +619,35 @@ function create-nodes-template() {
616
619
create-node-instance-template $template_name
617
620
}
618
621
619
- function create-nodes() {
620
- local template_name=" ${NODE_INSTANCE_PREFIX} -template"
621
-
622
+ # Assumes:
623
+ # - MAX_INSTANCES_PER_MIG
624
+ # - NUM_NODES
625
+ # exports:
626
+ # - NUM_MIGS
627
+ function set_num_migs() {
622
628
local defaulted_max_instances_per_mig=${MAX_INSTANCES_PER_MIG:- 500}
623
629
624
630
if [[ ${defaulted_max_instances_per_mig} -le " 0" ]]; then
625
631
echo " MAX_INSTANCES_PER_MIG cannot be negative. Assuming default 500"
626
632
defaulted_max_instances_per_mig=500
627
633
fi
628
- local num_migs=$(( (${NUM_NODES} + ${defaulted_max_instances_per_mig} - 1 ) / ${defaulted_max_instances_per_mig} ))
629
- local instances_per_mig=$(( (${NUM_NODES} + ${num_migs} - 1 ) / ${num_migs} ))
630
- local last_mig_size=$(( ${NUM_NODES} - (${num_migs} - 1 ) * ${instances_per_mig} ))
634
+ export NUM_MIGS=$(( (${NUM_NODES} + ${defaulted_max_instances_per_mig} - 1 ) / ${defaulted_max_instances_per_mig} ))
635
+ }
636
+
637
+ # Assumes:
638
+ # - NUM_MIGS
639
+ # - NODE_INSTANCE_PREFIX
640
+ # - NUM_NODES
641
+ # - PROJECT
642
+ # - ZONE
643
+ function create-nodes() {
644
+ local template_name=" ${NODE_INSTANCE_PREFIX} -template"
645
+
646
+ local instances_per_mig=$(( (${NUM_NODES} + ${NUM_MIGS} - 1 ) / ${NUM_MIGS} ))
647
+ local last_mig_size=$(( ${NUM_NODES} - (${NUM_MIGS} - 1 ) * ${instances_per_mig} ))
631
648
632
649
# TODO: parallelize this loop to speed up the process
633
- for i in $( seq $(( ${num_migs } - 1 )) ) ; do
650
+ for i in $( seq $(( ${NUM_MIGS } - 1 )) ) ; do
634
651
gcloud compute instance-groups managed \
635
652
create " ${NODE_INSTANCE_PREFIX} -group-$i " \
636
653
--project " ${PROJECT} " \
@@ -659,35 +676,44 @@ function create-nodes() {
659
676
--project " ${PROJECT} " || true ;
660
677
}
661
678
679
+ # Assumes:
680
+ # - NUM_MIGS
681
+ # - NODE_INSTANCE_PREFIX
682
+ # - PROJECT
683
+ # - ZONE
684
+ # - ENABLE_NODE_AUTOSCALER
685
+ # - TARGET_NODE_UTILIZATION\
686
+ # - AUTOSCALER_MAX_NODES
687
+ # - AUTOSCALER_MIN_NODES
662
688
function create-autoscaler() {
663
689
# Create autoscaler for nodes if requested
664
690
if [[ " ${ENABLE_NODE_AUTOSCALER} " == " true" ]]; then
665
- METRICS =" "
691
+ local metrics =" "
666
692
# Current usage
667
- METRICS +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/cpu/node_utilization,"
668
- METRICS +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
669
- METRICS +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/memory/node_utilization,"
670
- METRICS +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
693
+ metrics +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/cpu/node_utilization,"
694
+ metrics +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
695
+ metrics +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/memory/node_utilization,"
696
+ metrics +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
671
697
672
698
# Reservation
673
- METRICS +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/cpu/node_reservation,"
674
- METRICS +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
675
- METRICS +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/memory/node_reservation,"
676
- METRICS +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
699
+ metrics +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/cpu/node_reservation,"
700
+ metrics +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
701
+ metrics +=" --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/kubernetes.io/memory/node_reservation,"
702
+ metrics +=" utilization-target=${TARGET_NODE_UTILIZATION} ,utilization-target-type=GAUGE "
677
703
678
704
echo " Creating node autoscalers."
679
705
680
- local max_instances_per_mig=$(( (${AUTOSCALER_MAX_NODES} + ${num_migs } - 1 ) / ${num_migs } ))
681
- local last_max_instances=$(( ${AUTOSCALER_MAX_NODES} - (${num_migs } - 1 ) * ${max_instances_per_mig} ))
682
- local min_instances_per_mig=$(( (${AUTOSCALER_MIN_NODES} + ${num_migs } - 1 ) / ${num_migs } ))
683
- local last_min_instances=$(( ${AUTOSCALER_MIN_NODES} - (${num_migs } - 1 ) * ${min_instances_per_mig} ))
706
+ local max_instances_per_mig=$(( (${AUTOSCALER_MAX_NODES} + ${NUM_MIGS } - 1 ) / ${NUM_MIGS } ))
707
+ local last_max_instances=$(( ${AUTOSCALER_MAX_NODES} - (${NUM_MIGS } - 1 ) * ${max_instances_per_mig} ))
708
+ local min_instances_per_mig=$(( (${AUTOSCALER_MIN_NODES} + ${NUM_MIGS } - 1 ) / ${NUM_MIGS } ))
709
+ local last_min_instances=$(( ${AUTOSCALER_MIN_NODES} - (${NUM_MIGS } - 1 ) * ${min_instances_per_mig} ))
684
710
685
- for i in $( seq $(( ${num_migs } - 1 )) ) ; do
711
+ for i in $( seq $(( ${NUM_MIGS } - 1 )) ) ; do
686
712
gcloud compute instance-groups managed set-autoscaling " ${NODE_INSTANCE_PREFIX} -group-$i " --zone " ${ZONE} " --project " ${PROJECT} " \
687
- --min-num-replicas " ${min_instances_per_mig} " --max-num-replicas " ${max_instances_per_mig} " ${METRICS } || true
713
+ --min-num-replicas " ${min_instances_per_mig} " --max-num-replicas " ${max_instances_per_mig} " ${metrics } || true
688
714
done
689
715
gcloud compute instance-groups managed set-autoscaling " ${NODE_INSTANCE_PREFIX} -group" --zone " ${ZONE} " --project " ${PROJECT} " \
690
- --min-num-replicas " ${last_min_instances} " --max-num-replicas " ${last_max_instances} " ${METRICS } || true
716
+ --min-num-replicas " ${last_min_instances} " --max-num-replicas " ${last_max_instances} " ${metrics } || true
691
717
fi
692
718
}
693
719
0 commit comments