mirror of https://github.com/k3s-io/k3s
Add ability to dockerize kubelet in local cluster
parent
58962100db
commit
fa1d065595
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
Loading…
Reference in New Issue