Rancher 2.6.7 升级到 rancher 2.7.0 报错

Rancher Server 设置

  • Rancher 版本:2.6.7
  • 安装选项 (Docker install/Helm Chart): Helm
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:RKE1 V1.4.1
  • 在线或离线部署:在线 和 离线方式都测试过,报错医院

下游集群信息

  • Kubernetes 版本:
  • Cluster Type (Local/Downstream):
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等):

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):
    • 如果自定义,自定义权限集:

主机操作系统:

问题描述:
helm 升级报错
Error: UPGRADE FAILED: create: failed to create: Internal error occurred: failed calling webhook “rancher.cattle.io”: failed to call webhook: Post “https://rancher-webhook.cattle-system.svc:443/v1/webhook/mutation?timeout=10s”: context deadline exceeded

重现步骤:
在线升级
helm upgrade rancher rancher-latest/rancher
–namespace cattle-system
-f values.yaml
–version=2.7.0

离线升级
helm upgrade rancher ./rancher-2.7.0.tgz
–namespace cattle-system
-f values.yaml
–set rancherImage=idcreg.asus.com.cn/rancher/rancher
–set systemDefaultRegistry=idcreg.asus.com.cn
–set useBundledSystemChart=true

结果:
升级不成功

预期结果:

截图:
在线升级

离线升级

其他上下文信息:

日志


该环境的是由 3 个节点(A/BC)组件的 local 集群,通过 helm 去在这个 local 集群上安装 rancher HA。

排查过程

首先,这个问题由两个原因造成:

  • webhook 证书过期
  • api-server 访问 webhook pod timeout

webhook 证书过期

从日志来看,api-server 连接不到 rancher-webhook。最开始怀疑是 webhook 证书过期了,所以尝试新建 rke 集群来触发 rbac 的操作来确认 webhook 证书是否过期。创建集群确实失败了,所以按照官网轮换证书。

参考官网 过期 Webhook 证书轮换 | Rancher Manager 轮换即可

轮换成功后,可正常创建集群。

api-server 访问 webhook pod timeout

  1. 排查 svc 和 ep 的链接是否有问题
kubectl get svc rancher-webhook -n cattle-system
kubectl get ep rancher-webhook -n cattle-system
  1. 查看主机的 selinux 和防火墙是否已经关闭,还有外部的安全组
  2. 在 api-server 探测 webhook svc ip:443,发现无返回

最后发现 主api-server 和 webhook pod 不在同一个机器,然后将 webhook pod 重新调度到 主 api-server 的节点上,恢复正常。

后续还请排查 这两个节点的网络连接情况。