

超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!
source link: https://segmentfault.com/a/1190000038346346
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文转自 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,并且添加下游集群,操作步骤可以参考官网:
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版本中已经解决了这一问题,请参考:
Recommend
-
42
"热搜推荐的关键词和 App 你了解多少?
-
11
超稳微云台夜色更精彩 vivo X60系列影像旗舰正式发布 2020-12-29 22:...
-
10
国内两轮换电生态联盟成立,小哈换电拟开放相关专利许可 近日,由中国产业海外发展协会、宁德市人民政府主办,宁德智享无限、宁德时代联合承办的2021中国两轮换...
-
7
一夜4消息:纳什透露轮换计划,湖勇裁判报告出炉,联盟再开罚单 过去这一夜,...
-
8
超稳的高颜值支架:海备思铝合金手机支架 | 掘墓人的小铲子 超稳的高颜值支架:海备思铝合金手机支架 ...
-
4
北京限行轮换时间7月5日起,北京新一轮尾号限行规定用便签提醒
-
8
我的职业是一名导演,同时也是一名Vlogger,在拍摄各种影视作品的同时也记录着生活,分享给自己的粉丝朋友们。我的Vlog的特色是美且精致,所以拍摄时非常注重画面细节,这也就对我的拍摄设备有着一定的要求,大多时候摄影机和单反都太重了,没有办法拿来...
-
3
“羲和”追日这些高科技将让它的“首拍”超精超稳 来源:
-
6
Rancher(K3S)证书过期解决方法 精选 原创 wx5b9c94b17c62a 2022-12-02 10:40:22...
-
4
GitHub 轮换密钥,以减轻 CVE-2024-0200 漏洞带来的影响 作者:小王斯基 2024-01-18 09:50:51 安全 近期,GitHub Enterprise Server...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK