Rancher 系列文章-Rancher 升级
概述
之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。
前几天发现 Rancher 官方推荐的最新版为:v2.6.4
所以决定先后对 Rancher 和 K3S 集群进行升级。
根据官方推荐,计划:
- 将 Rancher 从 v2.6.3 升级到 v2.6.4
- 将 K3S 集群从 v1.21.7+k3s1 升级到 v1.22.5+k3s2
本文为 Rancher 的升级记录。
相关信息
本次升级的 Rancher 的基本信息为:
- Rancher v2.6.3
- 使用 Helm 3, 在线安装
- 使用 cert-manager(v1.7.1) + let's encrypt 管理证书
升级步骤
一、备份运行 Rancher Server 的 Kubernetes 集群
使用 备份应用程序 来备份 Rancher。
如果在升级过程中出现问题,你将使用备份作为恢复点。
备份结果如下图:
二、更新 Helm Chart repository
更新本地 helm 缓存。
helm repo update
获取用来安装 Rancher 的存储库名称。
关于存储库及其区别,请参见 Helm Chart Repositories。
- Latest:推荐用于尝试最新功能
- Stable:推荐用于生产环境 ( 我用的是这个)
- Alpha:即将发布的版本的实验性预览
请将命令中的
<CHART_REPO>
,替换为latest
,stable
或alpha
。$ helm repo list NAME URL
bitnami https://charts.bitnami.com/bitnami
grafana https://grafana.github.io/helm-charts
aliyuncs https://apphub.aliyuncs.com
rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
prometheus-community https://prometheus-community.github.io/helm-charts
从 Helm chart 库中获取最新的 chart 来安装 Rancher。
该命令将提取最新的 chart,并将其作为
.tgz
文件保存在当前目录中。可以通过添加--version=
标记来获取要升级到特定版本的 chart。如下:helm fetch rancher-stable/rancher --version=v2.6.4
三、升级 Rancher
使用 Helm 升级 Rancher 的普通(互联网连接)安装。
从当前安装的 Rancher Helm chart 中获取用 --set
传递的值。
$ helm get values rancher -n cattle-system
USER-SUPPLIED VALUES:
hostname: rancher.ewhisper.cn
ingress:
tls:
source: letsEncrypt
replicas: 1
systemDefaultRegistry: registry.cn-hangzhou.aliyuncs.com
Notes:
因为我的集群是测试或 Demo 用途,所以
replicas
设置为 1
将上一步中的所有值用--set key=value 追加到命令中。
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.ewhisper.cn \
--set ingress.tls.source=letsEncrypt \
--set replicas=1 \
--set systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com \
--version=2.6.4
四、验证升级是否成功
登录 Rancher,确认升级成功。
但是,验证过程中也发现几个问题,下面一一描述及解决。
升级后出现的问题
- helm 升级失败,报错
rendered manifests contain a resource that already exists
- 受管集群
home-k3s
无法连接。
Helm 升级 Rancher 失败
问题
报错如下:
Error: UPGRADE FAILED: rendered manifests contain a resource that already exists.
Unable to continue with update: Secret "bootstrap-secret" in namespace "cattle-system" exists and cannot be imported into the current release: invalid ownership metadata;
label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm";
annotation validation error: missing key "meta.helm.sh/release-name": must be set to "rancher";
annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "cattle-system"
解决办法
GitHub 搜索相关 Issue, 发现是 v2.6.4 的 Bug, Workaround 措施:
首先删除密钥,然后再次运行 helm 安装:
kubectl delete secret -n cattle-system bootstrap-secret
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.ewhisper.cn \
--set ingress.tls.source=letsEncrypt \
--set replicas=1 \
--set systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com \
--version=2.6.4
问题解决。
受管集群 home-k3s
无法连接
问题
升级后发现:受管集群 home-k3s
无法连接,如下图:
登录受管集群,查看 cattle-cluster-agent
的日志,发现报错提示 镜像的格式不对,拉取的为 x86_64 格式的镜像。
这是因为前面 Helm 安装的时候增加了 systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com
这个参数,而 registry.cn-hangzhou.aliyuncs.com
镜像库只有 x86_64 格式的镜像,没有 arm64 格式的镜像,而我的 home-k3s
是安装在 树莓派 4 上面的。
解决办法
移除 Helm 的systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com
配置,执行 upgrade, 如下:
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.ewhisper.cn \
--set ingress.tls.source=letsEncrypt \
--set replicas=1
执行成功后,发现 Helm 的配置已变更,但是 Rancher 的 systemDefaultRegistry
却仍是 registry.cn-hangzhou.aliyuncs.com
.
这里发现 Rancher 界面显示如下 - set by env value
:
最终发现是配置在这里:
apiVersion: management.cattle.io/v3
kind: Setting
metadata:
name: system-default-registry
customized: false
default: ''
source: ''
value: 'registry.cn-hangzhou.aliyuncs.com'
删除这个 yaml 或将 value
改为:value: ''
, 并重启 Rancher, 重启后生效,发现 'registry.cn-hangzhou.aliyuncs.com'
以被移除。
问题解决。
️参考文档
- Support matrix - Rancher v2.6.4
- 升级指南 | Rancher 文档
- Secret "bootstrap-secret" in namespace "cattle-system" exists and cannot be imported seen when upgrading/re-installing Rancher when bootstrap-secret is not created by Helm · Issue #37060 · rancher/rancher (github.com)
- v2.6.4 Milestone (github.com)
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Rancher 系列文章-Rancher 升级的更多相关文章
- Rancher中的服务升级实验
个容器副本,使用nginx:1.13.0镜像.假设使用一段时期以后,nginx的版本升级到1.13.1了,如何将该服务的镜像版本升级到新的版本?实验步骤及截图如下: 步骤截图: 个容器,选择镜像ngi ...
- Velero 系列文章(二):使用 Helm 安装 Velero
概述 本文是通过 Helm 3 来安装 Velero, 只做最基本的安装.并计划将 YAML (只备份 YAML, 不备份 Volume) 备份到腾讯云的 COS(兼容 S3, 所以可以通过 AWS ...
- 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)
随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...
- 一、VUE项目BaseCms系列文章:项目介绍与环境配置
一.项目效果图预览: 二.项目介绍 基于 elementui 写一个自己的管理后台.这个系列文章的目的就是记录自己搭建整个管理后台的过程,希望能帮助到那些入门 vue + elementui 开发的小 ...
- MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题
我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...
- IT编程相关内容汇总 - 进阶者系列 - 学习者系列文章
笔者工作了十多年了,对于技术也有一定的经验,但是IT编程技术的更新是挺快的,特别是各种框架,各种中间件啥的都涌现出来了.这篇博文笔者打算将IT编程的前端.后端.数据库和移动端做一个博文知识汇总,让阅读 ...
- Grafana 系列文章(十):为什么应该使用 Loki
️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-stre ...
- 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录
ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接) 代码自动生成: ...
- 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)
统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...
- 【微信小程序开发•系列文章六】生命周期和路由
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...
随机推荐
- 写一些Linux文件夹操作的一些感悟。
rwx 权限 对目录的作用 读权限(r) 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录.一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容. 写 ...
- entries
let arr = [1,2,3,4,5,6,7]; for (let [index, leaflet] of arr.entries()){ console.log(index,leaflet) }
- Linux 获取内网IP地址脚本
IP=$( /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr: ...
- java 操作excel
需要引入的包 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.HorizontalAlignmen ...
- django rest 自定义返回数据接口和异常处理
参考 Django rest framework自定义返回数据格式 一.简介 drf 默认返回的异常格式是这样的 1 { 2 "username": [ 3 "该字段是必 ...
- springboot pom文件引入本地jar包
记录maven引用本地jar包 配置 及打包的其中一个方法,作为个人笔记,供参考: <dependency> <groupId>gdin</groupId> < ...
- RabbitMQ博文收藏
RabbitMQ基本概念 消息队列之 RabbitMQ
- C#清空控件的值
/// 清除容器里面某些控件的值 /// </summary> /// <param name="parContainer">容器类控件</param ...
- 一分钟教你分清各种光纤跳线接头(SC、ST、FC、LC、MPO)
一分钟教你分清各种光纤跳线接头(SC.ST.FC.LC.MPO) 市场上常见的光纤跳线有以下几种接头:SC.ST.FC.LC.MPO,相信很多入门者和小编一样,面对各种英文缩写也是我只认识他们,却不 ...
- 在VS中C#工程操作Mysql数据库
1.实现mysql数据库与VS的连接,需要安装两个插件,作者装的是mysql-connector-net-6.9.9.msi和 mysql-for-visualstudio-1.2.6.msi. 2. ...