mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #13733 from ZJU-SEL/fix-kube-push-ubuntu
fix kube-push for ubuntu
This commit is contained in:
commit
f27582a0b0
@ -32,7 +32,6 @@ mkdir -p binaries/minion
|
|||||||
# flannel
|
# flannel
|
||||||
echo "Download flannel release ..."
|
echo "Download flannel release ..."
|
||||||
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.4.0"}
|
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.4.0"}
|
||||||
echo "Flannel version is $FLANNEL_VERSION"
|
|
||||||
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
|
||||||
@ -54,10 +53,10 @@ cp $ETCD/etcd $ETCD/etcdctl binaries/master
|
|||||||
|
|
||||||
# k8s
|
# k8s
|
||||||
echo "Download kubernetes release ..."
|
echo "Download kubernetes release ..."
|
||||||
K8S_VERSION=${K8S_VERSION:-"1.0.3"}
|
KUBE_VERSION=${KUBE_VERSION:-"1.0.3"}
|
||||||
|
|
||||||
if [ ! -f kubernetes.tar.gz ] ; then
|
if [ ! -f kubernetes.tar.gz ] ; then
|
||||||
curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v${K8S_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
|
||||||
fi
|
fi
|
||||||
pushd kubernetes/server
|
pushd kubernetes/server
|
||||||
|
@ -19,8 +19,6 @@ set -e
|
|||||||
|
|
||||||
SSH_OPTS="-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=ERROR"
|
SSH_OPTS="-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=ERROR"
|
||||||
|
|
||||||
# use an array to record name and ip
|
|
||||||
declare -A mm
|
|
||||||
MASTER=""
|
MASTER=""
|
||||||
MASTER_IP=""
|
MASTER_IP=""
|
||||||
MINION_IPS=""
|
MINION_IPS=""
|
||||||
@ -443,24 +441,42 @@ function prepare-push() {
|
|||||||
echo "Upgrading nodes to local binaries is not yet supported.Please specify the version"
|
echo "Upgrading nodes to local binaries is not yet supported.Please specify the version"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
# Run build.sh to get the latest release
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/build.sh"
|
# Run build.sh to get the required release
|
||||||
|
pushd ubuntu
|
||||||
|
source "build.sh"
|
||||||
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update a kubernetes master with latest 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"}"
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
ii=0
|
ii=0
|
||||||
for i in ${nodes}; do
|
for i in ${nodes}; do
|
||||||
if [[ "${roles[${ii}]}" == "a" || "${roles[${ii}]}" == "ai" ]]; then
|
if [[ "${roles[${ii}]}" == "a" ]]; then
|
||||||
echo "Cleaning on master ${i#*@}"
|
echo "Cleaning master ${i#*@}"
|
||||||
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop' || true
|
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop;
|
||||||
|
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd;
|
||||||
|
sudo rm -f /opt/bin/kube* /opt/bin/flanneld;
|
||||||
|
sudo rm -rf /etc/init/kube* /etc/init/flanneld.conf /etc/init.d/kube* /etc/init.d/flanneld;
|
||||||
|
sudo rm -rf /etc/default/kube* /etc/default/flanneld;
|
||||||
|
sudo rm -rf ~/kube' || true
|
||||||
provision-master
|
provision-master
|
||||||
|
elif [[ "${roles[${ii}]}" == "ai" ]]; then
|
||||||
|
echo "Cleaning master ${i#*@}"
|
||||||
|
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop;
|
||||||
|
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd;
|
||||||
|
sudo rm -f /opt/bin/kube* /opt/bin/flanneld;
|
||||||
|
sudo rm -rf /etc/init/kube* /etc/init/flanneld.conf /etc/init.d/kube* /etc/init.d/flanneld;
|
||||||
|
sudo rm -rf /etc/default/kube* /etc/default/flanneld;
|
||||||
|
sudo rm -rf ~/kube' || true
|
||||||
|
provision-masterandminion
|
||||||
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
||||||
|
((ii=ii+1))
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
echo "unsupported role for ${i}. please check"
|
echo "unsupported role for ${i}, please check"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
((ii=ii+1))
|
((ii=ii+1))
|
||||||
@ -468,41 +484,76 @@ function push-master {
|
|||||||
verify-cluster
|
verify-cluster
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update a kubernetes node with latest 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"}"
|
||||||
node=${1}
|
node_ip=${1}
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
ii=0
|
ii=0
|
||||||
|
existing=false
|
||||||
for i in ${nodes}; do
|
for i in ${nodes}; do
|
||||||
if [[ "${roles[${ii}]}" == "i" || "${roles[${ii}]}" == "ai" && $i == *$node ]]; then
|
if [[ "${roles[${ii}]}" == "i" && ${i#*@} == $node_ip ]]; then
|
||||||
echo "Cleaning on node ${i#*@}"
|
echo "Cleaning node ${i#*@}"
|
||||||
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop' || true
|
ssh -t $i 'sudo -p "[sudo] stop the all process: " service flanneld stop;
|
||||||
|
sudo rm -f /opt/bin/kube* /opt/bin/flanneld;
|
||||||
|
sudo rm -rf /etc/init/kube* /etc/init/flanneld.conf /etc/init.d/kube* /etc/init.d/flanneld;
|
||||||
|
sudo rm -rf /etc/default/kube* /etc/default/flanneld;
|
||||||
|
sudo rm -rf ~/kube' || true
|
||||||
provision-minion $i
|
provision-minion $i
|
||||||
|
existing=true
|
||||||
|
elif [[ "${roles[${ii}]}" == "a" || "${roles[${ii}]}" == "ai" ]] && [[ ${i#*@} == $node_ip ]]; then
|
||||||
|
echo "${i} is master node, please try ./kube-push -m instead"
|
||||||
|
existing=true
|
||||||
|
elif [[ "${roles[${ii}]}" == "i" || "${roles[${ii}]}" == "a" || "${roles[${ii}]}" == "ai" ]]; then
|
||||||
|
((ii=ii+1))
|
||||||
|
continue
|
||||||
else
|
else
|
||||||
echo "unsupported role for ${i}, or nodes ${i} don't exist. please check"
|
echo "unsupported role for ${i}, please check"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
((ii=ii+1))
|
((ii=ii+1))
|
||||||
done
|
done
|
||||||
|
if [[ "${existing}" == false ]]; then
|
||||||
|
echo "node ${node_ip} does not exist"
|
||||||
|
else
|
||||||
verify-cluster
|
verify-cluster
|
||||||
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update a kubernetes cluster with latest source
|
# Update a kubernetes cluster with required source
|
||||||
function kube-push {
|
function kube-push {
|
||||||
prepare-push
|
prepare-push
|
||||||
#stop all the kube's process & etcd
|
|
||||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||||
|
|
||||||
|
#stop all the kube's process & etcd
|
||||||
|
ii=0
|
||||||
for i in ${nodes}; do
|
for i in ${nodes}; do
|
||||||
|
{
|
||||||
echo "Cleaning on node ${i#*@}"
|
echo "Cleaning on node ${i#*@}"
|
||||||
ssh -t $i 'sudo -p "[sudo] stop all process: " service etcd stop' || true
|
if [[ "${roles[${ii}]}" == "ai" || "${roles[${ii}]}" == "a" ]]; then
|
||||||
ssh -t $i 'rm -f /opt/bin/kube* /etc/init/kube* /etc/init.d/kube* /etc/default/kube*; rm -rf ~/kube' || true
|
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password for cleaning etcd data: " service etcd stop;
|
||||||
|
sudo rm -rf /opt/bin/etcd* /etc/init/etcd.conf /etc/init.d/etcd /etc/default/etcd' || true
|
||||||
|
elif [[ "${roles[${ii}]}" == "i" ]]; then
|
||||||
|
ssh -t $i 'pgrep flanneld && sudo -p "[sudo] password for stopping flanneld: " service flanneld stop' || true
|
||||||
|
else
|
||||||
|
echo "unsupported role for ${i}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ssh -t $i 'sudo rm -f /opt/bin/kube* /opt/bin/flanneld;
|
||||||
|
sudo rm -rf /etc/init/kube* /etc/init/flanneld.conf /etc/init.d/kube* /etc/init.d/flanneld;
|
||||||
|
sudo rm -rf /etc/default/kube* /etc/default/flanneld;
|
||||||
|
sudo rm -rf ~/kube' || true
|
||||||
|
}
|
||||||
|
((ii=ii+1))
|
||||||
done
|
done
|
||||||
#Update all nodes with the lasted release
|
|
||||||
|
#Update all nodes with the required release
|
||||||
if [[ ! -f "ubuntu/binaries/master/kube-apiserver" ]]; then
|
if [[ ! -f "ubuntu/binaries/master/kube-apiserver" ]]; then
|
||||||
echo "There is no latest release of kubernetes,please check first"
|
echo "There is no required release of kubernetes, please check first"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#provision all nodes,include master&nodes
|
#provision all nodes,include master&nodes
|
||||||
setClusterInfo
|
setClusterInfo
|
||||||
ii=0
|
ii=0
|
||||||
|
Loading…
Reference in New Issue
Block a user