mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
cluster/saltbase: Enable rkt to load master components images.
This commit is contained in:
parent
16d69f9f37
commit
d96c7edc34
5
cluster/gce/coreos/configure-node.sh
Normal file → Executable file
5
cluster/gce/coreos/configure-node.sh
Normal file → Executable file
@ -173,8 +173,8 @@ function configure-master-components() {
|
|||||||
configure-kube-apiserver
|
configure-kube-apiserver
|
||||||
configure-kube-scheduler
|
configure-kube-scheduler
|
||||||
configure-kube-controller-manager
|
configure-kube-controller-manager
|
||||||
configure-addon-manager
|
|
||||||
configure-master-addons
|
configure-master-addons
|
||||||
|
configure-addon-manager
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO(yifan): Merge this with mount-master-pd() in configure-vm.sh
|
# TODO(yifan): Merge this with mount-master-pd() in configure-vm.sh
|
||||||
@ -301,9 +301,10 @@ function load-docker-images() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# TODO(yifan): Making this function more generic for other runtimes.
|
|
||||||
function load-master-components-images() {
|
function load-master-components-images() {
|
||||||
echo "Loading docker images for master components"
|
echo "Loading docker images for master components"
|
||||||
|
export RKT_BIN=/opt/rkt/rkt
|
||||||
|
export DOCKER2ACI_BIN=/opt/docker2aci/docker2aci
|
||||||
${SALT_DIR}/install.sh ${KUBE_BIN_TAR}
|
${SALT_DIR}/install.sh ${KUBE_BIN_TAR}
|
||||||
${SALT_DIR}/salt/kube-master-addons/kube-master-addons.sh
|
${SALT_DIR}/salt/kube-master-addons/kube-master-addons.sh
|
||||||
|
|
||||||
|
@ -15,52 +15,76 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
# loadedImageFlags is a bit-flag to track which docker images loaded successfully.
|
# loadedImageFlags is a bit-flag to track which docker images loaded successfully.
|
||||||
let loadedImageFlags=0
|
|
||||||
|
|
||||||
while true; do
|
function load-docker-images() {
|
||||||
restart_docker=false
|
let loadedImageFlags=0
|
||||||
|
|
||||||
if which docker 1>/dev/null 2>&1; then
|
while true; do
|
||||||
|
restart_docker=false
|
||||||
timeout 30 docker load -i /srv/salt/kube-bins/kube-apiserver.tar 1>/dev/null 2>&1
|
|
||||||
rc=$?
|
if which docker 1>/dev/null 2>&1; then
|
||||||
if [[ $rc == 0 ]]; then
|
|
||||||
let loadedImageFlags="$loadedImageFlags|1"
|
timeout 30 docker load -i /srv/salt/kube-bins/kube-apiserver.tar 1>/dev/null 2>&1
|
||||||
elif [[ $rc == 124 ]]; then
|
rc=$?
|
||||||
restart_docker=true
|
if [[ $rc == 0 ]]; then
|
||||||
|
let loadedImageFlags="$loadedImageFlags|1"
|
||||||
|
elif [[ $rc == 124 ]]; then
|
||||||
|
restart_docker=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
timeout 30 docker load -i /srv/salt/kube-bins/kube-scheduler.tar 1>/dev/null 2>&1
|
||||||
|
rc=$?
|
||||||
|
if [[ $rc == 0 ]]; then
|
||||||
|
let loadedImageFlags="$loadedImageFlags|2"
|
||||||
|
elif [[ $rc == 124 ]]; then
|
||||||
|
restart_docker=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
timeout 30 docker load -i /srv/salt/kube-bins/kube-controller-manager.tar 1>/dev/null 2>&1
|
||||||
|
rc=$?
|
||||||
|
if [[ $rc == 0 ]]; then
|
||||||
|
let loadedImageFlags="$loadedImageFlags|4"
|
||||||
|
elif [[ $rc == 124 ]]; then
|
||||||
|
restart_docker=true
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
timeout 30 docker load -i /srv/salt/kube-bins/kube-scheduler.tar 1>/dev/null 2>&1
|
# required docker images got installed. exit while loop.
|
||||||
rc=$?
|
if [[ $loadedImageFlags == 7 ]]; then break; fi
|
||||||
if [[ $rc == 0 ]]; then
|
|
||||||
let loadedImageFlags="$loadedImageFlags|2"
|
# Sometimes docker load hang, restart docker daemon resolve the issue
|
||||||
elif [[ $rc == 124 ]]; then
|
if [[ $restart_docker ]]; then
|
||||||
restart_docker=true
|
if ! service docker restart; then # Try systemctl if there's no service command.
|
||||||
|
systemctl restart docker
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# sleep for 15 seconds before attempting to load docker images again
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
timeout 30 docker load -i /srv/salt/kube-bins/kube-controller-manager.tar 1>/dev/null 2>&1
|
function convert-rkt-image() {
|
||||||
rc=$?
|
(cd /tmp; ${DOCKER2ACI_BIN} $1)
|
||||||
if [[ $rc == 0 ]]; then
|
}
|
||||||
let loadedImageFlags="$loadedImageFlags|4"
|
|
||||||
elif [[ $rc == 124 ]]; then
|
|
||||||
restart_docker=true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# required docker images got installed. exit while loop.
|
function load-rkt-images() {
|
||||||
if [[ $loadedImageFlags == 7 ]]; then break; fi
|
convert-rkt-image /srv/salt/kube-bins/kube-apiserver.tar
|
||||||
|
convert-rkt-image /srv/salt/kube-bins/kube-scheduler.tar
|
||||||
|
convert-rkt-image /srv/salt/kube-bins/kube-controller-manager.tar
|
||||||
|
|
||||||
# Sometimes docker load hang, restart docker daemon resolve the issue
|
# Currently, we can't run docker image tarballs directly,
|
||||||
if [[ $restart_docker ]]; then
|
# So we use 'rkt fetch' to load the docker images into rkt image stores.
|
||||||
if ! service docker restart; then # Try systemctl if there's no service command.
|
# see https://github.com/coreos/rkt/issues/2392.
|
||||||
systemctl restart docker
|
${RKT_BIN} fetch /tmp/*.aci --insecure-options=image
|
||||||
fi
|
}
|
||||||
fi
|
|
||||||
|
|
||||||
# sleep for 15 seconds before attempting to load docker images again
|
if [[ "${KUBERNETES_CONTAINER_RUNTIME}" == "rkt" ]]; then
|
||||||
sleep 15
|
load-rkt-images
|
||||||
|
else
|
||||||
done
|
load-docker-images
|
||||||
|
fi
|
||||||
|
|
||||||
# Now exit. After kube-push, salt will notice that the service is down and it
|
# Now exit. After kube-push, salt will notice that the service is down and it
|
||||||
# will start it and new docker images will be loaded.
|
# will start it and new docker images will be loaded.
|
||||||
|
Loading…
Reference in New Issue
Block a user