From cf41dcaeecbfb440099dc17ce618156537bd788e Mon Sep 17 00:00:00 2001 From: Random-Liu Date: Tue, 7 Mar 2017 14:45:04 -0800 Subject: [PATCH] Handle NPD during cluster upgrade. --- cluster/gce/config-default.sh | 1 - cluster/gce/config-test.sh | 1 - cluster/gce/upgrade.sh | 24 ++++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/cluster/gce/config-default.sh b/cluster/gce/config-default.sh index 2033d6d282d..331583b6b64 100755 --- a/cluster/gce/config-default.sh +++ b/cluster/gce/config-default.sh @@ -148,7 +148,6 @@ ENABLE_CLUSTER_UI="${KUBE_ENABLE_CLUSTER_UI:-true}" # standalone - Run node problem detector as standalone system daemon. if [[ "${NODE_OS_DISTRIBUTION}" == "gci" ]]; then # Enable standalone mode by default for gci. - # TODO: Consider upgrade test. ENABLE_NODE_PROBLEM_DETECTOR="${KUBE_ENABLE_NODE_PROBLEM_DETECTOR:-standalone}" else ENABLE_NODE_PROBLEM_DETECTOR="${KUBE_ENABLE_NODE_PROBLEM_DETECTOR:-daemonset}" diff --git a/cluster/gce/config-test.sh b/cluster/gce/config-test.sh index 0ffc30e208d..c4a02b2c46c 100755 --- a/cluster/gce/config-test.sh +++ b/cluster/gce/config-test.sh @@ -173,7 +173,6 @@ ENABLE_CLUSTER_UI="${KUBE_ENABLE_CLUSTER_UI:-true}" # standalone - Run node problem detector as standalone system daemon. if [[ "${NODE_OS_DISTRIBUTION}" == "gci" ]]; then # Enable standalone mode by default for gci. - # TODO: Consider upgrade test. ENABLE_NODE_PROBLEM_DETECTOR="${KUBE_ENABLE_NODE_PROBLEM_DETECTOR:-standalone}" else ENABLE_NODE_PROBLEM_DETECTOR="${KUBE_ENABLE_NODE_PROBLEM_DETECTOR:-daemonset}" diff --git a/cluster/gce/upgrade.sh b/cluster/gce/upgrade.sh index 5286bd47e5b..39afa69cc4b 100755 --- a/cluster/gce/upgrade.sh +++ b/cluster/gce/upgrade.sh @@ -88,6 +88,8 @@ function upgrade-master() { detect-master parse-master-env + upgrade-master-env + backfile-kubeletauth-certs # Delete the master instance. Note that the master-pd is created @@ -102,6 +104,15 @@ function upgrade-master() { wait-for-master } +function upgrade-master-env() { + echo "== Upgrading master environment variables. ==" + # Generate the node problem detector token if it isn't present on the original + # master. + if [[ "${ENABLE_NODE_PROBLEM_DETECTOR:-}" == "standalone" && "${NODE_PROBLEM_DETECTOR_TOKEN:-}" == "" ]]; then + NODE_PROBLEM_DETECTOR_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null) + fi +} + # TODO(mikedanese): delete when we don't support < 1.6 function backfile-kubeletauth-certs() { if [[ ! -z "${KUBEAPISERVER_CERT_BASE64:-}" && ! -z "${KUBEAPISERVER_CERT_BASE64:-}" ]]; then @@ -282,6 +293,8 @@ function prepare-node-upgrade() { KUBELET_CERT_BASE64=$(get-env-val "${node_env}" "KUBELET_CERT") KUBELET_KEY_BASE64=$(get-env-val "${node_env}" "KUBELET_KEY") + upgrade-node-env + # TODO(zmerlynn): How do we ensure kube-env is written in a ${version}- # compatible way? write-node-env @@ -295,6 +308,17 @@ function prepare-node-upgrade() { echo "== Finished preparing node upgrade (to ${KUBE_VERSION}). ==" >&2 } +function upgrade-node-env() { + echo "== Upgrading node environment variables. ==" + # Get the node problem detector token from master if it isn't present on + # the original node. + if [[ "${ENABLE_NODE_PROBLEM_DETECTOR:-}" == "standalone" && "${NODE_PROBLEM_DETECTOR_TOKEN:-}" == "" ]]; then + detect-master + local master_env=$(get-master-env) + NODE_PROBLEM_DETECTOR_TOKEN=$(get-env-val "${master_env}" "NODE_PROBLEM_DETECTOR_TOKEN") + fi +} + # Prereqs: # - prepare-node-upgrade should have been called successfully function do-node-upgrade() {