Add heapster to kubemark
This commit is contained in:
parent
32121e344b
commit
b14809832b
@ -28,6 +28,8 @@ EVENT_STORE_NAME="${INSTANCE_PREFIX}-event-store"
|
|||||||
RETRIES=3
|
RETRIES=3
|
||||||
|
|
||||||
export KUBECTL="${KUBE_ROOT}/cluster/kubectl.sh"
|
export KUBECTL="${KUBE_ROOT}/cluster/kubectl.sh"
|
||||||
|
export KUBEMARK_DIRECTORY="${KUBE_ROOT}/test/kubemark"
|
||||||
|
export RESOURCE_DIRECTORY="${KUBEMARK_DIRECTORY}/resources"
|
||||||
|
|
||||||
# Runs gcloud compute command with the given parameters. Up to $RETRIES will be made
|
# Runs gcloud compute command with the given parameters. Up to $RETRIES will be made
|
||||||
# to execute the command.
|
# to execute the command.
|
||||||
|
83
test/kubemark/resources/heapster_template.json
Normal file
83
test/kubemark/resources/heapster_template.json
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"kind": "ReplicationController",
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"metadata": {
|
||||||
|
"name": "heapster-v1.1.0.beta1",
|
||||||
|
"labels": {
|
||||||
|
"k8s-app": "heapster",
|
||||||
|
"version": "v1.1.0.beta1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"replicas": 1,
|
||||||
|
"selector": {
|
||||||
|
"k8s-app": "heapster",
|
||||||
|
"version": "v1.1.0.beta1"
|
||||||
|
},
|
||||||
|
"template": {
|
||||||
|
"metadata": {
|
||||||
|
"labels": {
|
||||||
|
"k8s-app": "heapster",
|
||||||
|
"version": "v1.1.0.beta1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"volumes": [
|
||||||
|
{
|
||||||
|
"name": "kubeconfig-volume",
|
||||||
|
"secret": {
|
||||||
|
"secretName": "kubeconfig"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"containers": [
|
||||||
|
{
|
||||||
|
"name": "heapster",
|
||||||
|
"image": "gcr.io/google_containers/heapster:v1.1.0-beta1",
|
||||||
|
"resources": {
|
||||||
|
"requests": {
|
||||||
|
"cpu": "100m",
|
||||||
|
"memory": "##METRICS_MEM##Mi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"command": [
|
||||||
|
"/heapster"
|
||||||
|
],
|
||||||
|
"args": [
|
||||||
|
"--source=kubernetes:https://##MASTER_IP##:443?inClusterConfig=0&useServiceAccount=0&auth=/kubeconfig/kubeconfig"
|
||||||
|
],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "kubeconfig-volume",
|
||||||
|
"mountPath": "/kubeconfig"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "eventer",
|
||||||
|
"image": "gcr.io/google_containers/heapster:v1.1.0-beta1",
|
||||||
|
"resources": {
|
||||||
|
"requests": {
|
||||||
|
"cpu": "100m",
|
||||||
|
"memory": "##EVENTER_MEM##Ki"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"command": [
|
||||||
|
"/eventer"
|
||||||
|
],
|
||||||
|
"args": [
|
||||||
|
"--source=kubernetes:https://104.197.233.84:443?inClusterConfig=0&useServiceAccount=0&auth=/kubeconfig/kubeconfig"
|
||||||
|
],
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "kubeconfig-volume",
|
||||||
|
"mountPath": "/kubeconfig"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -30,7 +30,7 @@ echo "Kubemark master name: ${MASTER_NAME}"
|
|||||||
detect-master
|
detect-master
|
||||||
|
|
||||||
export KUBE_MASTER_URL="https://${KUBE_MASTER_IP}"
|
export KUBE_MASTER_URL="https://${KUBE_MASTER_IP}"
|
||||||
export KUBECONFIG="${ABSOLUTE_ROOT}/test/kubemark/kubeconfig.loc"
|
export KUBECONFIG="${ABSOLUTE_ROOT}/test/kubemark/resources/kubeconfig.loc"
|
||||||
export E2E_MIN_STARTUP_PODS=0
|
export E2E_MIN_STARTUP_PODS=0
|
||||||
|
|
||||||
if [[ -z "$@" ]]; then
|
if [[ -z "$@" ]]; then
|
||||||
|
@ -104,9 +104,9 @@ create-certs ${MASTER_IP}
|
|||||||
KUBELET_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
|
KUBELET_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
|
||||||
KUBE_PROXY_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
|
KUBE_PROXY_TOKEN=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
|
||||||
|
|
||||||
echo "${CA_CERT_BASE64}" | base64 -d > ca.crt
|
echo "${CA_CERT_BASE64}" | base64 -d > "${RESOURCE_DIRECTORY}/ca.crt"
|
||||||
echo "${KUBECFG_CERT_BASE64}" | base64 -d > kubecfg.crt
|
echo "${KUBECFG_CERT_BASE64}" | base64 -d > "${RESOURCE_DIRECTORY}/kubecfg.crt"
|
||||||
echo "${KUBECFG_KEY_BASE64}" | base64 -d > kubecfg.key
|
echo "${KUBECFG_KEY_BASE64}" | base64 -d > "${RESOURCE_DIRECTORY}/kubecfg.key"
|
||||||
|
|
||||||
until gcloud compute ssh --zone="${ZONE}" --project="${PROJECT}" "${MASTER_NAME}" --command="ls" &> /dev/null; do
|
until gcloud compute ssh --zone="${ZONE}" --project="${PROJECT}" "${MASTER_NAME}" --command="ls" &> /dev/null; do
|
||||||
sleep 1
|
sleep 1
|
||||||
@ -129,14 +129,14 @@ gcloud compute ssh --zone="${ZONE}" --project="${PROJECT}" "${MASTER_NAME}" \
|
|||||||
if [ "${RUN_FROM_DISTRO}" == "false" ]; then
|
if [ "${RUN_FROM_DISTRO}" == "false" ]; then
|
||||||
gcloud compute copy-files --zone="${ZONE}" --project="${PROJECT}" \
|
gcloud compute copy-files --zone="${ZONE}" --project="${PROJECT}" \
|
||||||
"${KUBE_ROOT}/_output/release-tars/kubernetes-server-linux-amd64.tar.gz" \
|
"${KUBE_ROOT}/_output/release-tars/kubernetes-server-linux-amd64.tar.gz" \
|
||||||
"${KUBE_ROOT}/test/kubemark/start-kubemark-master.sh" \
|
"${KUBEMARK_DIRECTORY}/start-kubemark-master.sh" \
|
||||||
"${KUBE_ROOT}/test/kubemark/configure-kubectl.sh" \
|
"${KUBEMARK_DIRECTORY}/configure-kubectl.sh" \
|
||||||
"${MASTER_NAME}":~
|
"${MASTER_NAME}":~
|
||||||
else
|
else
|
||||||
gcloud compute copy-files --zone="${ZONE}" --project="${PROJECT}" \
|
gcloud compute copy-files --zone="${ZONE}" --project="${PROJECT}" \
|
||||||
"${KUBE_ROOT}/server/kubernetes-server-linux-amd64.tar.gz" \
|
"${KUBE_ROOT}/server/kubernetes-server-linux-amd64.tar.gz" \
|
||||||
"${KUBE_ROOT}/test/kubemark/start-kubemark-master.sh" \
|
"${KUBEMARK_DIRECTORY}/start-kubemark-master.sh" \
|
||||||
"${KUBE_ROOT}/test/kubemark/configure-kubectl.sh" \
|
"${KUBEMARK_DIRECTORY}/configure-kubectl.sh" \
|
||||||
"${MASTER_NAME}":~
|
"${MASTER_NAME}":~
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ contexts:
|
|||||||
name: kubemark-context
|
name: kubemark-context
|
||||||
current-context: kubemark-context" | base64 | tr -d "\n\r")
|
current-context: kubemark-context" | base64 | tr -d "\n\r")
|
||||||
|
|
||||||
KUBECONFIG_SECRET=kubeconfig_secret.json
|
KUBECONFIG_SECRET="${RESOURCE_DIRECTORY}/kubeconfig_secret.json"
|
||||||
cat > "${KUBECONFIG_SECRET}" << EOF
|
cat > "${KUBECONFIG_SECRET}" << EOF
|
||||||
{
|
{
|
||||||
"apiVersion": "v1",
|
"apiVersion": "v1",
|
||||||
@ -178,7 +178,7 @@ cat > "${KUBECONFIG_SECRET}" << EOF
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
LOCAL_KUBECONFIG=${KUBE_ROOT}/test/kubemark/kubeconfig.loc
|
LOCAL_KUBECONFIG="${RESOURCE_DIRECTORY}/kubeconfig.loc"
|
||||||
cat > "${LOCAL_KUBECONFIG}" << EOF
|
cat > "${LOCAL_KUBECONFIG}" << EOF
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Config
|
kind: Config
|
||||||
@ -202,17 +202,30 @@ contexts:
|
|||||||
current-context: kubemark-context
|
current-context: kubemark-context
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sed "s/##numreplicas##/${NUM_NODES:-10}/g" "${KUBE_ROOT}"/test/kubemark/hollow-node_template.json > "${KUBE_ROOT}"/test/kubemark/hollow-node.json
|
|
||||||
sed -i'' -e "s/##project##/${PROJECT}/g" "${KUBE_ROOT}"/test/kubemark/hollow-node.json
|
sed "s/##numreplicas##/${NUM_NODES:-10}/g" "${RESOURCE_DIRECTORY}/hollow-node_template.json" > "${RESOURCE_DIRECTORY}/hollow-node.json"
|
||||||
"${KUBECTL}" create -f "${KUBE_ROOT}"/test/kubemark/kubemark-ns.json
|
sed -i'' -e "s/##project##/${PROJECT}/g" "${RESOURCE_DIRECTORY}/hollow-node.json"
|
||||||
|
|
||||||
|
mkdir "${RESOURCE_DIRECTORY}/addons" || true
|
||||||
|
|
||||||
|
sed "s/##MASTER_IP##/${MASTER_IP}/g" "${RESOURCE_DIRECTORY}/heapster_template.json" > "${RESOURCE_DIRECTORY}/addons/heapster.json"
|
||||||
|
metrics_mem_per_node=4
|
||||||
|
metrics_mem=$((200 + ${metrics_mem_per_node}*${NUM_NODES:-10}))
|
||||||
|
sed -i'' -e "s/##METRICS_MEM##/${metrics_mem}/g" "${RESOURCE_DIRECTORY}/addons/heapster.json"
|
||||||
|
eventer_mem_per_node=500
|
||||||
|
eventer_mem=$((200 * 1024 + ${eventer_mem_per_node}*${NUM_NODES:-10}))
|
||||||
|
sed -i'' -e "s/##EVENTER_MEM##/${eventer_mem}/g" "${RESOURCE_DIRECTORY}/addons/heapster.json"
|
||||||
|
|
||||||
|
"${KUBECTL}" create -f "${RESOURCE_DIRECTORY}/kubemark-ns.json"
|
||||||
"${KUBECTL}" create -f "${KUBECONFIG_SECRET}" --namespace="kubemark"
|
"${KUBECTL}" create -f "${KUBECONFIG_SECRET}" --namespace="kubemark"
|
||||||
"${KUBECTL}" create -f "${KUBE_ROOT}"/test/kubemark/hollow-node.json --namespace="kubemark"
|
"${KUBECTL}" create -f "${RESOURCE_DIRECTORY}/addons" --namespace="kubemark"
|
||||||
|
"${KUBECTL}" create -f "${RESOURCE_DIRECTORY}/hollow-node.json" --namespace="kubemark"
|
||||||
|
|
||||||
rm "${KUBECONFIG_SECRET}"
|
rm "${KUBECONFIG_SECRET}"
|
||||||
|
|
||||||
echo "Waiting for all HollowNodes to become Running..."
|
echo "Waiting for all HollowNodes to become Running..."
|
||||||
start=$(date +%s)
|
start=$(date +%s)
|
||||||
nodes=$("${KUBECTL}" --kubeconfig="${KUBE_ROOT}"/test/kubemark/kubeconfig.loc get node) || true
|
nodes=$("${KUBECTL}" --kubeconfig="${RESOURCE_DIRECTORY}/kubeconfig.loc" get node) || true
|
||||||
ready=$(($(echo "${nodes}" | grep -v "NotReady" | wc -l) - 1))
|
ready=$(($(echo "${nodes}" | grep -v "NotReady" | wc -l) - 1))
|
||||||
|
|
||||||
until [[ "${ready}" -ge "${NUM_NODES}" ]]; do
|
until [[ "${ready}" -ge "${NUM_NODES}" ]]; do
|
||||||
@ -224,16 +237,16 @@ until [[ "${ready}" -ge "${NUM_NODES}" ]]; do
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Timeout waiting for all HollowNodes to become Running"
|
echo "Timeout waiting for all HollowNodes to become Running"
|
||||||
# Try listing nodes again - if it fails it means that API server is not responding
|
# Try listing nodes again - if it fails it means that API server is not responding
|
||||||
if "${KUBECTL}" --kubeconfig="${KUBE_ROOT}"/test/kubemark/kubeconfig.loc get node &> /dev/null; then
|
if "${KUBECTL}" --kubeconfig="${RESOURCE_DIRECTORY}/kubeconfig.loc" get node &> /dev/null; then
|
||||||
echo "Found only ${ready} ready Nodes while waiting for ${NUM_NODES}."
|
echo "Found only ${ready} ready Nodes while waiting for ${NUM_NODES}."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Got error while trying to list Nodes. Probably API server is down."
|
echo "Got error while trying to list Nodes. Probably API server is down."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
nodes=$("${KUBECTL}" --kubeconfig="${KUBE_ROOT}"/test/kubemark/kubeconfig.loc get node) || true
|
nodes=$("${KUBECTL}" --kubeconfig="${RESOURCE_DIRECTORY}/kubeconfig.loc" get node) || true
|
||||||
ready=$(($(echo "${nodes}" | grep -v "NotReady" | wc -l) - 1))
|
ready=$(($(echo "${nodes}" | grep -v "NotReady" | wc -l) - 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo "Password to kubemark master: ${password}"
|
echo "Password to kubemark master: ${password}"
|
||||||
|
@ -19,8 +19,10 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|||||||
|
|
||||||
source "${KUBE_ROOT}/test/kubemark/common.sh"
|
source "${KUBE_ROOT}/test/kubemark/common.sh"
|
||||||
|
|
||||||
"${KUBECTL}" delete -f ${KUBE_ROOT}/test/kubemark/hollow-kubelet.json &> /dev/null || true
|
"${KUBECTL}" delete -f "${RESOURCE_DIRECTORY}/hollow-kubelet.json" &> /dev/null || true
|
||||||
"${KUBECTL}" delete -f ${KUBE_ROOT}/test/kubemark/kubemark-ns.json &> /dev/null || true
|
"${KUBECTL}" delete -f "${RESOURCE_DIRECTORY}/addons" &> /dev/null || true
|
||||||
|
"${KUBECTL}" delete -f "${RESOURCE_DIRECTORY}/kubemark-ns.json" &> /dev/null || true
|
||||||
|
rm -rf "${RESOURCE_DIRECTORY}/addons"
|
||||||
|
|
||||||
GCLOUD_COMMON_ARGS="--project ${PROJECT} --zone ${ZONE} --quiet"
|
GCLOUD_COMMON_ARGS="--project ${PROJECT} --zone ${ZONE} --quiet"
|
||||||
|
|
||||||
@ -42,5 +44,5 @@ if [ "${SEPARATE_EVENT_MACHINE:-false}" == "true" ]; then
|
|||||||
${GCLOUD_COMMON_ARGS} || true
|
${GCLOUD_COMMON_ARGS} || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf "${KUBE_ROOT}/test/kubemark/kubeconfig.loc" &> /dev/null || true
|
rm -rf "${RESOURCE_DIRECTORY}/addons" "${RESOURCE_DIRECTORY}/kubeconfig.loc" &> /dev/null || true
|
||||||
rm "ca.crt" "kubecfg.crt" "kubecfg.key" "${KUBE_ROOT}/test/kubemark/hollow-node.json" &> /dev/null || true
|
rm "${RESOURCE_DIRECTORY}/ca.crt" "${RESOURCE_DIRECTORY}/kubecfg.crt" "${RESOURCE_DIRECTORY}/kubecfg.key" "${RESOURCE_DIRECTORY}/hollow-node.json" &> /dev/null || true
|
||||||
|
Loading…
Reference in New Issue
Block a user