您好,k3s service地址的证书是否需要更新,如何更新

您好,我们是先创建的k3s集群(1个master 2个worker),然后通过rancher导入的集群。
k3s版本v1.21.3+k3s1
rancher版本v2.5.9

现在rancher证书快过期了,我通过下列方式更新了rancher证书

exec 进入到 rancher 服务内部

kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving
kubectl --insecure-skip-tls-verify delete secret serving-cert -n cattle-system
rm -f /var/lib/rancher/k3s/server/tls/dynamic-cert.json

重启 rancher-server

docker restart rancher_id

执行以下命令刷新参数

curl --insecure -sfL https://server-url/v3
现在的问题是K3S_URL的证书是否需要更新,应该如何更新?谢谢
6443端口的地址K3S_URL=https://192.168.2.100:6443

从你的描述来看,你更新的是rancher 的证书,而你问的是更新下游集群的 K3s 证书……

如果你想更新单节点 Rancher server 证书,就按照你的方式更新即可。

如果你想更新 K3s 的证书,可以参考:高级选项和配置 | Rancher文档

感谢回复,请问参考文档提到的“如果证书已经过期或剩余的时间不足 90 天,则在 K3s 重启时轮换证书。”是只需要重启k3s master服务还是master和worker服务都需要重启?

你可以找个测试集群,修改系统时间去测试下

修改系统时间为证书不足90天,比如2023-06-27,证书过期时间为2023-07-27,然后重启systemctl restart k3s,查看到k3s master的证书的确更新了,查看命令for i in ls /var/lib/rancher/k3s/server/tls/*.crt; do echo $i; openssl x509 -enddate -noout -in $i; done然后再次修改系统时间为2023-07-30(也就是超过证书的过期时间),通过kubectl get nodes命令查看报错Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2024-09-10T00:00:18+08:00 is after 2023-07-27T02:17:55Z

请问,虽然证书过期时间更新了,但是为什么设置系统时间超过第一次证书的过期时间,仍然会提示证书过期呢?

这是一个 bug 引起的,x509: certificate has expired or is not yet valid · Issue #5163 · k3s-io/k3s · GitHub

你可以手动执行以下文件完成轮换:

kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving
rm -rf /var/lib/rancher/k3s/server/tls/dynamic-cert.json

然后重启 K3s 服务,触发重新生成 K3s-serving 证书

根据这样操作是可以了,感谢。

如果把系统时间改成10年之后,生成新的证书之后再把系统时间同步为正常时间,是不是这10年都不用考虑证书过期的事情了?

之前我也有过这种想法,但我没试过,:smile:

:grinning:好的

根据测试的情况,k3s证书更新时,k3s master服务和worker服务都需要重启。

1 个赞