Rancher2.3 证书过期问题处理

Posted ZhuOne

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rancher2.3 证书过期问题处理相关的知识,希望对你有一定的参考价值。

rancher单机部署,版本 v2.3.5 出现无法访问且无法重启问题,查看日志报错以下内容:
time="2021-03-29T00:28:18.603256144Z" level=fatal msg="starting tls server: Get https://localhost:6444/apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions: x509: certificate has expired or is not yet valid"

证书过期问题导致

两种处理方案:
第一种:
1、先禁用 ntp 时钟同步:timedatectl set-ntp false
2、调整时间到证书过期前:date -s "xxxxx"
3、进入rancher容器,手动删除证书:docker exec -it ${rancher_server_id} bash
mv /var/lib/rancher/k3s/server/tls/*.crt /opt/.
4、重启rancher容器
docker restart ${rancher_server_id}
5、如果rancher启动后报错:certificate signed by unknown authority,需要再重启一次rancher
docker restart ${rancher_server_id}
6、浏览器地址栏查看证书时间已调整后,启动 ntp 服务,timedatectl set-ntp true,,,,ntpdate ntp.xxxx.com

第二种:
1、此问题为rancher 2.3 版本及之前存在,v2.4 后已修复,对 rancher server 进行版本升级即可解决。

参考文档:
https://mp.weixin.qq.com/s/BFRmMVU4sUo3e-wnKHSP_A

Rancher 轮换证书 和 Rancher 自身证书过期处理

概述

本文所述 “证书” 分为 “Rancher 自身证书” 和 “Rancher 启动的 Kubernetes 的证书” 两种。

默认情况下,Kubernetes 集群所需要的证书由 Rancher 生成,如果出现证书过期,或证书泄露等情况,则需要使用新的证书轮换掉有问题的证书。轮换证书后,Kubernetes 组件将自动重新启动。

以下服务支持证书轮换:

  • etcd
  • kubelet
  • kube-apiserver
  • kube-proxy
  • kube-scheduler
  • kube-controller-manager

警告:轮换 Kubernetes 证书可能会导致集群在重新启动组件时暂时不可用。对于生产环境,建议在维护时段内执行此操作。

为 K8s 轮换证书

通过 Rancher 启动的 Kubernetes 集群(RKE 集群)能够通过 UI 轮换自动生成的证书。

在全局视图中,导航到要轮换证书的集群》选择省略号(…)》 轮换证书》选择要轮换的证书。

  • 轮换所有服务证书(保持相同的 CA)
  • 轮换单个服务,然后从下拉菜单中选择一项服务

最后单击保存。

结果:所选证书将被轮换,相关服务将重新启动以开始使用新证书。

注意: 尽管 RKE CLI 可以为 Kubernetes 集群组件使用自定义证书,但目前 Rancher 不支持在 Rancher UI 中创建 RKE 集群时上传这些证书。

因为证书改变,相应的token也会变化,所以在完成集群证书更新后,需要对连接API SERVER的 Pod 进行重建,以获取新的token,否则会出现服务启动失败的情况(日志会显示 token 错误等类似信息,有的服务可能不会显示,请跟进实际情况处理)。

  • cattle-system/cattle-cluster-agent
  • cattle-system/cattle-node-agent
  • cattle-system/kube-api-auth ingress-nginx/nginx-ingress-controller
  • kube-system/canal kube-system/kube-dns
  • kube-system/kube-dns-autoscaler
  • 其他应用 Pod

独立容器 Rancher 证书过期

正常情况下,Rancher 需要和 K8s 集群交互,K8s 集群中有 agent 需要和 Rancher 通讯,如果 Rancher 自身的证书已经过期,则会出现无法通讯的情况,在 UI 上体现的症状就是 k8s 集群出现错误提示无法被管理。

官方文档说:对于 v2.2.2+ 以后的 Rancher 它会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书。

不巧的是我独立容器运行的 Rancher 并没有自动为我更新证书,所以出现了错误,这里特别说一下证书已经过期后的处理方法。

1、将服务器的时间往后调,调到证书有效期之内。
2、docker 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

3、退出 docker 容器命令行,重启 rancher 容器 docker restart <rancher_server_id>
4、执行命令刷新参数 curl --insecure -sfL https://server-url/v3
5、再重启 rancher 容器 docker restart <rancher_server_id>
6、恢复并校准服务器时间。

官方文档: https://docs.rancher.cn/docs/rancher2/trending-topics/certificate-rotation/_index/


(END)

以上是关于Rancher2.3 证书过期问题处理的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发证书过期问题处理

2018-02-08 HTTPS证书问题、PKIX或者证书过期问题解决方案

Rancher 轮换证书 和 Rancher 自身证书过期处理

Kubeadm集群证书过期后的处理

苹果证书过期

Kubeadm集群证书过期后的处理