共计 4099 个字符,预计需要花费 11 分钟才能阅读完成。
本文转自 Rancher Labs
前 言
Rancher 2.3 正式公布曾经一年,第一批应用 Rancher 2.3 的用户可能会遇到 Rancher Server 证书过期,然而没有主动轮换的状况。这会导致 Rancher Server 无奈启动,并且日志呈现报错:
请留神:
Rancher Server 无奈启动不会影响上游集群,上游集群仍然能够通过 kubeconfig 去操作。
请留神:
Rancher Server 无奈启动不会影响上游集群,上游集群仍然能够通过 kubeconfig 去操作。
以上状况只会在 docker run 启动或应用小于 k3s v1.19 用作 local 集群的 Rancher 上才会产生。以上状况只会在
docker run
启动或应用小于 k3s v1.19 用作 local 集群的 Rancher 上才会产生。
重现问题
为了让大家更好的了解这个问题,上面将以手动批改零碎工夫的模式来重现这个问题。
以后工夫:2020 年 10 月 30 日 星期五 10 时 37 分 59 秒 CST
1、启动 Rancher v2.3.1,并且增加上游集群,操作步骤能够参考官网:
- https://docs.rancher.cn/docs/…
- https://docs.rancher.cn/docs/…
2、启动 Rancher 之后,从浏览器上查看到的过期工夫:2021 年 10 月 30 日 星期六 中国规范工夫 10:29:35
3、查看 Rancher Server 容器内的 K3s 证书过期工夫为 Oct 30 02:28:49 2021 GMT
root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Oct 30 02:28:49 2021 GMT
4、将服务器工夫调整为证书过期后 5 天的日期,比方:20211105
root@rancher1:~# timedatectl set-ntp no
root@rancher1:~# date -s 20211105
Fri Nov 5 00:00:00 CST 2021
root@rancher1:~# date
Fri Nov 5 00:00:00 CST 2021
此时,Rancher UI 曾经无法访问:
并且 Rancher 容器因为内置的 K3s 证书过期而一直重启。
手动轮换证书
以上景象是因为 Rancher Server 内置的 K3s 证书过期,导致 K3s 无奈启动,从而导致 Rancher Server 容器无奈启动。
为了能够持续操作 Rancher Server 容器,须要将零碎工夫调整到 K3s 证书过期之前。
root@rancher1:~# date -s 20211025
Mon Oct 25 00:00:00 CST 2021
如果启动 Rancher 时未加
--restart=unless-stopped
参数,须要手动启动 Rancher Server。
接下来咱们就能够进入到容器内手动删除 K3s 证书,而后重启 Rancher,重启胜利后将从新生成 K3s 证书。
root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# rm -rf /var/lib/rancher/k3s/server/tls/*.crt
root@25c228f6a4c8:/var/lib/rancher# exit
exit
root@rancher1:~# docker restart rancher_server_id
Rancher Server 如果呈现以下日志,那么须要再重启一次 Rancher Server:
2021/10/24 16:01:00 [INFO] Waiting for server to become available: Get https://localhost:6443/version?timeout=30s: x509: certificate signed by unknown authority
验 证
1、将服务器工夫再次调整为证书过期后 5 天的日期,比方:20211105
root@rancher1:~# date -s 20211105
Fri Nov 5 00:00:00 CST 2021
证书更新之后,咱们须要确认 K3s 证书是否更新胜利,还须要查看上游集群是否会有影响。
2、确认 K3s 证书曾经更新
root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Oct 24 16:00:54 2022 GMT
K3s 证书过期工夫曾经从 Oct 30 02:28:49 2021 GMT
更新到了Oct 24 16:00:54 2022 GMT
3、确认浏览器证书曾经更新
浏览器上的证书过期曾经从 2021 年 10 月 30 日 星期六 中国规范工夫 10:29:35
更新到了2022 年 10 月 25 日 星期二 中国规范工夫 00:01:34
4、确认上游集群不受影响
- 集群状态为
Active
- 查看集群 Pod 的运行状况
后 记
从 Rancher 2.3 开始,Rancher Server 容器中内置了 K3s 作为 local 集群来撑持 Rancher Server 运行。
而 K3s 外部主动签发的证书有效期是 1 年,失常状况下如果证书已过期或残余的工夫少于 90 天,则在重新启动 K3s 时将轮换证书。参考官网文档:
https://docs.rancher.cn/docs/…
实际上因为 K3s 的 bug 导致在证书已过期或残余的工夫少于 90 地利重启 Rancher,没有将 K3s 证书轮换,所以才会呈现上述问题。
不过无需放心,在后续的 K3s v1.19 版本中曾经解决了这一问题,请参考:
https://github.com/rancher/k3…