跳到主要内容
版本:v3&v6

K3S更新SSL证书

0. 背景

默认情况下,K3S(轻量级的Kubernetes发行版)证书的有效期设置如下:

(1)CA证书(Certificate Authority Certificate):默认有效期为10年。

(2)普通证书(如服务器和客户端证书):默认有效期为1年。

如果这些证书过期,将会对K3S集群的正常运行产生显著影响,具体如下:

(1)API Server访问问题:证书过期后,客户端(如kubectl命令行工具)将无法通过HTTPS安全地连接到Kubernetes API Server。这会导致诸如kubectl get pods这样的命令失败,并返回类似“x509: certificate has expired or is not yet valid”的错误信息。

(2)节点间通信中断:K3S使用TLS加密来保护控制平面与工作节点之间的通信。一旦证书失效,节点间的通信可能会受到影响,导致服务部署、更新等操作无法正常进行。

(3)服务不可用:由于上述两点的原因,依赖于Kubernetes API的服务(例如监控、日志收集、自动扩展等)也会变得不可用或者不稳定。

(4)潜在的安全风险:虽然证书过期主要影响的是功能性和可用性,但长期未解决的证书问题也可能带来一定的安全隐患,因为此时可能有人利用这个机会尝试中间人攻击。

1. 有效期判断

确认K3S证书有效期,执行如下命令查看是否过期或少于90天

find /var/lib/rancher/k3s/server/tls/  -maxdepth 1 -name "*.crt" -exec openssl x509 -enddate -noout -in {} \;

2.重启更新

(1)如果证书到期时间少于90天,重启K3S会触发自动更新

systemctl restart k3s

(2)如果证书已经到期、但是CA证书(*ca.crt)未到期,则需要强制轮转更新

k3s certificate rotate
systemctl restart k3s

注意: 理论上该操作不影响业务、操作时间1分钟, 建议非高峰期执行。

3.核对更新

确认K3S证书有效期,执行如下命令查看是否已更新

find /var/lib/rancher/k3s/server/tls/  -maxdepth 1 -name "*.crt" -exec openssl x509 -enddate -noout -in {} \;

4.异常处理

如果重启命令发生异常、或者重启后证书没有刷新,请考虑备份后、重装K3S版本