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
|
FROM centos
|
||||||
ADD kubelet /kubelet
|
ADD kubelet /kubelet
|
||||||
RUN chmod a+rx /kubelet
|
RUN chmod a+rx /kubelet
|
||||||
ADD nsenter /nsenter
|
RUN cp /usr/bin/nsenter /nsenter
|
||||||
RUN chmod a+rx /nsenter
|
|
||||||
|
|
||||||
VOLUME /var/lib/docker
|
VOLUME /var/lib/docker
|
||||||
VOLUME /var/lib/kubelet
|
VOLUME /var/lib/kubelet
|
||||||
|
|
|
@ -2,15 +2,19 @@
|
||||||
|
|
||||||
# TODO: figure out the best base image
|
# TODO: figure out the best base image
|
||||||
# TODO: figure out how to best source the nsenter binary, if necessary
|
# 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
|
VERSION=v0.16
|
||||||
|
|
||||||
release:
|
release: clean
|
||||||
curl -O https://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/linux/amd64/kubelet
|
curl -O https://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/linux/amd64/kubelet
|
||||||
docker build -t gcr.io/google_containers/kubelet:${VERSION} .
|
docker build -t gcr.io/google_containers/kubelet:${VERSION} .
|
||||||
gcloud preview docker push gcr.io/google_containers/kubelet:${VERSION}
|
gcloud preview docker push gcr.io/google_containers/kubelet:${VERSION}
|
||||||
|
|
||||||
local:
|
local:
|
||||||
docker build -t gcr.io/google_containers/kubelet:${VERSION} .
|
docker build -t gcr.io/google_containers/kubelet .
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f kubelet
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
DOCKER_OPTS=${DOCKER_OPTS:-""}
|
DOCKER_OPTS=${DOCKER_OPTS:-""}
|
||||||
DOCKER_NATIVE=${DOCKER_NATIVE:-""}
|
DOCKER_NATIVE=${DOCKER_NATIVE:-""}
|
||||||
DOCKER=(docker ${DOCKER_OPTS})
|
DOCKER=(docker ${DOCKER_OPTS})
|
||||||
|
DOCKERIZE_KUBELET=${DOCKERIZE_KUBELET:-""}
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
||||||
cd "${KUBE_ROOT}"
|
cd "${KUBE_ROOT}"
|
||||||
|
@ -95,13 +96,28 @@ case "$(uname -m)" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
GO_OUT="${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}"
|
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()
|
cleanup()
|
||||||
{
|
{
|
||||||
echo "Cleaning up..."
|
echo "Cleaning up..."
|
||||||
[[ -n "${APISERVER_PID-}" ]] && sudo kill "${APISERVER_PID}"
|
[[ -n "${APISERVER_PID-}" ]] && sudo kill "${APISERVER_PID}"
|
||||||
[[ -n "${CTLRMGR_PID-}" ]] && sudo kill "${CTLRMGR_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 "${PROXY_PID-}" ]] && sudo kill "${PROXY_PID}"
|
||||||
[[ -n "${SCHEDULER_PID-}" ]] && sudo kill "${SCHEDULER_PID}"
|
[[ -n "${SCHEDULER_PID-}" ]] && sudo kill "${SCHEDULER_PID}"
|
||||||
|
|
||||||
|
@ -143,16 +159,37 @@ sudo -E "${GO_OUT}/kube-controller-manager" \
|
||||||
CTLRMGR_PID=$!
|
CTLRMGR_PID=$!
|
||||||
|
|
||||||
KUBELET_LOG=/tmp/kubelet.log
|
KUBELET_LOG=/tmp/kubelet.log
|
||||||
sudo -E "${GO_OUT}/kubelet" \
|
if [[ -z "${DOCKERIZE_KUBELET}" ]]; then
|
||||||
--v=${LOG_LEVEL} \
|
sudo -E "${GO_OUT}/kubelet" \
|
||||||
--container_runtime="${CONTAINER_RUNTIME}" \
|
--v=${LOG_LEVEL} \
|
||||||
--chaos_chance="${CHAOS_CHANCE}" \
|
--chaos_chance="${CHAOS_CHANCE}" \
|
||||||
--hostname_override="127.0.0.1" \
|
--container_runtime="${CONTAINER_RUNTIME}" \
|
||||||
--address="127.0.0.1" \
|
--hostname_override="127.0.0.1" \
|
||||||
--api_servers="${API_HOST}:${API_PORT}" \
|
--address="127.0.0.1" \
|
||||||
--auth_path="${KUBE_ROOT}/hack/.test-cmd-auth" \
|
--api_servers="${API_HOST}:${API_PORT}" \
|
||||||
--port="$KUBELET_PORT" >"${KUBELET_LOG}" 2>&1 &
|
--auth_path="${KUBE_ROOT}/hack/.test-cmd-auth" \
|
||||||
KUBELET_PID=$!
|
--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
|
PROXY_LOG=/tmp/kube-proxy.log
|
||||||
sudo -E "${GO_OUT}/kube-proxy" \
|
sudo -E "${GO_OUT}/kube-proxy" \
|
||||||
|
@ -172,9 +209,9 @@ Local Kubernetes cluster is running. Press Ctrl-C to shut it down.
|
||||||
Logs:
|
Logs:
|
||||||
${APISERVER_LOG}
|
${APISERVER_LOG}
|
||||||
${CTLRMGR_LOG}
|
${CTLRMGR_LOG}
|
||||||
${KUBELET_LOG}
|
|
||||||
${PROXY_LOG}
|
${PROXY_LOG}
|
||||||
${SCHEDULER_LOG}
|
${SCHEDULER_LOG}
|
||||||
|
${KUBELET_LOG}
|
||||||
|
|
||||||
To start using your cluster, open up another terminal/tab and run:
|
To start using your cluster, open up another terminal/tab and run:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue