2 # shellcheck source=/dev/null
4 # For host setup as Kubernetes master
5 # Use the src of the default route as the default local IP
6 DEF_SRC_IP=$(ip route get 8.8.8.8 | awk '{ for (nn=1;nn<=NF;nn++) if ($nn~"src") print $(nn+1) }')
7 MGMT_IP=${1:-${DEF_SRC_IP}}
8 POD_NETWORK_CIDR=${2:-192.168.0.0/16}
9 SERVICE_CIDR=${3:-172.16.1.0/24}
11 if [ -z "${MGMT_IP}" ]; then
12 echo "Please specify a management IP!"
16 if ! kubectl get nodes --request-timeout=3s; then
17 sudo kubeadm config images pull
19 --pod-network-cidr="${POD_NETWORK_CIDR}" \
20 --apiserver-advertise-address="${MGMT_IP}" \
21 --service-cidr="${SERVICE_CIDR}"
23 if [ "$(id -u)" = 0 ]; then
24 echo "export KUBECONFIG=/etc/kubernetes/admin.conf" | \
25 tee -a "${HOME}/.bashrc"
26 # shellcheck disable=SC1090
27 source "${HOME}/.bashrc"
30 mkdir -p "${HOME}/.kube"
31 # shellcheck disable=SC2216
32 yes | sudo cp -rf /etc/kubernetes/admin.conf "${HOME}/.kube/config"
33 sudo chown "$(id -u)":"$(id -g)" "${HOME}/.kube/config"