| 
						
					 | 
					 | 
					@@ -34,12 +34,12 @@ function test-build-release() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# From user input set the necessary k8s and etcd configuration information
 | 
					 | 
					 | 
					 | 
					# From user input set the necessary k8s and etcd configuration information
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function setClusterInfo() {
 | 
					 | 
					 | 
					 | 
					function setClusterInfo() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # Initialize NODE_IPS in setClusterInfo function
 | 
					 | 
					 | 
					 | 
					  # Initialize NODE_IPS in setClusterInfo function
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # NODE_IPS is defined as a global variable, and is concatenated with other nodeIP	
 | 
					 | 
					 | 
					 | 
					  # NODE_IPS is defined as a global variable, and is concatenated with other nodeIP
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # When setClusterInfo is called for many times, this could cause potential problems
 | 
					 | 
					 | 
					 | 
					  # When setClusterInfo is called for many times, this could cause potential problems
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # Such as, you will have NODE_IPS=192.168.0.2,192.168.0.3,192.168.0.2,192.168.0.3,
 | 
					 | 
					 | 
					 | 
					  # Such as, you will have NODE_IPS=192.168.0.2,192.168.0.3,192.168.0.2,192.168.0.3,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # which is obviously wrong.
 | 
					 | 
					 | 
					 | 
					  # which is obviously wrong.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  NODE_IPS=""
 | 
					 | 
					 | 
					 | 
					  NODE_IPS=""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local ii=0
 | 
					 | 
					 | 
					 | 
					  local ii=0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for i in $nodes; do
 | 
					 | 
					 | 
					 | 
					  for i in $nodes; do
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    nodeIP=${i#*@}
 | 
					 | 
					 | 
					 | 
					    nodeIP=${i#*@}
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -246,7 +246,8 @@ EOF
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function create-kube-proxy-opts() {
 | 
					 | 
					 | 
					 | 
					function create-kube-proxy-opts() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  cat <<EOF > ~/kube/default/kube-proxy
 | 
					 | 
					 | 
					 | 
					  cat <<EOF > ~/kube/default/kube-proxy
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					KUBE_PROXY_OPTS="\
 | 
					 | 
					 | 
					 | 
					KUBE_PROXY_OPTS="\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 --master=http://${1}:8080 \
 | 
					 | 
					 | 
					 | 
					 --hostname-override=${1} \
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 --master=http://${2}:8080 \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 --logtostderr=true"
 | 
					 | 
					 | 
					 | 
					 --logtostderr=true"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					EOF
 | 
					 | 
					 | 
					 | 
					EOF
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -267,7 +268,7 @@ EOF
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function detect-master() {
 | 
					 | 
					 | 
					 | 
					function detect-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBE_MASTER="${MASTER}" 
 | 
					 | 
					 | 
					 | 
					  export KUBE_MASTER="${MASTER}"
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBE_MASTER_IP="${MASTER_IP}"
 | 
					 | 
					 | 
					 | 
					  export KUBE_MASTER_IP="${MASTER_IP}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  echo "Using master ${MASTER_IP}"
 | 
					 | 
					 | 
					 | 
					  echo "Using master ${MASTER_IP}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -348,7 +349,7 @@ function kube-up() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function provision-master() {
 | 
					 | 
					 | 
					 | 
					function provision-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  echo -e "\nDeploying master on machine ${MASTER_IP}"
 | 
					 | 
					 | 
					 | 
					  echo -e "\nDeploying master on machine ${MASTER_IP}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS "$MASTER" "mkdir -p ~/kube/default"
 | 
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS "$MASTER" "mkdir -p ~/kube/default"
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -371,7 +372,7 @@ function provision-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc
 | 
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc.cluster.local
 | 
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc.cluster.local
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  )
 | 
					 | 
					 | 
					 | 
					  )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  EXTRA_SANS=$(echo "${EXTRA_SANS[@]}" | tr ' ' ,)
 | 
					 | 
					 | 
					 | 
					  EXTRA_SANS=$(echo "${EXTRA_SANS[@]}" | tr ' ' ,)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # remote login to MASTER and configue k8s master
 | 
					 | 
					 | 
					 | 
					  # remote login to MASTER and configue k8s master
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -388,10 +389,10 @@ function provision-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-kube-scheduler-opts
 | 
					 | 
					 | 
					 | 
					    create-kube-scheduler-opts
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-flanneld-opts '127.0.0.1'
 | 
					 | 
					 | 
					 | 
					    create-flanneld-opts '127.0.0.1'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start master: ' -- /bin/bash -c '
 | 
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start master: ' -- /bin/bash -c '
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/ 
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/ 
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      groupadd -f -r kube-cert
 | 
					 | 
					 | 
					 | 
					      groupadd -f -r kube-cert
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ${PROXY_SETTING} ~/kube/make-ca-cert.sh \"${MASTER_IP}\" \"${EXTRA_SANS}\"
 | 
					 | 
					 | 
					 | 
					      ${PROXY_SETTING} ~/kube/make-ca-cert.sh \"${MASTER_IP}\" \"${EXTRA_SANS}\"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/
 | 
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -402,10 +403,10 @@ function provision-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      echo "Deploying master on machine ${MASTER_IP} failed"
 | 
					 | 
					 | 
					 | 
					      echo "Deploying master on machine ${MASTER_IP} failed"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      exit 1
 | 
					 | 
					 | 
					 | 
					      exit 1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} 
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function provision-node() {
 | 
					 | 
					 | 
					 | 
					function provision-node() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  echo -e "\nDeploying node on machine ${1#*@}"
 | 
					 | 
					 | 
					 | 
					  echo -e "\nDeploying node on machine ${1#*@}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS $1 "mkdir -p ~/kube/default"
 | 
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS $1 "mkdir -p ~/kube/default"
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -422,21 +423,23 @@ function provision-node() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # remote login to node and configue k8s node
 | 
					 | 
					 | 
					 | 
					  # remote login to node and configue k8s node
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS -t "$1" "
 | 
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS -t "$1" "
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    source ~/kube/util.sh
 | 
					 | 
					 | 
					 | 
					    source ~/kube/util.sh
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    setClusterInfo
 | 
					 | 
					 | 
					 | 
					    setClusterInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-kubelet-opts \
 | 
					 | 
					 | 
					 | 
					    create-kubelet-opts \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${1#*@}' \
 | 
					 | 
					 | 
					 | 
					      '${1#*@}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${MASTER_IP}' \
 | 
					 | 
					 | 
					 | 
					      '${MASTER_IP}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${DNS_SERVER_IP}' \
 | 
					 | 
					 | 
					 | 
					      '${DNS_SERVER_IP}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${DNS_DOMAIN}'
 | 
					 | 
					 | 
					 | 
					      '${DNS_DOMAIN}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-kube-proxy-opts '${MASTER_IP}'
 | 
					 | 
					 | 
					 | 
					    create-kube-proxy-opts \
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						  '${1#*@}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						  '${MASTER_IP}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-flanneld-opts '${MASTER_IP}'
 | 
					 | 
					 | 
					 | 
					    create-flanneld-opts '${MASTER_IP}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                         
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start node: ' -- /bin/bash -c '
 | 
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start node: ' -- /bin/bash -c '
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/ 
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/ 
 | 
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/minion/* /opt/bin
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/minion/* /opt/bin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      service flanneld start
 | 
					 | 
					 | 
					 | 
					      service flanneld start
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ~/kube/reconfDocker.sh i
 | 
					 | 
					 | 
					 | 
					      ~/kube/reconfDocker.sh i
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -447,7 +450,7 @@ function provision-node() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function provision-masterandnode() {
 | 
					 | 
					 | 
					 | 
					function provision-masterandnode() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  echo -e "\nDeploying master and node on machine ${MASTER_IP}"
 | 
					 | 
					 | 
					 | 
					  echo -e "\nDeploying master and node on machine ${MASTER_IP}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS $MASTER "mkdir -p ~/kube/default"
 | 
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS $MASTER "mkdir -p ~/kube/default"
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -464,7 +467,7 @@ function provision-masterandnode() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ubuntu/binaries/master/ \
 | 
					 | 
					 | 
					 | 
					    ubuntu/binaries/master/ \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ubuntu/binaries/minion \
 | 
					 | 
					 | 
					 | 
					    ubuntu/binaries/minion \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    "${MASTER}:~/kube"
 | 
					 | 
					 | 
					 | 
					    "${MASTER}:~/kube"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  EXTRA_SANS=(
 | 
					 | 
					 | 
					 | 
					  EXTRA_SANS=(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    IP:${MASTER_IP}
 | 
					 | 
					 | 
					 | 
					    IP:${MASTER_IP}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1
 | 
					 | 
					 | 
					 | 
					    IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -473,13 +476,13 @@ function provision-masterandnode() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc
 | 
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc.cluster.local
 | 
					 | 
					 | 
					 | 
					    DNS:kubernetes.default.svc.cluster.local
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  )
 | 
					 | 
					 | 
					 | 
					  )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  EXTRA_SANS=$(echo "${EXTRA_SANS[@]}" | tr ' ' ,)
 | 
					 | 
					 | 
					 | 
					  EXTRA_SANS=$(echo "${EXTRA_SANS[@]}" | tr ' ' ,)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # remote login to the master/node and configue k8s
 | 
					 | 
					 | 
					 | 
					  # remote login to the master/node and configue k8s
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS -t "$MASTER" "
 | 
					 | 
					 | 
					 | 
					  ssh $SSH_OPTS -t "$MASTER" "
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    source ~/kube/util.sh
 | 
					 | 
					 | 
					 | 
					    source ~/kube/util.sh
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    setClusterInfo
 | 
					 | 
					 | 
					 | 
					    setClusterInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-etcd-opts '${MASTER_IP}'
 | 
					 | 
					 | 
					 | 
					    create-etcd-opts '${MASTER_IP}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-kube-apiserver-opts \
 | 
					 | 
					 | 
					 | 
					    create-kube-apiserver-opts \
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -493,17 +496,19 @@ function provision-masterandnode() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${MASTER_IP}' \
 | 
					 | 
					 | 
					 | 
					      '${MASTER_IP}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${DNS_SERVER_IP}' \
 | 
					 | 
					 | 
					 | 
					      '${DNS_SERVER_IP}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '${DNS_DOMAIN}'
 | 
					 | 
					 | 
					 | 
					      '${DNS_DOMAIN}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-kube-proxy-opts '${MASTER_IP}'
 | 
					 | 
					 | 
					 | 
					    create-kube-proxy-opts \
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						  '${MASTER_IP}' \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						  '${MASTER_IP}'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    create-flanneld-opts '127.0.0.1'
 | 
					 | 
					 | 
					 | 
					    create-flanneld-opts '127.0.0.1'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start master: ' -- /bin/bash -c ' 
 | 
					 | 
					 | 
					 | 
					    sudo -E -p '[sudo] password to start master: ' -- /bin/bash -c '
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/ 
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/default/* /etc/default/
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/ 
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_conf/* /etc/init/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/init_scripts/* /etc/init.d/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      groupadd -f -r kube-cert
 | 
					 | 
					 | 
					 | 
					      groupadd -f -r kube-cert
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ${PROXY_SETTING} ~/kube/make-ca-cert.sh \"${MASTER_IP}\" \"${EXTRA_SANS}\"
 | 
					 | 
					 | 
					 | 
					      ${PROXY_SETTING} ~/kube/make-ca-cert.sh \"${MASTER_IP}\" \"${EXTRA_SANS}\"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/ 
 | 
					 | 
					 | 
					 | 
					      mkdir -p /opt/bin/
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/master/* /opt/bin/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/master/* /opt/bin/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cp ~/kube/minion/* /opt/bin/
 | 
					 | 
					 | 
					 | 
					      cp ~/kube/minion/* /opt/bin/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -512,7 +517,7 @@ function provision-masterandnode() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '" || {
 | 
					 | 
					 | 
					 | 
					      '" || {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      echo "Deploying master and node on machine ${MASTER_IP} failed"
 | 
					 | 
					 | 
					 | 
					      echo "Deploying master and node on machine ${MASTER_IP} failed"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      exit 1
 | 
					 | 
					 | 
					 | 
					      exit 1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }    
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# check whether kubelet has torn down all of the pods
 | 
					 | 
					 | 
					 | 
					# check whether kubelet has torn down all of the pods
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -531,14 +536,14 @@ function check-pods-torn-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# Delete a kubernetes cluster
 | 
					 | 
					 | 
					 | 
					# Delete a kubernetes cluster
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function kube-down() {
 | 
					 | 
					 | 
					 | 
					function kube-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/common.sh"
 | 
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/common.sh"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  tear_down_alive_resources
 | 
					 | 
					 | 
					 | 
					  tear_down_alive_resources
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  check-pods-torn-down 
 | 
					 | 
					 | 
					 | 
					  check-pods-torn-down
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local ii=0
 | 
					 | 
					 | 
					 | 
					  local ii=0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for i in ${nodes}; do
 | 
					 | 
					 | 
					 | 
					  for i in ${nodes}; do
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
 | 
					 | 
					 | 
					 | 
					      if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -553,7 +558,7 @@ function kube-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					              /etc/init/etcd.conf \
 | 
					 | 
					 | 
					 | 
					              /etc/init/etcd.conf \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					              /etc/init.d/etcd \
 | 
					 | 
					 | 
					 | 
					              /etc/init.d/etcd \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					              /etc/default/etcd
 | 
					 | 
					 | 
					 | 
					              /etc/default/etcd
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            rm -rf /infra*
 | 
					 | 
					 | 
					 | 
					            rm -rf /infra*
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            rm -rf /srv/kubernetes
 | 
					 | 
					 | 
					 | 
					            rm -rf /srv/kubernetes
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            '
 | 
					 | 
					 | 
					 | 
					            '
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -562,20 +567,20 @@ function kube-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if [[ "${roles[${ii}]}" == "ai" ]]; then
 | 
					 | 
					 | 
					 | 
					        if [[ "${roles[${ii}]}" == "ai" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          ssh $SSH_OPTS -t "$i" "sudo rm -rf /var/lib/kubelet"
 | 
					 | 
					 | 
					 | 
					          ssh $SSH_OPTS -t "$i" "sudo rm -rf /var/lib/kubelet"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        fi
 | 
					 | 
					 | 
					 | 
					        fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      elif [[ "${roles[${ii}]}" == "i" ]]; then
 | 
					 | 
					 | 
					 | 
					      elif [[ "${roles[${ii}]}" == "i" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        echo "Cleaning on node ${i#*@}"
 | 
					 | 
					 | 
					 | 
					        echo "Cleaning on node ${i#*@}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ssh $SSH_OPTS -t "$i" "
 | 
					 | 
					 | 
					 | 
					        ssh $SSH_OPTS -t "$i" "
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          pgrep flanneld && \
 | 
					 | 
					 | 
					 | 
					          pgrep flanneld && \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          sudo -p '[sudo] password to stop node: ' -- /bin/bash -c '
 | 
					 | 
					 | 
					 | 
					          sudo -p '[sudo] password to stop node: ' -- /bin/bash -c '
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            service flanneld stop
 | 
					 | 
					 | 
					 | 
					            service flanneld stop
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            rm -rf /var/lib/kubelet            
 | 
					 | 
					 | 
					 | 
					            rm -rf /var/lib/kubelet
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            '
 | 
					 | 
					 | 
					 | 
					            '
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          " || echo "Cleaning on node ${i#*@} failed"
 | 
					 | 
					 | 
					 | 
					          " || echo "Cleaning on node ${i#*@} failed"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else
 | 
					 | 
					 | 
					 | 
					      else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        echo "unsupported role for ${i}"
 | 
					 | 
					 | 
					 | 
					        echo "unsupported role for ${i}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      fi
 | 
					 | 
					 | 
					 | 
					      fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ssh $SSH_OPTS -t "$i" "sudo -- /bin/bash -c '
 | 
					 | 
					 | 
					 | 
					      ssh $SSH_OPTS -t "$i" "sudo -- /bin/bash -c '
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        rm -f \
 | 
					 | 
					 | 
					 | 
					        rm -f \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          /opt/bin/kube* \
 | 
					 | 
					 | 
					 | 
					          /opt/bin/kube* \
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -586,7 +591,7 @@ function kube-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          /etc/init.d/flanneld \
 | 
					 | 
					 | 
					 | 
					          /etc/init.d/flanneld \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          /etc/default/kube* \
 | 
					 | 
					 | 
					 | 
					          /etc/default/kube* \
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          /etc/default/flanneld
 | 
					 | 
					 | 
					 | 
					          /etc/default/flanneld
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        rm -rf ~/kube
 | 
					 | 
					 | 
					 | 
					        rm -rf ~/kube
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        rm -f /run/flannel/subnet.env
 | 
					 | 
					 | 
					 | 
					        rm -f /run/flannel/subnet.env
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '" || echo "cleaning legacy files on ${i#*@} failed"
 | 
					 | 
					 | 
					 | 
					      '" || echo "cleaning legacy files on ${i#*@} failed"
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -599,16 +604,16 @@ function kube-down() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function prepare-push() {
 | 
					 | 
					 | 
					 | 
					function prepare-push() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  # Use local binaries for kube-push
 | 
					 | 
					 | 
					 | 
					  # Use local binaries for kube-push
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if [[ -z "${KUBE_VERSION}" ]]; then
 | 
					 | 
					 | 
					 | 
					  if [[ -z "${KUBE_VERSION}" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    echo "Use local binaries for kube-push" 
 | 
					 | 
					 | 
					 | 
					    echo "Use local binaries for kube-push"
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if [[ ! -d "${KUBE_ROOT}/cluster/ubuntu/binaries" ]]; then
 | 
					 | 
					 | 
					 | 
					    if [[ ! -d "${KUBE_ROOT}/cluster/ubuntu/binaries" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      echo "No local binaries.Please check"
 | 
					 | 
					 | 
					 | 
					      echo "No local binaries.Please check"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      exit 1
 | 
					 | 
					 | 
					 | 
					      exit 1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else 
 | 
					 | 
					 | 
					 | 
					    else
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      echo "Please make sure all the required local binaries are prepared ahead"
 | 
					 | 
					 | 
					 | 
					      echo "Please make sure all the required local binaries are prepared ahead"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      sleep 3
 | 
					 | 
					 | 
					 | 
					      sleep 3
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    fi
 | 
					 | 
					 | 
					 | 
					    fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else
 | 
					 | 
					 | 
					 | 
					  else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # Run download-release.sh to get the required release 
 | 
					 | 
					 | 
					 | 
					    # Run download-release.sh to get the required release
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    export KUBE_VERSION
 | 
					 | 
					 | 
					 | 
					    export KUBE_VERSION
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    "${KUBE_ROOT}/cluster/ubuntu/download-release.sh"
 | 
					 | 
					 | 
					 | 
					    "${KUBE_ROOT}/cluster/ubuntu/download-release.sh"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  fi
 | 
					 | 
					 | 
					 | 
					  fi
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -617,13 +622,13 @@ function prepare-push() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# Update a kubernetes master with expected release
 | 
					 | 
					 | 
					 | 
					# Update a kubernetes master with expected release
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function push-master() {
 | 
					 | 
					 | 
					 | 
					function push-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if [[ ! -f "${KUBE_ROOT}/cluster/ubuntu/binaries/master/kube-apiserver" ]]; then
 | 
					 | 
					 | 
					 | 
					  if [[ ! -f "${KUBE_ROOT}/cluster/ubuntu/binaries/master/kube-apiserver" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    echo "There is no required release of kubernetes, please check first"
 | 
					 | 
					 | 
					 | 
					    echo "There is no required release of kubernetes, please check first"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    exit 1
 | 
					 | 
					 | 
					 | 
					    exit 1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  fi
 | 
					 | 
					 | 
					 | 
					  fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local ii=0
 | 
					 | 
					 | 
					 | 
					  local ii=0
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -651,8 +656,8 @@ function push-master() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        rm -f /run/flannel/subnet.env
 | 
					 | 
					 | 
					 | 
					        rm -f /run/flannel/subnet.env
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        rm -rf ~/kube
 | 
					 | 
					 | 
					 | 
					        rm -rf ~/kube
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      '" || echo "Cleaning master ${i#*@} failed"
 | 
					 | 
					 | 
					 | 
					      '" || echo "Cleaning master ${i#*@} failed"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    fi 
 | 
					 | 
					 | 
					 | 
					    fi
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if [[ "${roles[${ii}]}" == "a" ]]; then
 | 
					 | 
					 | 
					 | 
					    if [[ "${roles[${ii}]}" == "a" ]]; then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      provision-master
 | 
					 | 
					 | 
					 | 
					      provision-master
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elif [[ "${roles[${ii}]}" == "ai" ]]; then
 | 
					 | 
					 | 
					 | 
					    elif [[ "${roles[${ii}]}" == "ai" ]]; then
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -679,9 +684,9 @@ function push-node() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  fi
 | 
					 | 
					 | 
					 | 
					  fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
					 | 
					 | 
					 | 
					  setClusterInfo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local node_ip=${1}
 | 
					 | 
					 | 
					 | 
					  local node_ip=${1}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local ii=0
 | 
					 | 
					 | 
					 | 
					  local ii=0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local existing=false
 | 
					 | 
					 | 
					 | 
					  local existing=false
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -726,12 +731,12 @@ function push-node() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    echo "node ${node_ip} does not exist"
 | 
					 | 
					 | 
					 | 
					    echo "node ${node_ip} does not exist"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else
 | 
					 | 
					 | 
					 | 
					  else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    verify-cluster
 | 
					 | 
					 | 
					 | 
					    verify-cluster
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  fi 
 | 
					 | 
					 | 
					 | 
					  fi
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# Update a kubernetes cluster with expected source
 | 
					 | 
					 | 
					 | 
					# Update a kubernetes cluster with expected source
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					function kube-push() { 
 | 
					 | 
					 | 
					 | 
					function kube-push() {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  prepare-push
 | 
					 | 
					 | 
					 | 
					  prepare-push
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
					 | 
					 | 
					 | 
					  source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE:-config-default.sh}"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -739,9 +744,9 @@ function kube-push() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    echo "There is no required release of kubernetes, please check first"
 | 
					 | 
					 | 
					 | 
					    echo "There is no required release of kubernetes, please check first"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    exit 1
 | 
					 | 
					 | 
					 | 
					    exit 1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  fi
 | 
					 | 
					 | 
					 | 
					  fi
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
					 | 
					 | 
					 | 
					  export KUBECTL_PATH="${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #stop all the kube's process & etcd 
 | 
					 | 
					 | 
					 | 
					  #stop all the kube's process & etcd
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  local ii=0
 | 
					 | 
					 | 
					 | 
					  local ii=0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for i in ${nodes}; do
 | 
					 | 
					 | 
					 | 
					  for i in ${nodes}; do
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
 | 
					 | 
					 | 
					 | 
					     if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					 
 |