2015-12-28 17:28:10 +00:00
|
|
|
From nobody Tue Dec 22 10:13:54 2015
|
2015-10-15 18:13:57 +00:00
|
|
|
Content-Type: multipart/mixed; boundary="===================================="
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-env.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Prepare kube node environment"
|
|
|
|
|
|
|
|
start on cloud-config
|
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
# Fetch the script for configuring the instance.
|
2015-08-10 23:59:00 +00:00
|
|
|
curl --fail --silent --show-error \
|
|
|
|
-H "X-Google-Metadata-Request: True" \
|
2015-11-06 01:14:47 +00:00
|
|
|
-o /etc/kube-configure.sh \
|
|
|
|
http://metadata.google.internal/computeMetadata/v1/instance/attributes/configure-sh
|
|
|
|
. /etc/kube-configure.sh
|
|
|
|
|
|
|
|
echo "Configuring hostname"
|
|
|
|
config_hostname
|
|
|
|
echo "Configuring IP firewall rules"
|
|
|
|
config_ip_firewall
|
|
|
|
echo "Downloading kube-env file"
|
|
|
|
download_kube_env
|
2015-12-28 17:28:10 +00:00
|
|
|
echo "Creating required directories"
|
|
|
|
. /etc/kube-env
|
|
|
|
create_dirs
|
2015-11-06 01:14:47 +00:00
|
|
|
echo "Creating kubelet kubeconfig file"
|
|
|
|
create_kubelet_kubeconfig
|
|
|
|
echo "Creating kube-proxy kubeconfig file"
|
|
|
|
create_kubeproxy_kubeconfig
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-install-packages.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Install packages needed to run kubernetes"
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
start on stopped kube-env
|
2015-08-10 23:59:00 +00:00
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
. /etc/kube-configure.sh
|
|
|
|
install_critical_packages
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-17 18:07:21 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-install-additional-packages.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Install additional packages used by kubernetes"
|
|
|
|
|
2015-08-20 18:39:58 +00:00
|
|
|
start on stopped kube-install-packages
|
2015-08-17 18:07:21 +00:00
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
. /etc/kube-configure.sh
|
|
|
|
install_additional_packages
|
2015-08-17 18:07:21 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-install-minion.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Download and install k8s binaries and configurations"
|
|
|
|
|
|
|
|
start on stopped kube-env
|
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
. /etc/kube-configure.sh
|
2015-12-28 17:28:10 +00:00
|
|
|
. /etc/kube-env
|
2015-11-06 01:14:47 +00:00
|
|
|
install_kube_binary_config
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kubelet.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Run kubelet service"
|
|
|
|
|
|
|
|
start on stopped kube-install-minion and stopped kube-install-packages
|
|
|
|
|
|
|
|
respawn
|
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-08-10 23:59:00 +00:00
|
|
|
. /etc/kube-env
|
2015-08-20 18:39:58 +00:00
|
|
|
ARGS="--v=2"
|
|
|
|
if [ -n "${KUBELET_TEST_ARGS:-}" ]; then
|
|
|
|
ARGS="${KUBELET_TEST_ARGS}"
|
|
|
|
fi
|
|
|
|
BINARY_PATH="/usr/bin/kubelet"
|
|
|
|
if [ "${TEST_CLUSTER:-}" = "true" ]; then
|
|
|
|
BINARY_PATH="/usr/local/bin/kubelet"
|
|
|
|
fi
|
|
|
|
${BINARY_PATH} \
|
2015-08-17 18:07:21 +00:00
|
|
|
--api-servers=https://${KUBERNETES_MASTER_NAME} \
|
2015-08-10 23:59:00 +00:00
|
|
|
--enable-debugging-handlers=true \
|
2015-08-17 01:30:59 +00:00
|
|
|
--cloud-provider=gce \
|
2015-08-10 23:59:00 +00:00
|
|
|
--config=/etc/kubernetes/manifests \
|
2015-10-07 22:10:14 +00:00
|
|
|
--allow-privileged=true \
|
2015-08-17 18:07:21 +00:00
|
|
|
--cluster-dns=${DNS_SERVER_IP} \
|
|
|
|
--cluster-domain=${DNS_DOMAIN} \
|
2015-08-10 23:59:00 +00:00
|
|
|
--configure-cbr0=true \
|
2015-08-17 01:30:59 +00:00
|
|
|
--cgroup-root=/ \
|
2015-08-20 18:39:58 +00:00
|
|
|
--system-container=/system \
|
2015-12-09 22:57:32 +00:00
|
|
|
--nosystemd=true \
|
2015-08-20 18:39:58 +00:00
|
|
|
${ARGS}
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
|
|
|
# Wait for 10s to start kubelet again.
|
|
|
|
post-stop exec sleep 10
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
2015-12-28 17:28:10 +00:00
|
|
|
Content-Disposition: attachment; filename="kube-docker.conf"
|
2015-08-10 23:59:00 +00:00
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
description "Restart docker daemon"
|
2015-08-10 23:59:00 +00:00
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
# The condition "stopped kube-install-additional-packages" is to avoid
|
|
|
|
# breaking nsenter installation, which is through a docker container.
|
|
|
|
# It can be removed if we find a better way to install nsenter.
|
|
|
|
start on started kubelet and stopped kube-install-additional-packages
|
2015-08-10 23:59:00 +00:00
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
. /etc/kube-configure.sh
|
2015-08-10 23:59:00 +00:00
|
|
|
. /etc/kube-env
|
2015-12-28 17:28:10 +00:00
|
|
|
restart_docker_daemon
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
2015-12-28 17:28:10 +00:00
|
|
|
Content-Disposition: attachment; filename="kube-proxy.conf"
|
2015-08-10 23:59:00 +00:00
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
description "Start kube-proxy static pod"
|
2015-08-10 23:59:00 +00:00
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
start on stopped kube-docker
|
2015-08-10 23:59:00 +00:00
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-11-06 01:14:47 +00:00
|
|
|
. /etc/kube-configure.sh
|
2015-12-28 17:28:10 +00:00
|
|
|
. /etc/kube-env
|
|
|
|
prepare_log_file "/var/log/kube-proxy.log"
|
|
|
|
# Load the docker image from file /run/kube-docker-files/kube-proxy.tar.
|
|
|
|
echo "Try to load docker image file kube-proxy.tar"
|
|
|
|
timeout 30 docker load -i /run/kube-docker-files/kube-proxy.tar
|
|
|
|
# Copy the manifest to /tmp to manipulate
|
|
|
|
tmp_file="/tmp/kube-proxy.manifest"
|
|
|
|
cp -f /run/kube-manifests/kubernetes/kube-proxy.manifest ${tmp_file}
|
|
|
|
# Remove the lines of salt configuration and replace variables with values.
|
|
|
|
# NOTE: Changes to variable names in cluster/saltbase/salt/kube-proxy/kube-proxy.manifest
|
|
|
|
# may break this upstart job.
|
|
|
|
sed -i "/^ *{%/d" ${tmp_file}
|
|
|
|
kubeconfig="--kubeconfig=\/var\/lib\/kube-proxy\/kubeconfig"
|
|
|
|
kube_docker_registry="gcr.io\/google_containers"
|
|
|
|
if [ -n "${KUBE_DOCKER_REGISTRY:-}" ]; then
|
|
|
|
kube_docker_registry=${KUBE_DOCKER_REGISTRY}
|
|
|
|
fi
|
|
|
|
kube_proxy_docker_tag=$(cat /run/kube-docker-files/kube-proxy.docker_tag)
|
|
|
|
test_args=""
|
|
|
|
log_level="--v=2"
|
|
|
|
if [ -n "${KUBEPROXY_TEST_ARGS:-}" ]; then
|
|
|
|
test_args="${KUBEPROXY_TEST_ARGS}"
|
|
|
|
# test_args should already contain log level setting.
|
|
|
|
log_level=""
|
|
|
|
fi
|
|
|
|
api_servers="--master=https:\/\/${KUBERNETES_MASTER_NAME}"
|
|
|
|
sed -i -e "s/{{kubeconfig}}/${kubeconfig}/g" ${tmp_file}
|
|
|
|
sed -i -e "s/{{pillar\['kube_docker_registry'\]}}/${kube_docker_registry}/g" ${tmp_file}
|
|
|
|
sed -i -e "s/{{pillar\['kube-proxy_docker_tag'\]}}/${kube_proxy_docker_tag}/g" ${tmp_file}
|
|
|
|
sed -i -e "s/{{test_args}}/${test_args}/g" ${tmp_file}
|
|
|
|
sed -i -e "s/{{log_level}}/${log_level}/g" ${tmp_file}
|
|
|
|
sed -i -e "s/{{api_servers_with_port}}/${api_servers}/g" ${tmp_file}
|
|
|
|
|
|
|
|
mv -f ${tmp_file} /etc/kubernetes/manifests/
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-08-10 23:59:00 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-addons.conf"
|
|
|
|
|
|
|
|
#upstart-job
|
|
|
|
|
|
|
|
description "Install kubelet add-on manifest files"
|
|
|
|
|
|
|
|
start on stopped kube-docker
|
|
|
|
|
|
|
|
script
|
2015-08-20 18:39:58 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
|
2015-12-08 22:32:23 +00:00
|
|
|
# Kube-system pod manifest files are located at /run/kube-manifests/kubernetes.
|
2015-08-10 23:59:00 +00:00
|
|
|
. /etc/kube-env
|
2015-08-26 22:29:47 +00:00
|
|
|
# Fluentd
|
|
|
|
if [ "${ENABLE_NODE_LOGGING:-}" = "true" ]; then
|
|
|
|
if [ "${LOGGING_DESTINATION:-}" = "gcp" ]; then
|
2015-12-08 22:32:23 +00:00
|
|
|
cp /run/kube-manifests/kubernetes/fluentd-gcp.yaml /etc/kubernetes/manifests/
|
2015-08-26 22:29:47 +00:00
|
|
|
elif [ "${LOGGING_DESTINATION:-}" = "elasticsearch" ]; then
|
2015-12-08 22:32:23 +00:00
|
|
|
cp /run/kube-manifests/kubernetes/fluentd-es.yaml /etc/kubernetes/manifests/
|
2015-08-10 23:59:00 +00:00
|
|
|
fi
|
|
|
|
fi
|
2015-08-26 22:29:47 +00:00
|
|
|
# Kube-registry-proxy
|
|
|
|
if [ "${ENABLE_CLUSTER_REGISTRY:-}" = "true" ]; then
|
2015-12-08 22:32:23 +00:00
|
|
|
cp /run/kube-manifests/kubernetes/kube-registry-proxy.yaml /etc/kubernetes/manifests/
|
2015-08-26 22:29:47 +00:00
|
|
|
fi
|
2015-08-10 23:59:00 +00:00
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================
|
2015-09-14 21:14:56 +00:00
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/upstart-job; charset="us-ascii"
|
|
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Content-Disposition: attachment; filename="kube-node-health-monitoring.conf"
|
|
|
|
|
|
|
|
description "Kubenetes node health monitoring"
|
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
# The termination of kube-proxy upstart job indicates that kubelet and docker are ready.
|
|
|
|
start on stopped kube-proxy
|
2015-09-14 21:14:56 +00:00
|
|
|
|
|
|
|
respawn
|
|
|
|
|
|
|
|
script
|
|
|
|
set -o nounset
|
|
|
|
|
|
|
|
# Wait for a minute to let docker, kubelet, and kube-proxy processes finish initialization.
|
|
|
|
# TODO(andyzheng0831): replace it with a more reliable method if possible.
|
|
|
|
sleep 60
|
|
|
|
|
2015-12-28 17:28:10 +00:00
|
|
|
. /etc/kube-env
|
2015-09-14 21:14:56 +00:00
|
|
|
sleep_seconds=10
|
|
|
|
max_seconds=10
|
|
|
|
# We simply kill the process when there is a failure. Another upstart job will automatically
|
|
|
|
# restart the process.
|
|
|
|
while [ 1 ]; do
|
|
|
|
if ! timeout 10 docker version > /dev/null; then
|
|
|
|
echo "Docker daemon failed!"
|
|
|
|
pkill docker
|
|
|
|
fi
|
2015-11-25 08:35:51 +00:00
|
|
|
if ! curl --insecure -m ${max_seconds} -f -s https://127.0.0.1:${KUBELET_PORT:-10250}/healthz > /dev/null; then
|
2015-09-14 21:14:56 +00:00
|
|
|
echo "Kubelet is unhealthy!"
|
|
|
|
pkill kubelet
|
|
|
|
fi
|
|
|
|
if ! curl -m ${max_seconds} -f -s http://127.0.0.1:10249/healthz > /dev/null; then
|
|
|
|
echo "Kube-proxy is unhealthy!"
|
2015-12-28 17:28:10 +00:00
|
|
|
# Get the ID of kube-proxy container and then kill it.
|
|
|
|
container=$(docker ps -q --filter name='k8s_kube-proxy')
|
|
|
|
docker kill ${container}
|
2015-09-14 21:14:56 +00:00
|
|
|
fi
|
|
|
|
sleep ${sleep_seconds}
|
|
|
|
done
|
|
|
|
end script
|
|
|
|
|
2015-10-15 18:13:57 +00:00
|
|
|
--====================================--
|