首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Rancher 系列文章-Rancher 升级v2.6.4

Rancher 系列文章-Rancher 升级v2.6.4

作者头像
东风微鸣
发布2022-06-14 14:58:20
发布2022-06-14 14:58:20
1.6K0
举报

概述

之前用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。

前几天发现 Rancher 官方推荐的最新版为:v2.6.4[1]

所以决定先后对 Rancher 和 K3S 集群进行升级。

根据官方推荐,计划:

1.将 Rancher 从 v2.6.3 升级到 v2.6.42.将 K3S 集群从 v1.21.7+k3s1 升级到 v1.22.5+k3s2

本文为 Rancher 的升级记录。

相关信息

本次升级的 Rancher 的基本信息为:

1.Rancher v2.6.32.使用 Helm 3, 在线安装3.使用 cert-manager(v1.7.1) + let's encrypt 管理证书

升级步骤

一、备份运行 Rancher Server 的 Kubernetes 集群

使用 备份应用程序[2] 来备份 Rancher。

如果在升级过程中出现问题,你将使用备份作为恢复点。

备份结果如下图:

Rancher 界面备份结果

对象存储中的备份对象

二、更新 Helm Chart repository

首先, 更新本地 helm 缓存。

代码语言:javascript
复制
helm repo update

其次, 获取用来安装 Rancher 的存储库名称。

关于存储库及其区别,请参见 Helm Chart Repositories[3]。

•Latest:推荐用于尝试最新功能•Stable:推荐用于生产环境 (📝 我用的是这个)•Alpha:即将发布的版本的实验性预览

请将命令中的 <CHART_REPO>,替换为 lateststablealpha

代码语言:javascript
复制
$ 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。如下:

代码语言:javascript
复制
helm fetch rancher-stable/rancher --version=v2.6.4

三、升级 Rancher

使用 Helm 升级 Rancher 的普通(互联网连接)安装。

从当前安装的 Rancher Helm chart 中获取用 --set 传递的值。

代码语言:javascript
复制
$ 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 追加到命令中。

代码语言:javascript
复制
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,确认升级成功。

Rancher 升级 v2.6.4 成功

🎉🎉🎉

但是,验证过程中也发现几个问题,下面一一描述及解决。

升级后出现的问题

•helm 升级失败,报错 rendered manifests contain a resource that already exists•受管集群 home-k3s 无法连接。

Helm 升级 Rancher 失败

问题

报错如下:

代码语言:javascript
复制
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[4], Workaround 措施:

首先删除密钥,然后再次运行 helm 安装:

代码语言:javascript
复制
kubectl delete secret -n cattle-system bootstrap-secret
代码语言:javascript
复制
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, 如下:

代码语言:javascript
复制
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:

Rancher 界面 systemDefaultRegistry 显示

最终发现是配置在这里:

代码语言:javascript
复制
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[5]•升级指南 | Rancher 文档[6]•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)[7]•v2.6.4 Milestone (github.com)[8]

References

[1] v2.6.4: https://www.suse.com/zh-cn/suse-rancher/support-matrix/all-supported-versions/rancher-v2-6-4/ [2] 备份应用程序: https://docs.rancher.cn/docs/rancher2.5/backups/back-up-rancher/_index [3] Helm Chart Repositories: https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/chart-options/_index [4] v2.6.4 的 Bug: https://github.com/rancher/rancher/issues/37060#issuecomment-1102157986 [5] Support matrix - Rancher v2.6.4: https://www.suse.com/zh-cn/suse-rancher/support-matrix/all-supported-versions/rancher-v2-6-4/ [6] 升级指南 | Rancher 文档: https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/upgrades/_index [7] 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): https://github.com/rancher/rancher/issues/37060 [8] v2.6.4 Milestone (github.com): https://github.com/rancher/rancher/milestone/255

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 相关信息
  • 升级步骤
    • 一、备份运行 Rancher Server 的 Kubernetes 集群
    • 二、更新 Helm Chart repository
    • 三、升级 Rancher
    • 四、验证升级是否成功
  • 升级后出现的问题
    • Helm 升级 Rancher 失败
      • 问题
      • 解决办法
    • 受管集群 home-k3s 无法连接
      • 问题
      • 解决办法
  • 📚️参考文档
    • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档