本文转自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 bashroot@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.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/client-auth-proxy.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/client-ca.crtnotAfter=Oct 28 02:28:49 2030 GMT/var/lib/rancher/k3s/server/tls/client-controller.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/client-kube-proxy.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/client-scheduler.crtnotAfter=Oct 30 02:28:49 2021 GMT/var/lib/rancher/k3s/server/tls/request-header-ca.crtnotAfter=Oct 28 02:28:49 2030 GMT/var/lib/rancher/k3s/server/tls/server-ca.crtnotAfter=Oct 28 02:28:49 2030 GMT/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crtnotAfter=Oct 30 02:28:49 2021 GMT
4、将服务器工夫调整为证书过期后5天的日期,比方:20211105
root@rancher1:~# timedatectl set-ntp noroot@rancher1:~# date -s 20211105Fri Nov 5 00:00:00 CST 2021root@rancher1:~# dateFri Nov 5 00:00:00 CST 2021
此时,Rancher UI 曾经无法访问:
并且Rancher 容器因为内置的K3s证书过期而一直重启。
手动轮换证书
以上景象是因为Rancher Server内置的K3s证书过期,导致K3s无奈启动,从而导致Rancher Server容器无奈启动。
为了能够持续操作Rancher Server容器,须要将零碎工夫调整到K3s证书过期之前。
root@rancher1:~# date -s 20211025Mon Oct 25 00:00:00 CST 2021
如果启动Rancher时未加--restart=unless-stopped
参数,须要手动启动Rancher Server。
接下来咱们就能够进入到容器内手动删除K3s证书,而后重启Rancher,重启胜利后将从新生成K3s证书。
root@rancher1:~# docker exec -it rancher_server_id bashroot@25c228f6a4c8:/var/lib/rancher# rm -rf /var/lib/rancher/k3s/server/tls/*.crtroot@25c228f6a4c8:/var/lib/rancher# exitexitroot@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 20211105Fri Nov 5 00:00:00 CST 2021
证书更新之后,咱们须要确认K3s证书是否更新胜利,还须要查看上游集群是否会有影响。
2、确认K3s证书曾经更新
root@rancher1:~# docker exec -it rancher_server_id bashroot@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.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/client-auth-proxy.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/client-ca.crtnotAfter=Oct 22 16:00:54 2031 GMT/var/lib/rancher/k3s/server/tls/client-controller.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/client-kube-proxy.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/client-scheduler.crtnotAfter=Oct 24 16:00:54 2022 GMT/var/lib/rancher/k3s/server/tls/request-header-ca.crtnotAfter=Oct 22 16:00:54 2031 GMT/var/lib/rancher/k3s/server/tls/server-ca.crtnotAfter=Oct 22 16:00:54 2031 GMT/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crtnotAfter=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...