Rancher 系列文章-Rancher 升级

rancher,系列,文章,升级 · 浏览次数 : 234

小编点评

## Rancher v2.6.4 upgrade record This is a record of the upgrade process for Rancher v2.6.3 to v2.6.4. **Initial setup:** * Four Kubernetes machines were installed with a 1 master (and etcd) 3 node K3S cluster. * Rancher v2.6.3 was installed using Helm. * Cert-manager was used for managing certificates. **Upgrade steps:** 1. Rancher v2.6.3 was upgraded to v2.6.4 using Helm. 2. The upgrade process encountered the following issues: * **helm 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".` * **Kubernetes cluster "home-k3s" cannot connect:** `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".` 3. These issues were resolved by removing the `systemDefaultRegistry` configuration and re-running the upgrade. **Final upgrade success:** * After resolving the issues, Rancher was upgraded to v2.6.4 successfully. * The systemDefaultRegistry was changed to the correct value (registry.cn-hangzhou.aliyuncs.com). * The systemDefaultRegistry value was also set in the Rancher UI, as expected. **Additional notes:** * The upgrade process was performed using Helm charts. * The upgrade was successful despite encountering some issues. * The logs and error messages provide valuable insights into the upgrade process and potential issues.

正文

概述

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

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

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

根据官方推荐,计划:

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

本文为 Rancher 的升级记录。

相关信息

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

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

升级步骤

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

使用 备份应用程序 来备份 Rancher。

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

备份结果如下图:

Rancher 界面备份结果

对象存储中的备份对象

二、更新 Helm Chart repository

  1. 更新本地 helm 缓存。

    helm repo update
    
  2. 获取用来安装 Rancher 的存储库名称。

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

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

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

    $ 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
    
  3. 从 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,确认升级成功。

Rancher 升级 v2.6.4 成功

🎉🎉🎉

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

升级后出现的问题

  • 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:

Rancher 界面 systemDefaultRegistry 显示

最终发现是配置在这里:

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' 以被移除。

问题解决。

📚️参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

与Rancher 系列文章-Rancher 升级相似的内容:

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为:v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级

Rancher 系列文章-K3S 集群升级

概述 书接上回:《Rancher 系列文章-Rancher 升级》, 我们提到:将 Rancher 用 Helm 从 v2.6.3 升级到 v2.6.4. 接下来开始进行 K3S 集群的升级:将 K3S 集群从 v1.21.7+k3s1 升级到 v1.22.5+k3s2 相关信息 本次升级的 K3S

Rancher 系列文章-K3s Traefik MiddleWare 报错-Failed to create middleware keys

概述 书接上回:《Rancher 系列文章-K3S 集群升级》, 我们提到:通过一键脚本升级 K3S 集群有报错。 接下来开始进行 Traefik 报错的分析和修复, 问题是: 所有 Traefik 的 IngressRoute 访问报错 404 问题描述 报错如下: time="2022-05-0

Rancher系列文章-Rancher v2.6使用脚本实现导入集群

概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经验. 1. Rancher UI 获取创建集群参数 访问Rancher_URL/v3/cluster

Rancher 系列文章-Rancher 对接 Active Directory 实战

概述 只要是个公司,基本上都有邮箱和 AD(Active Directory). 在 AD 里,已经有了: 用户 账号密码 邮箱 用户组 组织架构 所以对于一些仅限于本公司一定范围内人员使用的管理或后台或运营运维类系统,其实是非常适合对接 AD 来进行认证、分组,以及根据分组来进行权限分配的。 对于

Rancher 系列文章-在腾讯云的 K3S 上安装高可用 Rancher 集群

开篇 📜 引言: 三人行必有我师焉 知识共享,天下为公 《K3s 系列文章》 《Rancher 系列文章》 方案 在腾讯云的 K3S 上安装 Rancher 方案目标 高可用 3 台 master 的 k3s 集群 高可用模式的 rancher 数据备份 rancher 数据备份到 腾讯云对象存储

K3S 系列文章-5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout'分析与解决

开篇 《K3s 系列文章》 《Rancher 系列文章》 问题概述 20220606 5G IoT 网关设备同时安装 K3S Server, 但是 POD 却无法访问互联网地址,查看 CoreDNS 日志提示如下: ... [ERROR] plugin/errors: 2 update.traefi

K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群

开篇 《K3s 系列文章》 《Rancher 系列文章》 方案 在腾讯云上安装 K3S 后续会在这套 K3S 集群上安装 Rancher 方案目标 高可用 3 台master 的 k3s 集群 数据备份 k3s 数据备份到 腾讯云对象存储 cos 尽量复用公有云的能力 ~~Tencent Cloud

Rancher 系列文章-RHEL7.8 离线有代理条件下安装单节点 Rancher

一 基础信息 1.1 前提 本次安装的为 20220129 最新版:Rancher v2.6.3 VM 版本为 RHEL 7.8, 7.9 或 8.2, 8.3, 8.4(Rancher 官网要求) VM YUM 仓库:已配置对应版本的 RHEL 和 EPEL YUM 仓库 VM 提供 root 权

大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s

前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 📚️Reference: IoT 边缘计算系列文章 Rancher + K3s 简介 Rancher: Kubernetes 统一管理平台, Rancher 是为采用容器的团队提供的一个完整的软件栈。它解决了管理多个 K