#!/bin/bash -xv # Initialize control plane - following steps only on master. sudo kubeadm config images pull if [ ${NUM_CONTROLLERS} -le 1 ]; then # If single master CMD="sudo kubeadm init" POD_NETWORK=10.244.0.0/16 #Grep for IP from Vagrant file API_SERVER_INTERFACE=$(netstat -rn | grep '192\.168\.56' | awk {'print $8'}) API_SERVER_NETWORK=$(ip address show ${API_SERVER_INTERFACE}| egrep '192\.168\.56' | awk {'print $2'} | sed 's/\/.*//g') sudo kubeadm init --pod-network-cidr=${POD_NETWORK} --apiserver-advertise-address=${API_SERVER_NETWORK} else # If multi-master CMD="sudo kubeadm init --control-plane-endpoint ${KUBERNETES_PUBLIC_ADDRESS}:443 --upload-certs " fi $CMD > ~/init.txt 2>&1 cat ~/init.txt RETVAL=$? CERT=`egrep '\-\-certificate-key' ~/init.txt | egrep '\-\-control-plane' | awk {'print $3'}` sleep 300 if [ $RETVAL -ne 0 ]; then echo "ERROR: Not initialized properly. Troubleshooting information:" systemctl status kubelet journalctl -xeu kubelet fi sudo kubeadm config print init-defaults # Configure client mkdir -p $HOME/.kube ls -l /etc/kubernetes/admin.conf sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # Keep on trying to apply weave until successful RESULT=1 while [ -n "${RESULT}" ] && ( [ "${RESULT}" -ne 0 ] ); do #kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" # weaveworks not supported anymore, this is the only one that seems to work. kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml RESULT=$? sleep 5 done if [ ! -z "${CERT}" ]; then echo $CERT > ~/crt.txt else echo "WARNING: No certificate information generated for joining additional nodes to cluster." fi