mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +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
|
||||
echo "Download flannel release ..."
|
||||
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.4.0"}
|
||||
echo "Flannel version is $FLANNEL_VERSION"
|
||||
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
|
||||
tar xzf flannel.tar.gz
|
||||
@ -54,10 +53,10 @@ cp $ETCD/etcd $ETCD/etcdctl binaries/master
|
||||
|
||||
# k8s
|
||||
echo "Download kubernetes release ..."
|
||||
K8S_VERSION=${K8S_VERSION:-"1.0.3"}
|
||||
KUBE_VERSION=${KUBE_VERSION:-"1.0.3"}
|
||||
|
||||
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
|
||||
fi
|
||||
pushd kubernetes/server
|
||||
|
@ -19,8 +19,6 @@ set -e
|
||||
|
||||
SSH_OPTS="-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=ERROR"
|
||||
|
||||
# use an array to record name and ip
|
||||
declare -A mm
|
||||
MASTER=""
|
||||
MASTER_IP=""
|
||||
MINION_IPS=""
|
||||
@ -443,24 +441,42 @@ function prepare-push() {
|
||||
echo "Upgrading nodes to local binaries is not yet supported.Please specify the version"
|
||||
exit 1
|
||||
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 {
|
||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||
setClusterInfo
|
||||
ii=0
|
||||
for i in ${nodes}; do
|
||||
if [[ "${roles[${ii}]}" == "a" || "${roles[${ii}]}" == "ai" ]]; then
|
||||
echo "Cleaning on master ${i#*@}"
|
||||
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop' || true
|
||||
if [[ "${roles[${ii}]}" == "a" ]]; 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-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
|
||||
((ii=ii+1))
|
||||
continue
|
||||
else
|
||||
echo "unsupported role for ${i}. please check"
|
||||
echo "unsupported role for ${i}, please check"
|
||||
exit 1
|
||||
fi
|
||||
((ii=ii+1))
|
||||
@ -468,41 +484,76 @@ function push-master {
|
||||
verify-cluster
|
||||
}
|
||||
|
||||
# Update a kubernetes node with latest release
|
||||
# Update a kubernetes node with required release
|
||||
function push-node() {
|
||||
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||
node=${1}
|
||||
node_ip=${1}
|
||||
setClusterInfo
|
||||
ii=0
|
||||
existing=false
|
||||
for i in ${nodes}; do
|
||||
if [[ "${roles[${ii}]}" == "i" || "${roles[${ii}]}" == "ai" && $i == *$node ]]; then
|
||||
echo "Cleaning on node ${i#*@}"
|
||||
ssh -t $i 'sudo -p "[sudo] stop the all process: " service etcd stop' || true
|
||||
if [[ "${roles[${ii}]}" == "i" && ${i#*@} == $node_ip ]]; then
|
||||
echo "Cleaning node ${i#*@}"
|
||||
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
|
||||
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
|
||||
echo "unsupported role for ${i}, or nodes ${i} don't exist. please check"
|
||||
echo "unsupported role for ${i}, please check"
|
||||
exit 1
|
||||
fi
|
||||
((ii=ii+1))
|
||||
done
|
||||
verify-cluster
|
||||
if [[ "${existing}" == false ]]; then
|
||||
echo "node ${node_ip} does not exist"
|
||||
else
|
||||
verify-cluster
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# Update a kubernetes cluster with latest source
|
||||
function kube-push {
|
||||
# Update a kubernetes cluster with required source
|
||||
function kube-push {
|
||||
prepare-push
|
||||
#stop all the kube's process & etcd
|
||||
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
|
||||
echo "Cleaning on node ${i#*@}"
|
||||
ssh -t $i 'sudo -p "[sudo] stop all process: " service etcd stop' || true
|
||||
ssh -t $i 'rm -f /opt/bin/kube* /etc/init/kube* /etc/init.d/kube* /etc/default/kube*; rm -rf ~/kube' || true
|
||||
{
|
||||
echo "Cleaning on node ${i#*@}"
|
||||
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 /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
|
||||
#Update all nodes with the lasted release
|
||||
|
||||
#Update all nodes with the required release
|
||||
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
|
||||
fi
|
||||
|
||||
#provision all nodes,include master&nodes
|
||||
setClusterInfo
|
||||
ii=0
|
||||
|
Loading…
Reference in New Issue
Block a user