From 88f65b64d56bc341288a7d11fb854beeb75c61de Mon Sep 17 00:00:00 2001 From: "huanqing.shao" Date: Fri, 24 Jan 2020 12:05:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BD=BF=E7=94=A8=E9=98=BF?= =?UTF-8?q?=E9=87=8C=E4=BA=91=E7=9A=84=E9=95=9C=E5=83=8F=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vuepress/public/install-script/set_mirror.sh | 220 ++++++++++++++++++ .../install-script/v1.17.x/install-kubelet.sh | 2 +- .../install-script/v1.17.x/install_kubelet.sh | 2 +- install/install-k8s.md | 1 - 4 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 .vuepress/public/install-script/set_mirror.sh diff --git a/.vuepress/public/install-script/set_mirror.sh b/.vuepress/public/install-script/set_mirror.sh new file mode 100644 index 0000000..21d7f4f --- /dev/null +++ b/.vuepress/public/install-script/set_mirror.sh @@ -0,0 +1,220 @@ +#!/usr/bin/env bash +set -e + +if [ -z "$1" ] +then + echo 'Error: Registry-mirror url required.' + exit 1 +fi + +MIRROR_URL=$1 +lsb_dist='' +command_exists() { + command -v "$@" > /dev/null 2>&1 +} +if command_exists lsb_release; then + lsb_dist="$(lsb_release -si)" + lsb_version="$(lsb_release -rs)" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then + lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")" + lsb_version="$(. /etc/lsb-release && echo "$DISTRIB_RELEASE")" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then + lsb_dist='debian' +fi +if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then + lsb_dist='fedora' +fi +if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then + lsb_dist="$(. /etc/os-release && echo "$ID")" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/centos-release ]; then + lsb_dist="$(cat /etc/*-release | head -n1 | cut -d " " -f1)" +fi +if [ -z "$lsb_dist" ] && [ -r /etc/redhat-release ]; then + lsb_dist="$(cat /etc/*-release | head -n1 | cut -d " " -f1)" +fi +lsb_dist="$(echo $lsb_dist | cut -d " " -f1)" +docker_version="$(docker -v | awk '{print $3}')" +docker_major_version="$(echo $docker_version| cut -d "." -f1)" +docker_minor_version="$(echo $docker_version| cut -d "." -f2)" +lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')" + +set_daemon_json_file(){ + DOCKER_DAEMON_JSON_FILE="/etc/docker/daemon.json" + if sudo test -f ${DOCKER_DAEMON_JSON_FILE} + then + sudo cp ${DOCKER_DAEMON_JSON_FILE} "${DOCKER_DAEMON_JSON_FILE}.bak" + if sudo grep -q registry-mirrors "${DOCKER_DAEMON_JSON_FILE}.bak";then + sudo cat "${DOCKER_DAEMON_JSON_FILE}.bak" | sed -n "1h;1"'!'"H;\${g;s|\"registry-mirrors\":\s*\[[^]]*\]|\"registry-mirrors\": [\"${MIRROR_URL}\"]|g;p;}" | sudo tee ${DOCKER_DAEMON_JSON_FILE} + else + sudo cat "${DOCKER_DAEMON_JSON_FILE}.bak" | sed -n "s|{|{\"registry-mirrors\": [\"${MIRROR_URL}\"],|g;p;" | sudo tee ${DOCKER_DAEMON_JSON_FILE} + fi + else + sudo mkdir -p "/etc/docker" + sudo echo "{\"registry-mirrors\": [\"${MIRROR_URL}\"]}" | sudo tee ${DOCKER_DAEMON_JSON_FILE} + fi +} + + +can_set_json(){ + if [ "$docker_major_version" -eq 1 ] && [ "$docker_minor_version" -lt 12 ] + then + echo "docker version < 1.12" + return 0 + else + echo "docker version >= 1.12" + return 1 + fi +} + +set_mirror(){ + if [ "$docker_major_version" -eq 1 ] && [ "$docker_minor_version" -lt 9 ] + then + echo "please upgrade your docker to v1.9 or later" + exit 1 + fi + + case "$lsb_dist" in + centos) + if grep "CentOS release 6" /etc/redhat-release > /dev/null + then + DOCKER_SERVICE_FILE="/etc/sysconfig/docker" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|other_args=\"|other_args=\"--registry-mirror='${MIRROR_URL}'|g" ${DOCKER_SERVICE_FILE} + sudo sed -i "s|OPTIONS='|OPTIONS='--registry-mirror='${MIRROR_URL}'|g" ${DOCKER_SERVICE_FILE} + echo "Success." + echo "You need to restart docker to take effect: sudo service docker restart" + exit 0 + fi + if grep "CentOS Linux release 7" /etc/redhat-release > /dev/null + then + if can_set_json; then + DOCKER_SERVICE_FILE="/lib/systemd/system/docker.service" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]* daemon\)|\1 --registry-mirror="${MIRROR_URL}"|g" ${DOCKER_SERVICE_FILE} + sudo systemctl daemon-reload + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo systemctl restart docker " + exit 0 + else + echo "Error: Set mirror failed, please set registry-mirror manually please." + exit 1 + fi + ;; + fedora) + if grep "Fedora release" /etc/fedora-release > /dev/null + then + if can_set_json; then + DOCKER_SERVICE_FILE="/lib/systemd/system/docker.service" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]* daemon\)|\1 --registry-mirror="${MIRROR_URL}"|g" ${DOCKER_SERVICE_FILE} + sudo systemctl daemon-reload + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo systemctl restart docker" + exit 0 + else + echo "Error: Set mirror failed, please set registry-mirror manually please." + exit 1 + fi + ;; + ubuntu) + v1=`echo ${lsb_version} | cut -d "." -f1` + if [ "$v1" -ge 16 ]; then + if can_set_json; then + DOCKER_SERVICE_FILE="/lib/systemd/system/docker.service" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]* daemon -H fd://$\)|\1 --registry-mirror="${MIRROR_URL}"|g" ${DOCKER_SERVICE_FILE} + sudo systemctl daemon-reload + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo systemctl restart docker.service" + exit 0 + else + if can_set_json; then + DOCKER_SERVICE_FILE="/etc/default/docker" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + if grep "registry-mirror" ${DOCKER_SERVICE_FILE} > /dev/null + then + sudo sed -i -u -E "s#--registry-mirror='?((http|https)://)?[a-zA-Z0-9.]+'?#--registry-mirror='${MIRROR_URL}'#g" ${DOCKER_SERVICE_FILE} + else + echo 'DOCKER_OPTS="$DOCKER_OPTS --registry-mirror='${MIRROR_URL}'"' >> ${DOCKER_SERVICE_FILE} + echo ${MIRROR_URL} + fi + else + set_daemon_json_file + fi + fi + echo "Success." + echo "You need to restart docker to take effect: sudo service docker restart" + exit 0 + ;; + debian) + if can_set_json; then + DOCKER_SERVICE_FILE="/etc/default/docker" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + if grep "registry-mirror" ${DOCKER_SERVICE_FILE} > /dev/null + then + sudo sed -i -u -E "s#--registry-mirror='?((http|https)://)?[a-zA-Z0-9.]+'?#--registry-mirror='${MIRROR_URL}'#g" ${DOCKER_SERVICE_FILE} + else + echo 'DOCKER_OPTS="$DOCKER_OPTS --registry-mirror='${MIRROR_URL}'"' >> ${DOCKER_SERVICE_FILE} + echo ${MIRROR_URL} + fi + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo service docker restart" + exit 0 + ;; + arch) + if grep "Arch Linux" /etc/os-release > /dev/null + then + if can_set_json; then + DOCKER_SERVICE_FILE="/lib/systemd/system/docker.service" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]* daemon -H fd://\)|\1 --registry-mirror="${MIRROR_URL}"|g" ${DOCKER_SERVICE_FILE} + sudo systemctl daemon-reload + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo systemctl restart docker" + exit 0 + else + echo "Error: Set mirror failed, please set registry-mirror manually please." + exit 1 + fi + ;; + suse) + if grep "openSUSE Leap" /etc/os-release > /dev/null + then + if can_set_json; then + DOCKER_SERVICE_FILE="/usr/lib/systemd/system/docker.service" + sudo cp ${DOCKER_SERVICE_FILE} "${DOCKER_SERVICE_FILE}.bak" + sudo sed -i "s|\(^ExecStart=/usr/bin/docker daemon -H fd://\)|\1 --registry-mirror="${MIRROR_URL}"|g" ${DOCKER_SERVICE_FILE} + sudo systemctl daemon-reload + else + set_daemon_json_file + fi + echo "Success." + echo "You need to restart docker to take effect: sudo systemctl restart docker" + exit 0 + else + echo "Error: Set mirror failed, please set registry-mirror manually please." + exit 1 + fi + esac + echo "Error: Unsupported OS, please set registry-mirror manually." + exit 1 +} +set_mirror diff --git a/.vuepress/public/install-script/v1.17.x/install-kubelet.sh b/.vuepress/public/install-script/v1.17.x/install-kubelet.sh index 9fd51a7..9c46cc4 100644 --- a/.vuepress/public/install-script/v1.17.x/install-kubelet.sh +++ b/.vuepress/public/install-script/v1.17.x/install-kubelet.sh @@ -88,7 +88,7 @@ sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --co # 设置 docker 镜像,提高 docker 镜像下载速度和稳定性 # 如果您访问 https://hub.docker.io 速度非常稳定,亦可以跳过这个步骤 -curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io +curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s https://registry.cn-hangzhou.aliyuncs.com # 重启 docker,并启动 kubelet systemctl daemon-reload diff --git a/.vuepress/public/install-script/v1.17.x/install_kubelet.sh b/.vuepress/public/install-script/v1.17.x/install_kubelet.sh index 9fd51a7..9c46cc4 100644 --- a/.vuepress/public/install-script/v1.17.x/install_kubelet.sh +++ b/.vuepress/public/install-script/v1.17.x/install_kubelet.sh @@ -88,7 +88,7 @@ sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --co # 设置 docker 镜像,提高 docker 镜像下载速度和稳定性 # 如果您访问 https://hub.docker.io 速度非常稳定,亦可以跳过这个步骤 -curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io +curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s https://registry.cn-hangzhou.aliyuncs.com # 重启 docker,并启动 kubelet systemctl daemon-reload diff --git a/install/install-k8s.md b/install/install-k8s.md index 1d4b02c..7f008b1 100644 --- a/install/install-k8s.md +++ b/install/install-k8s.md @@ -190,7 +190,6 @@ default via 172.21.0.1 dev eth0 # 最后一个参数 1.17.1 用于指定 kubenetes 版本,支持所有 1.17.x 版本的安装 curl -sSL https://kuboard.cn/install-script/v1.17.x/install_kubelet.sh | sh -s 1.17.1 - ```