关于单节点Rancher Server证书过期

大佬好,我用的docker 单节点 rancher 2.5.12版本,按照上面的步骤更新证书后,rancher server 还是无法启动,看了一下日志是k3s 无法启动导致,容器一直等待k3s 启动,k3s 日志提示证书问题,但是我检查了/var/lib/rancher/k3s/server/tls 下的所有证书都已经更新了,请问一下是哪里还有问题。

k3s 错误日志如下:

http: TLS handshakke error from 127.0.0.1:37434: remote error: tls: bad certificate

docker 错误日志如下:
Waiting for server to become available: Get “https://127.0.0.1:6443/version?timeout15m0s” dial tcp 127.0.0.1:6443: connect: connection refused

你是如何操作的?把你每个真实的操作命令都写到下面

docker exec 进入容器 执行下面的步骤
1,kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving
提示成功 secret “k3s-serving” deleted
2, kubectl --insecure-skip-tls-verify delete secret serving-cert -n cattle-system
提示失败 Error from server (NotFound): secrets “serving-cert” not found
3, rm -f /var/lib/rancher/k3s/server/tls/dynamic-cert.json
4,重启容器
5,curl --insecure -sfL https://ip/v3 (这里不知道要不要加端口)
6,重启容器
发现容器一直在重启
docker logs 错误是连接不上127.0.0.1:6443, k3s 退出后容器就重启了,日志如下
Waiting for server to become available: Get “https://127.0.0.1:6443/version?timeout15m0s” dial tcp 127.0.0.1:6443: connect: connection refused
k3s exited with: exit status 255

进入容器查看k3s 日志如下:
msg=“Cluster-Http-Server 2023/09/21 10:10:10 http: TLS handshake error from 127.0.0.1:32862: remote error: tls :bed certificate”
msg=“Cluster-Http-Server 2023/09/21 10:10:10 http: TLS handshake error from 127.0.0.1:32870: remote error: tls :bed certificate”

后面还有两条 error msg=“Failed to set sysctl: open /proc/sys/net/bridge-nf-call-iptables: no such file or directory”
error msg=“Failed to set sysctl: open /proc/sys/net/bridge-nf-call-ip6tables: no such file or directory”

但是我觉得还是因为k3s 证书的问题,/var/lib/rancher/k3s/server/tls 下的所有.crt 我都检查过了,enddate 只少都是1年后,所以现在不知道是哪里还有问题,还请大佬指点指点。

敢问最后有修复吗

其实不管修复不修复都不重要,因为 docker run 这种方式安装的 rancher 官方根本不建议上生产。

2.5.18 按照帖子更新后 Rancher-webhook 一直报 Waiting for server to become available: the server has asked for the client to provide credentials
然而Rancher-webhook 的证书是有效的

这个也不是更新 webhook 的操作,你可以创建一个新的话题,将详细上下文和操作步骤描述清楚。

执行了:

curl --insecure -sfL https://{server-url}/v3

并且成功返回了{“apiVersion”:{“group”:信息
但是rancher agent仍然报错:
Get "https://x.x.x.x:1443": x509: certificate is valid for 127.0.0.1, 172.17.0.2, not x.x.x.x"

替换为你 rancher 使用的 地址

为什么要加个 token 呢?你可以在执行过程中观察 rancher server 的日志。看看有没有触发证书轮换的日志。

不添加token要报错401呀,那我观察下

执行了curl不加token之后, rancher-server日志没有变化啊,没有轮换证书的内容,报错还是如下(报错的大概原因就是rancher agent连不上rancher server):

2024/09/29 06:35:28 [ERROR] cluster [c-jtsrg] provisioning: Failed to set up SSH tunneling for host [x.x.x.x]: Can’t establish dialer connection: can not build dialer to [c-jtsrg:m-ed003dd035cf]
2024/09/29 06:35:28 [ERROR] cluster [c-jtsrg] provisioning: Removing host [x.xx.x.x] from node lists
2024/09/29 06:35:43 [ERROR] ClusterController c-jtsrg [cluster-deploy] failed with : Get “https://x.x.x.x:6443/apis/apps/v1/namespaces/cattle-system/daemonsets/cattle-node-agent?timeout=45s”: waiting for cluster [c-jtsrg] agent to connect, [cluster-provisioner-controller] failed with : Cluster must have at least one etcd plane host: failed to connect to the following etcd host(s) [x.x.x.x]

我的部署情况大概就是这个rancher server和agent在同一个机器上,所以我curl的是这个机器的ip,但是我访问页面是用的域名访问,例如https://rancher.xx.com
但是我curl的是: curl --insecure -sfL https://x.x.x.x:1443/v3

那你就用域名 curl 一下

域名CURL一下之后还是没有触发证书轮转,还是报错:
couldn’t get current server API group list: Get “https://10.10.x.x:1443/k8s/clusters/c-jtsrg/api?timeout=32s”: tls: failed to verify certificate: x509: certificate is valid for 127.0.0.1, 172.17.0.2, not 10.10.x.x
Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for 127.0.0.1, 172.17.0.2, not 10.10.x.x

把执行的命令发出来

curl --insecure -sfL https://10.10.x.x:1443/v3

curl --insecure -sfL https://rancher-x.x.com/v3

这两个都试过了

我的手动轮转成功了 谢谢

这个具体,怎么升级k3s,有详细步骤吗?老K

没明白啥意思,你提交一个新话题吧

Rancher单节点内置k3s升级 已提交