Add ability to dockerize kubelet in local cluster

pull/6/head
Paul Morie 2015-05-05 17:12:00 -04:00
parent 58962100db
commit fa1d065595
3 changed files with 57 additions and 17 deletions

View File

@ -1,8 +1,7 @@
FROM centos
ADD kubelet /kubelet
RUN chmod a+rx /kubelet
ADD nsenter /nsenter
RUN chmod a+rx /nsenter
RUN cp /usr/bin/nsenter /nsenter
VOLUME /var/lib/docker
VOLUME /var/lib/kubelet

View File

@ -2,15 +2,19 @@
# TODO: figure out the best base image
# TODO: figure out how to best source the nsenter binary, if necessary
# TODO: figure out how to make a single source of version info for these
# images
VERSION=v0.16
release:
release: clean
curl -O https://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/linux/amd64/kubelet
docker build -t gcr.io/google_containers/kubelet:${VERSION} .
gcloud preview docker push gcr.io/google_containers/kubelet:${VERSION}
local:
docker build -t gcr.io/google_containers/kubelet:${VERSION} .
docker build -t gcr.io/google_containers/kubelet .
clean:
rm -f kubelet
.PHONY: release

View File

@ -20,6 +20,7 @@
DOCKER_OPTS=${DOCKER_OPTS:-""}
DOCKER_NATIVE=${DOCKER_NATIVE:-""}
DOCKER=(docker ${DOCKER_OPTS})
DOCKERIZE_KUBELET=${DOCKERIZE_KUBELET:-""}
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
cd "${KUBE_ROOT}"
@ -95,13 +96,28 @@ case "$(uname -m)" in
esac
GO_OUT="${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}"
KUBELET_CIDFILE=/tmp/kubelet.cid
cleanup_dockerized_kubelet()
{
if [[ -e $KUBELET_CIDFILE ]]; then
docker kill $(<$KUBELET_CIDFILE) > /dev/null
rm -f $KUBELET_CIDFILE
fi
}
cleanup()
{
echo "Cleaning up..."
[[ -n "${APISERVER_PID-}" ]] && sudo kill "${APISERVER_PID}"
[[ -n "${CTLRMGR_PID-}" ]] && sudo kill "${CTLRMGR_PID}"
if [[ -n "$DOCKERIZE_KUBELET" ]]; then
cleanup_dockerized_kubelet
else
[[ -n "${KUBELET_PID-}" ]] && sudo kill "${KUBELET_PID}"
fi
[[ -n "${PROXY_PID-}" ]] && sudo kill "${PROXY_PID}"
[[ -n "${SCHEDULER_PID-}" ]] && sudo kill "${SCHEDULER_PID}"
@ -143,16 +159,37 @@ sudo -E "${GO_OUT}/kube-controller-manager" \
CTLRMGR_PID=$!
KUBELET_LOG=/tmp/kubelet.log
if [[ -z "${DOCKERIZE_KUBELET}" ]]; then
sudo -E "${GO_OUT}/kubelet" \
--v=${LOG_LEVEL} \
--container_runtime="${CONTAINER_RUNTIME}" \
--chaos_chance="${CHAOS_CHANCE}" \
--container_runtime="${CONTAINER_RUNTIME}" \
--hostname_override="127.0.0.1" \
--address="127.0.0.1" \
--api_servers="${API_HOST}:${API_PORT}" \
--auth_path="${KUBE_ROOT}/hack/.test-cmd-auth" \
--port="$KUBELET_PORT" >"${KUBELET_LOG}" 2>&1 &
KUBELET_PID=$!
else
# Docker won't run a container with a cidfile (container id file)
# unless that file does not already exist; clean up an existing
# dockerized kubelet that might be running.
cleanup_dockerized_kubelet
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/tmp/kubelet.log:/tmp/kubelet.log:rw \
--net=host \
--privileged=true \
-i \
--cidfile=$KUBELET_CIDFILE \
gcr.io/google_containers/kubelet \
/kubelet --v=3 --containerized --chaos-chance="${CHAOS_CHANCE}" --hostname-override="127.0.0.1" --address="127.0.0.1" --api-servers="${API_HOST}:${API_PORT}" --port="$KUBELET_PORT" --resource-container="" &> $KUBELET_LOG &
fi
PROXY_LOG=/tmp/kube-proxy.log
sudo -E "${GO_OUT}/kube-proxy" \
@ -172,9 +209,9 @@ Local Kubernetes cluster is running. Press Ctrl-C to shut it down.
Logs:
${APISERVER_LOG}
${CTLRMGR_LOG}
${KUBELET_LOG}
${PROXY_LOG}
${SCHEDULER_LOG}
${KUBELET_LOG}
To start using your cluster, open up another terminal/tab and run: