聊聊单节点Rancher证书过期问题
聊聊单节点Rancher证书过期问题
如果本文档帮您解决了问题,欢迎关注
云原生村长
,不定期更新kubernetes、rancher等小技巧.
今天我们来聊聊单节点安装的 Rancher 的证书问题,其实这个问题从去年(2020 年)就已经暴露出来了,因为 Rancher 2.3 的首个版本是 2019 年 10 月 8 日发布的,到 2020 年的 10 月份正好满一年,说到这里,真挺佩服我们国内用户的尝鲜精神。
那么单节点安装的 Rancher 的证书过期会是什么现象呢:
- Rancher UI 无法访问
- Rancher Server 日志报错:
x509: certificate has expired or is not yet valid
- Rancher Server 反复重启(如果你在启动 rancher 时加了
--restart
参数)
此时,你无法继续再通过 Rancher UI 去操作集群,有许多用户就会认为整个集群都挂掉了,莫慌,其实并不是这样。Rancher 的设计是分离式的,也就是说 Rancher Server 挂掉,根本不会影响你创建的业务集群,你可以继续通过kubectl
操作你的业务集群,而且你的 pod 等业务不会有任何变动。
原因
Rancher 官网明确指出 Rancher v2.3 以上的版本 会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书,那为什么会出现上述的情况呢,其实这是 K3s 的一个 bug 引起的。
Rancher Server 内置了一个 K3s 集群作为 local 集群,也就是说通过docker run ... rancher/rancher:version
启动的 Rancher,在容器里其实已经内置了一个 K3s 用来支撑 Rancher 的运行。
这里再简单说下 K3s 的证书逻辑,K3s 证书有效期默认也是一年,如果证书已经过期或剩余的时间不足 90 天,则在 K3s 重启时轮换证书。但在 K3s v1.19.1 之前的版本中,由于 BUG(https://github.com/k3s-io/k3s/issues/1621),导致K3s无法自动轮转证书。
Rancher v2.3+ 和 v2.4+ 内置的 K3s 版本分别是1.17.x
和1.18.x
,所以说由于内置的 k3s 影响到了 Rancher Server 的证书轮转,因为当 Rancher 证书过期后,会自动重启 Rancher Server 的重启,然后触发内置 K3s 的更新,此时,K3s 证书更新失败,所以,Rancher Server 就无法启动。
手动轮转证书
2.3.x
docker exec -ti <rancher_server_id> mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tlsbak
# 执行两侧,第一次用于申请证书,第二次用于加载证书并启动
docker restart <rancher_server_id>
2.4.x 和 2.5.x
docker exec
到 Rancher Server 容器内,执行:**
kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving
kubectl --insecure-skip-tls-verify delete secret serving-cert -n cattle-system
rm -f /var/lib/rancher/k3s/server/tls/dynamic-cert.json
-
重启 rancher-server**
-
将 rancher ip 重新注入到新证书中,否则业务集群 agent 连接 Rancher Server 会有问题**
curl --insecure -sfL https://server-url/v3
后记
Rancher v2.5.8 通过把内置的 K3s 集群更新到v1.20
解决了这个问题。无论是新安装的,还是从老版本升级到 v2.5.8 的单节点 Rancher,都不会再被证书过期所困扰。
其实非常不建议大家在生产上用单节点安装,如果机器不够用,可以先用 rke 或 k3s 启动一个单节点的 local 集群,然后通过 helm 将 Rancher 部署到这个 local 集群上,这样即不占用过多机器,也可以为后期扩展打好基础。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器