diff --git a/cluster/images/kubelet/Dockerfile b/cluster/images/kubelet/Dockerfile index b9d9526109..423a7bae65 100644 --- a/cluster/images/kubelet/Dockerfile +++ b/cluster/images/kubelet/Dockerfile @@ -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 diff --git a/cluster/images/kubelet/Makefile b/cluster/images/kubelet/Makefile index bdbc82eae1..b1aa4a06d2 100644 --- a/cluster/images/kubelet/Makefile +++ b/cluster/images/kubelet/Makefile @@ -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 diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh index 59fa145dd7..9cdc0eb53c 100755 --- a/hack/local-up-cluster.sh +++ b/hack/local-up-cluster.sh @@ -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}" - [[ -n "${KUBELET_PID-}" ]] && sudo kill "${KUBELET_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 -sudo -E "${GO_OUT}/kubelet" \ - --v=${LOG_LEVEL} \ - --container_runtime="${CONTAINER_RUNTIME}" \ - --chaos_chance="${CHAOS_CHANCE}" \ - --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=$! +if [[ -z "${DOCKERIZE_KUBELET}" ]]; then + sudo -E "${GO_OUT}/kubelet" \ + --v=${LOG_LEVEL} \ + --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: