From 5c4c25cac6e817631a6fd9c265a617939ec78d43 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Wed, 20 Sep 2017 12:03:42 +0100 Subject: [PATCH] kubernetes: support auto-init via metadata Set KUBE_MASTER_AUTOINIT when using boot.sh to enable. User will need to pick up the token for other nodes using `kubeadm token list`. Signed-off-by: Ian Campbell --- projects/kubernetes/boot.sh | 11 +++++++++-- projects/kubernetes/kubernetes/kubeadm-init.sh | 2 +- projects/kubernetes/kubernetes/kubelet.sh | 10 +++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/projects/kubernetes/boot.sh b/projects/kubernetes/boot.sh index 3b041aef4..5be099635 100755 --- a/projects/kubernetes/boot.sh +++ b/projects/kubernetes/boot.sh @@ -23,7 +23,14 @@ suffix=".iso" if [ $# -eq 0 ] ; then img="kube-master" - data="" + # If $KUBE_MASTER_AUTOINIT is set, including if it is set to "" + # then we configure for auto init. If it is completely unset then + # we do not. + if [ -n "${KUBE_MASTER_AUTOINIT+x}" ] ; then + data="{\"kubeadm\": {\"init\": \"${KUBE_MASTER_AUTOINIT}\"} }" + else + data="" + fi state="kube-master-state" : ${KUBE_VCPUS:=$KUBE_MASTER_VCPUS} @@ -44,7 +51,7 @@ elif [ $# -gt 1 ] || [ $# -eq 1 -a -n "${KUBE_PRESERVE_STATE}" ] ; then img="kube-node" name="node-${1}" shift - data="${*}" + data="{\"kubeadm\": {\"join\": \"${*}\"} }" state="kube-${name}-state" : ${KUBE_VCPUS:=$KUBE_NODE_VCPUS} diff --git a/projects/kubernetes/kubernetes/kubeadm-init.sh b/projects/kubernetes/kubernetes/kubeadm-init.sh index 8c66f85d1..89403fee1 100755 --- a/projects/kubernetes/kubernetes/kubeadm-init.sh +++ b/projects/kubernetes/kubernetes/kubeadm-init.sh @@ -1,6 +1,6 @@ #!/bin/sh set -e -kubeadm init --skip-preflight-checks --kubernetes-version @KUBERNETES_VERSION@ +kubeadm init --skip-preflight-checks --kubernetes-version @KUBERNETES_VERSION@ $@ for i in /etc/kubeadm/kube-system.init/*.yaml ; do if [ -e "$i" ] ; then echo "Applying "$(basename "$i") diff --git a/projects/kubernetes/kubernetes/kubelet.sh b/projects/kubernetes/kubernetes/kubelet.sh index fd044b266..65df80a84 100755 --- a/projects/kubernetes/kubernetes/kubelet.sh +++ b/projects/kubernetes/kubernetes/kubelet.sh @@ -10,7 +10,15 @@ fi if [ -e /etc/kubelet.conf ] ; then . /etc/kubelet.conf fi -if [ -e /var/config/userdata ] ; then +if [ -e /var/config/kubeadm/init ] ; then + echo "kubelet.sh: init cluster with metadata \"$(cat /var/config/kubeadm/init)\"" + # This needs to be in the background since it waits for kubelet to start. + # We skip printing the token so it is not persisted in the log. + kubeadm-init.sh --skip-token-print $(cat /var/config/kubeadm/init) & +elif [ -e /var/config/kubeadm/join ] ; then + echo "kubelet.sh: joining cluster with metadata \"$(cat /var/config/kubeadm/join)\"" + kubeadm join --skip-preflight-checks $(cat /var/config/kubeadm/join) +elif [ -e /var/config/userdata ] ; then echo "kubelet.sh: joining cluster with metadata \"$(cat /var/config/userdata)\"" kubeadm join --skip-preflight-checks $(cat /var/config/userdata) fi