VOL-3014 - configure multiple ofagent controllers
Also added
- an option to untaint the control nodes
- a "clean" command to wipe any port-forwards
Change-Id: I130eac14087bf865139c5daf4d2f9c3123fe5054
diff --git a/README.md b/README.md
index 143c2e1..a59b713 100644
--- a/README.md
+++ b/README.md
@@ -83,6 +83,7 @@
| `NAME` | TYPE | Name of the KinD Cluster to be created |
| `DEPLOY_K8S` | yes | Should the KinD Kubernetes cluster be deployed? |
| `JUST_K8S` | no | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA) |
+| `SCHEDULE_ON_CONTROL_NODES` | no | Untaint the control plane (master) K8s nodes so that PODs may be scheduled on them |
| `VOLTHA_NS` | `voltha` | K8s namespace into which to deploy voltha PODs |
| `INFRA_NS` | `default` | K8s namespace into which to deploy infrastructure PODs |
| `BBSIM_NS` | `voltha` | K8s namespace into which to deploy BBSIM PODs |
diff --git a/scripts/monitor.sh b/scripts/monitor.sh
index 24a5319..76f9650 100755
--- a/scripts/monitor.sh
+++ b/scripts/monitor.sh
@@ -23,6 +23,6 @@
fi
kubectl get --all-namespaces pods,svc && echo "" \
- && kubectl describe --all-namespaces pods | grep Image: | grep voltha | sed -e "s/^ *//g" -e "s/: */: /g" && echo "" \
+ && kubectl describe --all-namespaces pods | grep Image: | grep '\(voltha\|bbsim\)' | sed -e "s/^ *//g" -e "s/: */: /g" && echo "" \
&& echo "DB SIZE: $($SCRIPTPATH/etcd-db-size.sh)" && echo "" \
&& echo "RSS SIZE: $(ps -eo rss,pid,$CMD_KEY | grep /usr/local/bin/etcd | grep -v grep | cut -d\ -f1 | numfmt --to=iec | tr '\n' ' ' )"
diff --git a/voltha b/voltha
index b070229..c11912a 100755
--- a/voltha
+++ b/voltha
@@ -88,6 +88,7 @@
WITH_ETCD=${WITH_ETCD:-yes}
WITH_PPROF=${WITH_PPROF:-no}
ONLY_ONE=${ONLY_ONE:-yes}
+SCHEDULE_ON_CONTROL_NODES=${SCHEDULE_ON_CONTROL_NODES:-no}
CONFIG_SADIS=${CONFIG_SADIS:-no} # yes | no | file | bbsim | external | URL
SADIS_SUBSCRIBERS=${SADIS_SUBSCRIBERS:-http://bbsim.$VOLTHA_NS.svc:50074/v2/subscribers/%s}
SADIS_BANDWIDTH_PROFILES=${SADIS_BANDWIDTH_PROFILES:-http://bbsim.$VOLTHA_NS.svc:50074/v2/bandwidthprofiles/%s}
@@ -276,6 +277,7 @@
ONLY_ONE \
VOLTHA_DOWN_ON_TIMEOUT \
LEGACY_BBSIM_INDEX \
+ SCHEDULE_ON_CONTROL_NODES \
"
OPT_YES_NO="\
@@ -591,7 +593,7 @@
exit
fi
-if [ $# -ne 1 ] || ! is_in "$1" "up,down,dump"; then
+if [ $# -ne 1 ] || ! is_in "$1" "up,down,dump,clean"; then
>&2 echo "What wouild you like to do today:"
>&2 echo " up - bring up voltha"
>&2 echo " down - tear down voltha"
@@ -818,7 +820,10 @@
kill_port_forward() {
local TAG P_IDS PARENTS KIDS UNKNOWN PP_ID
- TAG="$1-$NAME"
+ TAG=
+ if [ "$1" != "__ALL__" ]; then
+ TAG="$1-$NAME"
+ fi
# shellcheck disable=SC2009
P_IDS="$(ps e -ww -A | grep "_TAG=$TAG" | grep -v grep | awk '{print $1}')"
if [ -n "$P_IDS" ]; then
@@ -834,7 +839,7 @@
UNKNOWN="$UNKNOWN $P_ID"
fi
done
- (set -x; kill -9 "$PARENTS" "$KIDS" "$UNKNOWN" >>"$LOG" 2>&1) >>"$LOG" 2>&1
+ (set -x; eval "kill -9 $PARENTS $KIDS $UNKNOWN" >>"$LOG" 2>&1) >>"$LOG" 2>&1
fi
}
@@ -1054,6 +1059,14 @@
fi
done
+# Force remove any existing k8s port-forward processes. This will
+# remove them for all kind clusters.
+# DKB
+if [ "$1" == "clean" ]; then
+ kill_port_forward __ALL__
+ exit
+fi
+
helm_values() {
local NAMESPACE=$1; shift
local INAME=$1; shift
@@ -1379,6 +1392,15 @@
printtime $((NOW - STIME))
fi
+if [ "$SCHEDULE_ON_CONTROL_NODES" == "yes" ]; then
+ bspin "Untaint control nodes to allow scheduling $LOCK"
+ for MNODE in $(kubectl get node --selector='node-role.kubernetes.io/master' -o json | jq -r '.items[].metadata.name'); do
+ (set -x; kubectl taint node "$MNODE" node-role.kubernetes.io/master:NoSchedule- >>"$LOG" 2>&1) >>"$LOG" 2>&1
+ sspin
+ done
+ espin "$VERIFIED"
+fi
+
STIME="$(date +%s)"
COUNT="$(count_pods "kube-system" ":Running:" "$NO_LABEL" "tiller-deploy-.*")"
bspin "Verify Helm"
@@ -1945,7 +1967,9 @@
compare_versions "$RESOLVED_VOLTHA_CHART_VERSION" 2.4.2
if [ "$?" == "1" ]; then
# voltha chart > 2.4.2 uses list of controllers
- INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller[0].service=$_HOST --set services.controller[0].port=$_PORT"
+ for NUM in $(seq 0 $((NUM_OF_ONOS-1))); do
+ INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller[$NUM].service=onos-onos-classic-$NUM.onos-onos-classic-hs.$INFRA_NS.svc.cluster.local --set services.controller[$NUM].port=6653"
+ done
else
# voltha chart <= 2.4.2 uses single controller
INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller.service=$_HOST --set services.controller.port=$_PORT"