Merge pull request #13962 from ZJU-SEL/enhance-deploy-ubuntu
Auto commit by PR queue bot
This commit is contained in:
commit
1a46238bf2
@ -26,12 +26,15 @@ function cleanup {
|
|||||||
}
|
}
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM
|
trap cleanup SIGHUP SIGINT SIGTERM
|
||||||
|
|
||||||
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
||||||
|
pushd ${KUBE_ROOT}/cluster/ubuntu
|
||||||
|
|
||||||
mkdir -p binaries/master
|
mkdir -p binaries/master
|
||||||
mkdir -p binaries/minion
|
mkdir -p binaries/minion
|
||||||
|
|
||||||
# flannel
|
# flannel
|
||||||
echo "Download flannel release ..."
|
|
||||||
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.4.0"}
|
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.4.0"}
|
||||||
|
echo "Prepare flannel ${FLANNEL_VERSION} release ..."
|
||||||
if [ ! -f flannel.tar.gz ] ; then
|
if [ ! -f flannel.tar.gz ] ; then
|
||||||
curl -L https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
|
curl -L https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
|
||||||
tar xzf flannel.tar.gz
|
tar xzf flannel.tar.gz
|
||||||
@ -40,11 +43,9 @@ cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
|
|||||||
cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
|
cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
|
||||||
|
|
||||||
# ectd
|
# ectd
|
||||||
echo "Download etcd release ..."
|
|
||||||
|
|
||||||
ETCD_VERSION=${ETCD_VERSION:-"2.0.12"}
|
ETCD_VERSION=${ETCD_VERSION:-"2.0.12"}
|
||||||
ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
|
ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
|
||||||
|
echo "Prepare etcd ${ETCD_VERSION} release ..."
|
||||||
if [ ! -f etcd.tar.gz ] ; then
|
if [ ! -f etcd.tar.gz ] ; then
|
||||||
curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
|
curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
|
||||||
tar xzf etcd.tar.gz
|
tar xzf etcd.tar.gz
|
||||||
@ -52,9 +53,8 @@ fi
|
|||||||
cp $ETCD/etcd $ETCD/etcdctl binaries/master
|
cp $ETCD/etcd $ETCD/etcdctl binaries/master
|
||||||
|
|
||||||
# k8s
|
# k8s
|
||||||
echo "Download kubernetes release ..."
|
|
||||||
KUBE_VERSION=${KUBE_VERSION:-"1.0.3"}
|
KUBE_VERSION=${KUBE_VERSION:-"1.0.3"}
|
||||||
|
echo "Prepare kubernetes ${KUBE_VERSION} release ..."
|
||||||
if [ ! -f kubernetes.tar.gz ] ; then
|
if [ ! -f kubernetes.tar.gz ] ; then
|
||||||
curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
|
curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
|
||||||
tar xzf kubernetes.tar.gz
|
tar xzf kubernetes.tar.gz
|
||||||
@ -73,4 +73,5 @@ cp kubernetes/server/kubernetes/server/bin/kubectl binaries/
|
|||||||
|
|
||||||
rm -rf flannel* kubernetes* etcd*
|
rm -rf flannel* kubernetes* etcd*
|
||||||
|
|
||||||
echo "Done! All your commands locate in ./binaries dir"
|
echo "Done! All your commands locate in kubernetes/cluster/ubuntu/binaries dir"
|
||||||
|
popd
|
@ -23,8 +23,6 @@ MASTER=""
|
|||||||
MASTER_IP=""
|
MASTER_IP=""
|
||||||
MINION_IPS=""
|
MINION_IPS=""
|
||||||
|
|
||||||
KUBECTL_PATH=${KUBE_ROOT}/cluster/ubuntu/binaries/kubectl
|
|
||||||
|
|
||||||
# Assumed Vars:
|
# Assumed Vars:
|
||||||
# KUBE_ROOT
|
# KUBE_ROOT
|
||||||
function test-build-release {
|
function test-build-release {
|
||||||
@ -252,7 +250,6 @@ EOF
|
|||||||
# KUBE_MASTER
|
# KUBE_MASTER
|
||||||
# KUBE_MASTER_IP
|
# KUBE_MASTER_IP
|
||||||
function detect-master {
|
function detect-master {
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
KUBE_MASTER=$MASTER
|
KUBE_MASTER=$MASTER
|
||||||
@ -267,7 +264,6 @@ function detect-master {
|
|||||||
# Vars set:
|
# Vars set:
|
||||||
# KUBE_MINION_IP_ADDRESS (array)
|
# KUBE_MINION_IP_ADDRESS (array)
|
||||||
function detect-minions {
|
function detect-minions {
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
KUBE_MINION_IP_ADDRESSES=()
|
KUBE_MINION_IP_ADDRESSES=()
|
||||||
@ -291,13 +287,12 @@ function detect-minions {
|
|||||||
|
|
||||||
# Instantiate a kubernetes cluster on ubuntu
|
# Instantiate a kubernetes cluster on ubuntu
|
||||||
function kube-up() {
|
function kube-up() {
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
# ensure the binaries are downloaded
|
# ensure the binaries are well prepared
|
||||||
if [ ! -f "ubuntu/binaries/master/kube-apiserver" ]; then
|
if [ ! -f "ubuntu/binaries/master/kube-apiserver" ]; then
|
||||||
echo "warning: not enough binaries to build k8s, please run build.sh in cluster/ubuntu first"
|
echo "No local binaries for kube-up, downloading... "
|
||||||
exit 1
|
"${KUBE_ROOT}/cluster/ubuntu/build.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
@ -350,7 +345,7 @@ function provision-master() {
|
|||||||
create-kube-controller-manager-opts "${MINION_IPS}"; \
|
create-kube-controller-manager-opts "${MINION_IPS}"; \
|
||||||
create-kube-scheduler-opts; \
|
create-kube-scheduler-opts; \
|
||||||
create-flanneld-opts "127.0.0.1"; \
|
create-flanneld-opts "127.0.0.1"; \
|
||||||
sudo -p '[sudo] password to copy files and start master: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ ;\
|
sudo -p '[sudo] password to start master: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ ;\
|
||||||
sudo groupadd -f -r kube-cert; \
|
sudo groupadd -f -r kube-cert; \
|
||||||
sudo ~/kube/make-ca-cert.sh ${MASTER_IP} IP:${MASTER_IP},IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local; \
|
sudo ~/kube/make-ca-cert.sh ${MASTER_IP} IP:${MASTER_IP},IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local; \
|
||||||
sudo mkdir -p /opt/bin/ && sudo cp ~/kube/master/* /opt/bin/; \
|
sudo mkdir -p /opt/bin/ && sudo cp ~/kube/master/* /opt/bin/; \
|
||||||
@ -371,7 +366,7 @@ function provision-minion() {
|
|||||||
create-kubelet-opts "${1#*@}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}"; \
|
create-kubelet-opts "${1#*@}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}"; \
|
||||||
create-kube-proxy-opts "${MASTER_IP}"; \
|
create-kube-proxy-opts "${MASTER_IP}"; \
|
||||||
create-flanneld-opts "${MASTER_IP}"; \
|
create-flanneld-opts "${MASTER_IP}"; \
|
||||||
sudo -p '[sudo] password to copy files and start node: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ \
|
sudo -p '[sudo] password to start node: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ \
|
||||||
&& sudo mkdir -p /opt/bin/ && sudo cp ~/kube/minion/* /opt/bin; \
|
&& sudo mkdir -p /opt/bin/ && sudo cp ~/kube/minion/* /opt/bin; \
|
||||||
sudo service flanneld start; \
|
sudo service flanneld start; \
|
||||||
sudo -b ~/kube/reconfDocker.sh "i";"
|
sudo -b ~/kube/reconfDocker.sh "i";"
|
||||||
@ -395,7 +390,7 @@ function provision-masterandminion() {
|
|||||||
create-kubelet-opts "${MASTER_IP}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}";
|
create-kubelet-opts "${MASTER_IP}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}";
|
||||||
create-kube-proxy-opts "${MASTER_IP}";\
|
create-kube-proxy-opts "${MASTER_IP}";\
|
||||||
create-flanneld-opts "127.0.0.1"; \
|
create-flanneld-opts "127.0.0.1"; \
|
||||||
sudo -p '[sudo] password to copy files and start master: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ ; \
|
sudo -p '[sudo] password to start master: ' cp ~/kube/default/* /etc/default/ && sudo cp ~/kube/init_conf/* /etc/init/ && sudo cp ~/kube/init_scripts/* /etc/init.d/ ; \
|
||||||
sudo groupadd -f -r kube-cert; \
|
sudo groupadd -f -r kube-cert; \
|
||||||
sudo ~/kube/make-ca-cert.sh ${MASTER_IP} IP:${MASTER_IP},IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local; \
|
sudo ~/kube/make-ca-cert.sh ${MASTER_IP} IP:${MASTER_IP},IP:${SERVICE_CLUSTER_IP_RANGE%.*}.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local; \
|
||||||
sudo mkdir -p /opt/bin/ && sudo cp ~/kube/master/* /opt/bin/ && sudo cp ~/kube/minion/* /opt/bin/; \
|
sudo mkdir -p /opt/bin/ && sudo cp ~/kube/master/* /opt/bin/ && sudo cp ~/kube/minion/* /opt/bin/; \
|
||||||
@ -405,7 +400,6 @@ function provision-masterandminion() {
|
|||||||
|
|
||||||
# Delete a kubernetes cluster
|
# Delete a kubernetes cluster
|
||||||
function kube-down {
|
function kube-down {
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
source "${KUBE_ROOT}/cluster/common.sh"
|
source "${KUBE_ROOT}/cluster/common.sh"
|
||||||
@ -416,10 +410,10 @@ function kube-down {
|
|||||||
{
|
{
|
||||||
echo "Cleaning on node ${i#*@}"
|
echo "Cleaning on node ${i#*@}"
|
||||||
if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
|
if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
|
||||||
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password for cleaning etcd data: " service etcd stop && sudo rm -rf /infra*;
|
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password to stop master: " service etcd stop && sudo rm -rf /infra*;
|
||||||
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd'
|
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd'
|
||||||
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
||||||
ssh -t $i 'pgrep flanneld && sudo -p "[sudo] password for stopping flanneld: " service flanneld stop'
|
ssh -t $i 'pgrep flanneld && sudo -p "[sudo] password to stop node: " service flanneld stop'
|
||||||
else
|
else
|
||||||
echo "unsupported role for ${i}"
|
echo "unsupported role for ${i}"
|
||||||
fi
|
fi
|
||||||
@ -436,7 +430,8 @@ function kube-down {
|
|||||||
|
|
||||||
# Perform common upgrade setup tasks
|
# Perform common upgrade setup tasks
|
||||||
function prepare-push() {
|
function prepare-push() {
|
||||||
if [[ $KUBE_VERSION == "" ]]; then
|
# Use local binaries for kube-push
|
||||||
|
if [[ "${KUBE_VERSION}" == "" ]]; then
|
||||||
if [[ ! -d "${KUBE_ROOT}/cluster/ubuntu/binaries" ]]; then
|
if [[ ! -d "${KUBE_ROOT}/cluster/ubuntu/binaries" ]]; then
|
||||||
echo "No local binaries.Please check"
|
echo "No local binaries.Please check"
|
||||||
exit 1
|
exit 1
|
||||||
@ -446,15 +441,20 @@ function prepare-push() {
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Run build.sh to get the required release
|
# Run build.sh to get the required release
|
||||||
pushd ubuntu
|
export KUBE_VERSION
|
||||||
source "build.sh"
|
"${KUBE_ROOT}/cluster/ubuntu/build.sh"
|
||||||
popd
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update a kubernetes master with required release
|
# Update a kubernetes master with required release
|
||||||
function push-master {
|
function push-master {
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
|
if [[ ! -f "${KUBE_ROOT}/cluster/ubuntu/binaries/master/kube-apiserver" ]]; then
|
||||||
|
echo "There is no required release of kubernetes, please check first"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
ii=0
|
ii=0
|
||||||
for i in ${nodes}; do
|
for i in ${nodes}; do
|
||||||
@ -491,6 +491,12 @@ function push-master {
|
|||||||
# Update a kubernetes node with required release
|
# Update a kubernetes node with required release
|
||||||
function push-node() {
|
function push-node() {
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
|
if [[ ! -f "${KUBE_ROOT}/cluster/ubuntu/binaries/minion/kubelet" ]]; then
|
||||||
|
echo "There is no required release of kubernetes, please check first"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
node_ip=${1}
|
node_ip=${1}
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
ii=0
|
ii=0
|
||||||
@ -541,10 +547,10 @@ function kube-push {
|
|||||||
{
|
{
|
||||||
echo "Cleaning on node ${i#*@}"
|
echo "Cleaning on node ${i#*@}"
|
||||||
if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
|
if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
|
||||||
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password for cleaning etcd data: " service etcd stop;
|
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password to stop master: " service etcd stop;
|
||||||
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd' || true
|
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd' || true
|
||||||
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
||||||
ssh -t $i 'pgrep flanneld && sudo -p "[sudo] password for stopping flanneld: " service flanneld stop' || true
|
ssh -t $i 'pgrep flanneld && sudo -p "[sudo] password to stop node: " service flanneld stop' || true
|
||||||
else
|
else
|
||||||
echo "unsupported role for ${i}"
|
echo "unsupported role for ${i}"
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user