前言:之前采用离线方式部署好了 Rancher 2.2.4(https://www.cnblogs.com/weavepub/p/11053099.html),这次升级到最新版本 Rancher 2.2.6。

一、同步镜像

1.1 安装docker

新启动一台虚拟主机,安装docker(不要用生产环境,免得主机上的镜像太多)

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl restart docker
systemctl enable docker
systemctl status docker

1.2 下载镜像列表文件

mkdir -p /opt/rancher/upgrade2.2.6 && cd /opt/rancher/upgrade2.2.6
https://github.com/rancher/rancher/releases/tag/v2.2.6/rancher-images.txt

1.3准备镜像脚本

1)镜像下载脚本

vim rancher-save-images.sh

内容如下:

#!/bin/bash
# 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").log logger()
{
log=$
cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'
echo ${cur_time} ${log} | tee -a ${log_file}
} list="rancher-images.txt"
#images="rancher-images.tar.gz" POSITIONAL=()
while [[ $# -gt ]]; do
key="$1"
case $key in
-i|--images)
images="$2"
shift # past argument
shift # past value
;;
-l|--image-list)
list="$2"
shift # past argument
shift # past value
;;
-h|--help)
help="true"
shift
;;
esac
done usage () {
echo "USAGE: $0 [--image-list rancher-images.txt] [--images rancher-images.tar.gz]"
echo " [-l|--images-list path] text file with list of images. 1 per line."
echo " [-l|--images path] tar.gz generated by docker save."
echo " [-h|--help] Usage message"
} if [[ $help ]]; then
usage
exit
fi set -e -x mkdir -p rancher-images-$(date +"%Y-%m-%d")
cd rancher-images-$(date +"%Y-%m-%d") for i in $(cat ${list});
do
docker pull ${i} if [ $? -ne ]; then
logger "${i} pull failed."
else
logger "${i} pull successfully."
fi docker save ${i} | gzip > $(echo $i | sed "s#/#-#g; s#:#-#g").tgz if [ $? -ne ]; then
logger "${i} save failed."
else
logger "${i} save successfully."
fi
done

2)镜像上传到私有仓库脚本

vim rancher-push-images.sh

内容如下:

#!/bin/bash

## 镜像上传说明
# 需要先在镜像仓库中创建 rancher 项目
# 根据实际情况更改以下私有仓库地址 # 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").log logger()
{
log=$
cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'
echo ${cur_time} ${log} | tee -a ${log_file}
} images_hub() { while true; do
read -p "输入镜像仓库地址(不加http/https): " registry
read -p "输入镜像仓库用户名: " registry_user
read -p "输入镜像仓库用户密码: " registry_password
echo "您设置的仓库地址为: ${registry},用户名: ${registry_user},密码: xxx"
read -p "是否确认(Y/N): " confirm if [ $confirm != Y ] && [ $confirm != y ] && [ $confirm == '' ]; then
echo "输入不能为空,重新输入"
else
break
fi
done
} images_hub echo "镜像仓库 $(docker login -u ${registry_user} -p ${registry_password} ${registry})" images=$(cat ./rancher-images.txt)
namespace=rancher docker_push() {
for imgs in $(echo ${images}); do
n=$(echo ${imgs} | awk -F"/" '{print NF-1}')
#如果镜像名中没有/,那么此镜像一定是library仓库的镜像;
if [ ${n} -eq ]; then
img_tag=${imgs}
#namespace=rancher
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除原始镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
#如果镜像名中有一个/,那么/左侧为项目名,右侧为镜像名和tag
elif [ ${n} -eq ]; then
img_tag=$(echo ${imgs} | awk -F"/" '{print $2}')
#namespace=$(echo ${imgs} | awk -F"/" '{print $1}')
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除旧镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
#如果镜像名中有两个/,
elif [ ${n} -eq ]; then
img_tag=$(echo ${imgs} | awk -F"/" '{print $3}')
#namespace=$(echo ${imgs} | awk -F"/" '{print $2}')
#重命名镜像
docker tag ${imgs} ${registry}/${namespace}/${img_tag}
#删除旧镜像
#docker rmi ${imgs}
#上传镜像
docker push ${registry}/${namespace}/${img_tag}
else
#标准镜像为四层结构,即:仓库地址/项目名/镜像名:tag,如不符合此标准,即为非有效镜像。
echo "No available images"
fi
done
} docker_push

1.4 同步镜像

1)下载镜像

chmod +x rancher-save-images.sh
./rancher-save-images.sh --image-list /opt/rancher/upgrade2.2.6/rancher-images.txt

2)上传镜像

chmod +x rancher-push-images.sh
./rancher-push-images.sh
reg.nexus.wmqe.com
admin
*******

二、升级Rancher

2.1 下载 Rancher 2.2.6 离线包

登入到当初部署 Rancher 时的 prod-rancher-server-01 主机

1)更新本地helm repo缓存

helm repo update

2)查看Rancher 最新版本

helm search rancher
NAME CHART VERSION APP VERSION DESCRIPTION
rancher-stable/rancher 2.2. v2.2.6 Install Rancher Server to manage Kubernetes clusters acro...

3)获取Rancher Charts离线包

mkdir -p /opt/rancher/upgrade2.2.6 && cd /opt/rancher/upgrade2.2.6
helm fetch rancher-stable/rancher --version v2.2.6

2.2 升级 Rancher

1)升级Rancher

升级参数应该以安装时设置的参数为准。

tar zxvf rancher-2.2..tgz
kubeconfig=/root/.kube/config helm --kubeconfig=$kubeconfig upgrade rancher ./rancher \
--set hostname=rancher.wmqe.com \
--set ingress.tls.source=secret \
--set auditLog.level= \
--set auditLog.destination=hostPath \
--set auditLog.hostPath=/opt/rancher/auditlogs/ \
--set auditLog.maxAge= \
--set auditLog.maxBackups= \
--set auditLog.maxSize= \
--set rancherImage=reg.nexus.wmqe.com/rancher/rancher

2)查看pod状态

kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-system cattle-cluster-agent-c87688dc5-xzlqg 1/1 Running 0 27m
cattle-system cattle-node-agent-9tl5c 1/1 Running 0 26m
cattle-system cattle-node-agent-vrrmr 1/1 Running 0 27m
cattle-system cattle-node-agent-xrdkq 1/1 Running 0 26m
cattle-system rancher-5ddf8d4897-lmw5v 2/2 Running 0 28m
cattle-system rancher-5ddf8d4897-wnfqn 2/2 Running 0 29m
cattle-system rancher-5ddf8d4897-xcx5s 2/2 Running 0 28m
ingress-nginx default-http-backend-6d4b9c4cc7-5qh4c / Running 41d
ingress-nginx nginx-ingress-controller-dll87 / Running 41d
ingress-nginx nginx-ingress-controller-fnwvb / Running 41d
ingress-nginx nginx-ingress-controller-pzcxb / Running 41d
kube-system canal-4qnsr / Running 41d
kube-system canal-b7p6v / Running 41d
kube-system canal-wv8p5 / Running 41d
kube-system kube-dns-7fbcd74695-j7fx7 / Running 41d
kube-system kube-dns-autoscaler-6b777db656-58xxz / Running 41d
kube-system metrics-server-7c57d997f9-j7lt4 / Running 41d
kube-system rke-ingress-controller-deploy-job-nq7sq / Completed 41d
kube-system rke-kube-dns-addon-deploy-job-5flrd / Completed 41d
kube-system rke-metrics-addon-deploy-job-8tzcr / Completed 41d
kube-system rke-network-plugin-deploy-job-vq4gh / Completed 41d
kube-system tiller-deploy-768c796496-c4cd2 / Running 41d

标红的都重新创建后,就可以成功访问Rancher主界面了。

三、清理节点

当升级时候,某一台节点若升级失败,则需清理该节点,然后重新加入,下面介绍清理节点的步骤:

1、在 rancher 中剔除主机

2、登入该主机删除所有容器

docker rm -f $(docker ps -qa)

3、删除所有容器卷

docker volume rm $(docker volume ls -q)

4、备份目录

mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M")
mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")

5、删除残留路径

rm -rf /etc/ceph \
/etc/cni \
/opt/cni \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/cni \
/var/lib/kubelet \
/var/log/containers \
/var/log/pods \
/var/run/calico

6、重启docker

systemctl restart docker

参考:https://www.cnrancher.com/docs/rancher/v2.x/cn/install-prepare/remove-node/

升级最新版Rancher 2.2.6的更多相关文章

  1. centos7 升级最新版内核 并安装 bcc-tools

    centos7 升级最新版内核 升级系统 [root@jikeshijian ~]# yum update -y 安装 ELRepo [root@jikeshijian ~]# rpm --impor ...

  2. jquery升级到新版本报错[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法(转)

    最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot read property 'msie' of undefined.上jQuery网站上搜了一下,原因是$.browser这个a ...

  3. Windows下Yii2框架的两种安装方式及升级最新版

    第一种:归档文件形式安装(适合于没有安装composer的机器) 进入下载页https://www.yiiframework.com/download,选择下载第一个 下载完成之后是一个压缩包,解压文 ...

  4. Rancher中的服务升级实验

    个容器副本,使用nginx:1.13.0镜像.假设使用一段时期以后,nginx的版本升级到1.13.1了,如何将该服务的镜像版本升级到新的版本?实验步骤及截图如下: 步骤截图: 个容器,选择镜像ngi ...

  5. Rancher 2.3实现K8S一键式升级!再也不用同步升级Rancher啦!

    在Rancher 2.3之前,Rancher的新版本总是随着Kubernetes的新版本一起发布,如果你想要使用最新版本的Kubernetes,那么你需要先升级Rancher才能使用.Rancher ...

  6. 最新版Swagger 3升级指南和新功能体验!

    Swagger 3.0 发布已经有一段时间了,它于 2020.7 月 发布,但目前市面上使用的主流版本还是 Swagger 2.X 版本和少量的 1.X 版本,然而作为一名合格的程序员怎么能不折腾新技 ...

  7. 解决新版Emacs的警告:Warning (initialization): Your load-path...

    升级到新版Emacs后出现警告 作为做好用的代码编辑器之一,Emacs绝对在极客世界实用率很高.当然VIM也有很多支持者.但小编是从VIM转到Emacs的,个人觉得Emacs更好用. 小编最近升级了F ...

  8. Nginx安装、平滑升级与虚拟机配置

    Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器 由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的 ...

  9. 使用 Kubeadm 升级 Kubernetes 版本

    升级最新版 kubelet kubeadm kubectl (阿里云镜像) cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kuberne ...

随机推荐

  1. ElementUI如何展开指定Tree树节点

    原文:https://blog.csdn.net/gaojie_csdn/article/details/80738488 [问题] 在页面使用ElementUI的时候,想做出一个主动展开树节点的效果 ...

  2. Java高级工程师面试宝典

    Java高级工程师面试宝典 JavaSE 多线程 进程与线程的区别? 答:进程是所有线程的集合,每一个线程是进程中的一条执行路径,线程只是一条执行路径. 为什么要用多线程? 答:提高程序效率 多线程创 ...

  3. Java 之 Set 源码分析

    一.HashSet 构造方法: HashSet() :构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75  源码: 二.LinkedHashSet 构造方 ...

  4. Quality Center安装步骤

     测试管理工具 u 安装条件: Quality Center:QC9中文版 数据库:Oracle10 g 操作系统:Windows XP u 安装步骤: 1. 点击setup.exe,出现如下界面,点 ...

  5. youtube-dll工具使用,很好用!!

    最近喜欢上youtube-dll这个插件,下载东西真的很好用,墙裂推荐,github地址如下 https://github.com/ytdl-org/youtube-dl 安装 1.Linux 1.1 ...

  6. HTML5-表单 自带验证

    表单语法<form method="post"(规定如何发送表单数据 常用值:get|post) action="result.html">(表示向 ...

  7. 十、lambda表达式、内置函数之filter、map、reduce

    lambda表达式   学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'ale ...

  8. python移动目录下所有子目录文件到新的总目录

    python移动目录下所有子目录文件到新的总目录 import os import shutil def file(p):     p=p     z=os.listdir(p)     for i ...

  9. 安装Vyos

      Vyos是一个开源的网络操作系统,基于Debian,相对于ROS需要购买license,Vyos就更加开放的多. 下载Vyos wget http://vyos.hecint.com/iso/re ...

  10. CentOS7.5 系统最小化安装与初始化配置

    CentOS7.5 系统最小化安装与初始化配置 1.安装标准化的系统 1.1.系统安装期间的语言 选择:中文-简体中文,安装完成也会默认支持中文输出,便于管理 1.2.时区选择 亚洲上海,CST时区( ...