Rancher证书轮换
Rancher证书轮换证书轮换1 证书过期无法访问Rancher UI2 证书轮换2.1 Rancher v2.2.x 中的证书轮换2.2 更新Rancher Server 证书如何通过Rancher搭建K8s集群请参考通过Rancher搭建k8s集群,这里继续介绍Rancher如何轮换证书证书轮换参考Rancher官网:https://docs.rancher.cn/docs/rancher2/
如何通过Rancher搭建K8s集群请参考通过Rancher搭建k8s集群,这里继续介绍Rancher如何轮换证书
证书轮换
参考Rancher官网:https://docs.rancher.cn/docs/rke/cert-mgmt/_index/
默认情况下,Kubernetes 集群所需要的证书由 Rancher 生成,默认有效期1年,如果出现证书过期,或证书泄露等情况,则需要使用新的证书轮换掉有问题的证书。轮换证书后,Kubernetes 组件将自动重新启动。
1 证书过期无法访问Rancher UI
由于刚安装的k8s集群有效期为1年,不变模拟证书过期场景,这里找了一个本地环境之前安装的k8s集群(Rancher v2.2.4)且已经过期了。
如果集群证书已经过期,那么即使升级到Rancher v2.0.14、v2.1.9以及更高版本也无法轮换证书。rancher 是通过Agent去更新证书,如果证书过期将无法与Agent连接。
这种情况可以手动进行时钟回拨,因为Agent只与K8S master和Rancher Server通信
如果 Rancher Server 证书未过期,那就只需调整K8S master节点时间
# 关闭时钟同步,否则时间会自动更新
[root@master kubernetes]# timedatectl set-ntp false
[root@master kubernetes]# timedatectl set-time "2020-06-18 11:26:44"
[root@master kubernetes]#
可以正常访问了
2 证书轮换
轮换 Kubernetes 证书可能会导致集群在重新启动组件时暂时不可用。对于生产环境,建议在维护时段内执行此操作。
2.1 Rancher v2.2.x 中的证书轮换
Rancher 启动的 Kubernetes 集群(RKE 集群)能够通过 UI 轮换自动生成的证书
可以选择更新单个服务或者更新所有服务(CA证书不变),这里选择更新所有服务。相关服务将重新启动以开始使用新证书。
查看证书有效期(已经到2030年了)
[root@master ~]# openssl x509 -in /etc/kubernetes/ssl/kube-apiserver.pem -noout -dates
notBefore=Jul 11 07:53:35 2019 GMT
notAfter=Dec 9 06:42:50 2030 GMT
[root@master ~]#
重新进行时钟同步
[root@master ~]# timedatectl set-ntp yes
[root@master ~]# timedatectl
Local time: 三 2020-12-23 12:04:53 CST
Universal time: 三 2020-12-23 04:04:53 UTC
RTC time: 三 2020-12-23 04:04:53
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@master ~]#
2.2 更新Rancher Server 证书
貌似更新成功,可以正常访问了,但是过一会儿又会出现无法访问Rancher UI,查看rancher容器日志,还会发现如下error
[root@master ~]# docker ps |grep rancher/rancher:v2.2.4
a50f79e670c4 rancher/rancher:v2.2.4 "entrypoint.sh" 17 months ago Up 6 months 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp sleepy_newton
[root@master ~]# docker logs a50f79e670c4
······
[ERROR] ClusterController c-x4x9w [user-controllers-controller] failed with : failed to start user controllers for cluster c-x4x9w: failed to contact server: Get https://192.168.x.X:6443/version?timeout=30s: waiting for cluster agent to connect
······
这里还需要更新Rancher Server 证书
- 证书未过期
证书未过期时,rancher server 可以正常运行。升级到 Rancher v2.0.14+ 、v2.1.9+、v2.2.2+ 后会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书。所以独立容器运行的 Rancher Server,只需在证书过期前把 rancher 版本升级到支持自动更新 ssl 证书的版本即可,无需做其他操作。
- 证书已过期
如果证书已过期,那么 rancher server 无法正常运行。即使升级到 Rancher v2.0.14+ 、v2.1.9+、v2.2.2+ 也可能会提示证书错误。如果出现这种情况,可通过以下操作进行处理:
1、如果是低版本,先正常升级 rancher 版本到 v2.0.14+ 、v2.1.9+、v2.2.2+;
2、执行以下命令:
- 2.0 或 2.1 版本
docker exec -ti <rancher_server_容器ID> mv /var/lib/rancher/management-state/certs/bundle.json /var/lib/rancher/management-state/certs/bundle.json-bak
- 2.2 +
docker exec -ti <rancher_server_容器id> mv /var/lib/rancher/management-state/tls/localhost.crt /var/lib/rancher/management-state/tls/localhost.crt-bak
- 2.3 +
docker exec -ti <rancher_server_id> mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tlsbak
# 执行两次,第一次用于申请证书,第二次用于加载证书并启动
docker restart <rancher_server_容器id>
3、重启 Rancher Server 容器
docker restart <rancher_server_容器id>
以2.2.4版本为例
[root@master ~]# docker exec -ti a50f79e670c4 mv /var/lib/rancher/management-state/tls/localhost.crt /var/lib/rancher/management-state/tls/localhost.crt-bak
[root@master ~]# docker restart a50f79e670c4
a50f79e670c4
[root@master ~]#
这下终于可以正常访问Rancher UI了
更多推荐
所有评论(0)