diff --git a/cluster/kube-env.sh b/cluster/kube-env.sh index ac9d74ac5fe..3847682b86a 100644 --- a/cluster/kube-env.sh +++ b/cluster/kube-env.sh @@ -30,3 +30,23 @@ if [[ -z "${color_start-}" ]]; then declare -r color_green="${color_start}0;32m" declare -r color_norm="${color_start}0m" fi + +# Returns the server version as MMmmpp, with MM as the major +# component, mm the minor component, and pp as the patch +# revision. e.g. 0.7.1 is echoed as 701, and 1.0.11 would be +# 10011. (This makes for easy integer comparison in bash.) +function kube_server_version() { + local server_version + local major + local minor + local patch + + # This sed expression is the POSIX BRE to match strings like: + # Server Version: &version.Info{Major:"0", Minor:"7+", GitVersion:"v0.7.0-dirty", GitCommit:"ad44234f7152e9c66bc2853575445c7071335e57", GitTreeState:"dirty"} + # and capture the GitVersion portion (which has the patch level) + server_version=$(${KUBECTL} --match-server-version=false version | grep "Server Version:") + read major minor patch < <( + echo ${server_version} | \ + sed "s/.*GitVersion:\"v\([0-9]\{1,\}\)\.\([0-9]\{1,\}\)\.\([0-9]\{1,\}\).*/\1 \2 \3/") + printf "%02d%02d%02d" ${major} ${minor} ${patch} | sed 's/^0*//' +} diff --git a/hack/e2e-suite/liveness.sh b/hack/e2e-suite/liveness.sh index 974002b50d4..32f0913b871 100755 --- a/hack/e2e-suite/liveness.sh +++ b/hack/e2e-suite/liveness.sh @@ -25,10 +25,20 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. source "${KUBE_ROOT}/cluster/kube-env.sh" source "${KUBE_ROOT}/cluster/$KUBERNETES_PROVIDER/util.sh" +liveness_tests="http exec" +if [[ ${KUBERNETES_PROVIDER} == "gke" ]]; then + server_version=$(kube_server_version) + if [[ ${server_version} -le 702 ]]; then + echo "GKE server version <= 0.7.2, limiting test to http (version = ${server_version})" + liveness_tests="http" + fi +fi + function teardown() { echo "Cleaning up test artifacts" - ${KUBECFG} delete pods/liveness-http - ${KUBECFG} delete pods/liveness-exec + for test in ${liveness_tests}; do + ${KUBECFG} delete pods/liveness-${test} + done } function waitForNotPending() { @@ -58,7 +68,7 @@ function waitForNotPending() { trap "teardown" EXIT -for test in http exec; do +for test in ${liveness_tests}; do echo "Liveness test: ${test}" ${KUBECFG} -c ${KUBE_ROOT}/examples/liveness/${test}-liveness.yaml create pods waitForNotPending