升级最新版Rancher 2.2.6
前言:之前采用离线方式部署好了 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的更多相关文章
- centos7 升级最新版内核 并安装 bcc-tools
centos7 升级最新版内核 升级系统 [root@jikeshijian ~]# yum update -y 安装 ELRepo [root@jikeshijian ~]# rpm --impor ...
- jquery升级到新版本报错[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法(转)
最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot read property 'msie' of undefined.上jQuery网站上搜了一下,原因是$.browser这个a ...
- Windows下Yii2框架的两种安装方式及升级最新版
第一种:归档文件形式安装(适合于没有安装composer的机器) 进入下载页https://www.yiiframework.com/download,选择下载第一个 下载完成之后是一个压缩包,解压文 ...
- Rancher中的服务升级实验
个容器副本,使用nginx:1.13.0镜像.假设使用一段时期以后,nginx的版本升级到1.13.1了,如何将该服务的镜像版本升级到新的版本?实验步骤及截图如下: 步骤截图: 个容器,选择镜像ngi ...
- Rancher 2.3实现K8S一键式升级!再也不用同步升级Rancher啦!
在Rancher 2.3之前,Rancher的新版本总是随着Kubernetes的新版本一起发布,如果你想要使用最新版本的Kubernetes,那么你需要先升级Rancher才能使用.Rancher ...
- 最新版Swagger 3升级指南和新功能体验!
Swagger 3.0 发布已经有一段时间了,它于 2020.7 月 发布,但目前市面上使用的主流版本还是 Swagger 2.X 版本和少量的 1.X 版本,然而作为一名合格的程序员怎么能不折腾新技 ...
- 解决新版Emacs的警告:Warning (initialization): Your load-path...
升级到新版Emacs后出现警告 作为做好用的代码编辑器之一,Emacs绝对在极客世界实用率很高.当然VIM也有很多支持者.但小编是从VIM转到Emacs的,个人觉得Emacs更好用. 小编最近升级了F ...
- Nginx安装、平滑升级与虚拟机配置
Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器 由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的 ...
- 使用 Kubeadm 升级 Kubernetes 版本
升级最新版 kubelet kubeadm kubectl (阿里云镜像) cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kuberne ...
随机推荐
- oracle中如何生成awr【性能调优】报告
1.进入数据库 sqlplus / as sysdba 2.查看用户 show parameter db_name 3.开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CR ...
- 阿里云 centos 无法执行moodle cron
在阿里云服务器安装moodle时,在执行cron计划任务时,报错sendmail: fatal: parameter inet_interfaces: no local interface found ...
- python 排序 桶排序
算法思想: 桶排序将数组分到有限数量的桶里.然后每个桶里再分别排序(使用任何算法) 当要倍排序的数组内的数值时均匀分配的时候,桶排序使用线性时间O(n) 步骤: 根据最大值.最小值.桶内数据范围设定一 ...
- 两道JVM面试题,竟让我回忆起了中学时代!
作者:肥朝 原文链接:https://mp.weixin.qq.com/s/4wJ6ANal0blLOseasfIuVw 中学授课模式 考虑到可能有部分粉丝对JVM参数不清楚,所以我们参照中学的授课模 ...
- Java内功心法,创建型设计模式包括哪些
1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点. Class Diagram 使用一个私有构造函数.一个私有静态变量以及一个公有静态函数来实现. 私有 ...
- 机甲大师S1机器人编程学习
机甲大师 S1(RoboMaster S1)是大疆新出的教育机器人,很期待.S1支持Scratch和Python编程.(Scratch是麻省理工学院的“终身幼儿园团队”(Lifelong Kinder ...
- 获取post传输参数
1.获取post参数可以用 传输参数为 a=aa&b=bb这种 public static SortedDictionary<string, string> GetRequestP ...
- 2019-09-17 thinkphp网页静态化
public function details(){ $pid = I('get.goods_id'); $filename = "details_".$pid.".ht ...
- 【转载】C#中Datatable修改列名
在C#的数据表格DataTable操作过程中,有时候会遇到修改DataTable数据表格的列名的需求,其实C#中的DataTable的列名支持手动修改调整,可以通过DataTable类的Columns ...
- D2Admin基本使用
目录 d2-admin基本使用 1 安装 1.1 全局安装 d2-admin 1.2 创建项目 1.3 启动项目 1.4 注意事项 2 修改框架 title 和 logo 2.1 修改 title 2 ...