

























一、问题现象
登录测试环境Rancher控制台https://172.19.120.11(docker run方式部署的单节点rancher),报错x509:certificate has expired or is not yet valid。这个错误表明Rancher容器无法连接到Kubernetes API Server(6443端口),证书验证失败。

二、问题排查
【1】 查看Rancher容器日志:

【2】登录Rancher容器内部,查看证书有效期到2026年2月5号(已到期):

【3】此时尝试重启Rancher容器,发现重启后Rancher控制台https://172.19.120.11 已根本无法访问。宿主机映射端口80和443已监听,但是网络上到这两个端口已不通。

三、问题原因
Rancher Server内置了一个K3S集群作为Local集群,也就是说Rancher容器里其实已经内置了一个K8S用来支撑Rancher的运行。
问题总结:K3S 因为自身Bug导致证书轮转失败时,会产生两个致命问题:
四、问题处理
登录Rancher容器内,此时由于证书过期,在Rancher容器内部已无法执行kubectl命令!

解决办法:在执行kubetl命令时带上--insecure-skip-tls-verify,作用是让 kubectl 跳过对 API Server 服务器证书的验证,它直接忽略了当前存在的证书过期错误,使命令可以强制执行
【1】步骤1:删除k3s-serving、tls-rancher 证书
k3s-serving 是 K3S API Server 的服务端证书;tls-rancher 是 Rancher Web UI 的服务端证书。删除这两个证书后,重启 Rancher 会触发 K3s 自动重新生成它们。

【2】步骤2:删除dynamic-cert.json文件
dynamic-cert.json 是 K3S记录当前动态证书信息的文件。删除它等于重置证书状态,强制 K3S 在下文启动时重新走完整的签发流程。删除后,重启 Rancher 会由 K3S 自动重新生成。可以通过这个文件里的tls.crt证书内容查出有效期!

【3】步骤3:重启Rancher服务
重启 Rancher 容器会同步重启其内置的 K3s 服务。K3S 服务在启动时,如果发现核心证书文件缺失,便会触发内置的证书轮转或生成逻辑,从而制造出新的有效证书。

【4】步骤4:将rancher ip重新注入到证书内
此操作是为了访问 Rancher API,触发 Rancher Server 完成启动后的自检和配置加载,确保它感知到新的证书并使用正确的主机名(IP)进行注册,相当于“激活”新证书。

此时,再次查看Rancher证书有效期已经更新:

【5】步骤5:最后强制重启cattle-cluster-agent服务
前面四个步骤完成后,登录测试环境Rancher控制台https://172.19.120.11,发现无法与被管理的Kubernetes 集群 API Server 建立有效通信:

此时,需要强制重启cattle-cluster-agent服务!cattle-cluster-agent 是 Rancher 部署在 被管理的Kubernetes 集群中的代理,负责在 Rancher Server 与被管理的Kubernetes集群之间建立双向通信,同步状态和执行命令。

到这里,测试环境Rancher 证书到期问题已修复,登录Rancher控制台https://172.19.120.11 可以正常使用了。
整个修复流程的核心逻辑:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。