单节点Rancher 2.5.1 证书过期报错 x509: certificate has expired or is not yet valid 解决方案
前言
双十一刚过早上到公司去查看一下集群的负载情况,打开网址后直接访问被拒绝,吓坏我了以为整个集群崩了(集群跑了很多job),赶快登录阿里云控制台以及各个K8S 集群Master
服务器输入命令kubectl get nodes
查看情况,发现master节点和 worker节点都正常运行,于是查看rancher-server 容器的日志发现报错x509: certificate has expired or is not yet valid
,原来是证书过期了,接下来开始操作。
Rancher 的证书过期会出现什么状况?
不可以继续通过
Rancher UI
访问你的集群查看Rancher Server日志报错:
x509: certificate has expired or is not yet valid
大致Google了一下 发现这个bug从去年(2020 年)就已经有人采坑了,此时,你无法继续再通过 Rancher UI 去操作集群,但是还好集群是正常的,依然可以继续通过
kubectl
操作你的集群 。Rancher 的设计是分离式的,也就是说 Rancher Server 挂掉,根本不会影响你创建的业务集群,你可以继续通过kubectl
操作你的业务集群,而且你的 pod 、job等业务不会有任何变动。
证书轮转逻辑
Rancher 官网明确指出
Rancher v2.3
以上的版本 会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书,那为什么会出现上述的情况呢,其实这是K3s
的一个 bug 引起的。Rancher Server 内置了一个
K3s
集群作为 local 集群,也就是说通过docker run ... rancher/rancher:v2.5.1
启动的 Rancher,在容器里其实已经内置了一个K3s
用来支撑 Rancher 的运行。K3s
的证书轮转逻辑:K3s
证书有效期默认一年,如果证书已经过期或剩余的时间不足 90 天,则在K3s
重启时轮换证书。但在K3s v1.19.1
之前的版本中,有BUG(https://github.com/k3s-io/k3s/issues/1621)导致K3s
无法自动轮转证书。Rancher v2.3+ 和 v2.4+
内置的K3s
版本分别是1.17.x
和1.18.x
,由于内置的k3s
影响到了 Rancher Server 的证书轮转,所以当 Rancher 证书过期后,会自动重启 Rancher Server ,然后触发内置K3s
的更新,此时K3s
证书更新失败,所以,Rancher Server 就无法启动报错。
解决bug过程
1. rancher-server 2.3.x
- 备份原来的
tls
目录:docker exec -ti <rancher-server-id> mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tls_bak
- 执行两次重启,第一次用于申请证书,第二次用于加载证书并启动:
docker restart <rancher_server_id>
2. rancher-server2.4.x
、 rancher-server2.5.x
- 进入rancher-server容器内
docker exec -it rancher-server-id bash
- 删除
k3s
相关证书配置
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 ip
重新注入到新证书中,否则K8S集群agent
无法正常连接Rancher Server
curl --insecure -sfL https://ip:port/v3
总结
Rancher v2.5.8
通过把内置的K3s 集群
更新到v1.20
解决了这个问题。无论是新安装的,还是从老版本升级到v2.5.8
的单节点 Rancher,都不会再被证书过期的问题所困扰。- 如操作有问题欢迎去我的博客(www.loganjin.cn)留言或者微信公众号(Python技术交流圈)留言交流哦。
单节点Rancher 2.5.1 证书过期报错 x509: certificate has expired or is not yet valid 解决方案相关推荐
- 单节点Rancher离线安装的关键一步
作者简介 王海龙,SUSE/Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有7年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作 ...
- 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)
前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...
- php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决
PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...
- 证书颁发者证书过期 curl#60 The certificate issuer‘s certificate has expired
原因 国外论坛说了原因大致是:Let's Encrypt 's - 一个免费.自动化和开放的证书颁发机构,根证书"DST Root CA X3"已于2021 年 9 月 30 日到 ...
- [Unity][FlowCanvas] 被重复执行的节点,只要其中一次执行出现报错,该报错就会在脚本中一直显示
我做了一个取 list 的 item 的事件,我看到这个 get item 有报错,但是它还是能传出正确的值,就蒙了 实际上是这个节点重复执行了,第一次出错了,第二次没出错,取到了值 我以为我自己是只 ...
- 使用百度云服务器申请ssl证书配置报错问题
2022年08月11日,从百度云服务器上申请ssl证书成功, 申请成功之后把证书扔到服务器上,在nginx中配置证书路径,启动的时候报错,错误信息如下: [root@lsnGKGRoEm cert]# ...
- https证书缺失报错:PKIX path building failed 问题解决
背景: 当使用java来进行爬虫操作的时候,会遇到处理https站点时报错:PKIX path building failed: sun.security.provider.certpath.SunC ...
- fico RMA部署规则时,jdk过期报错
问题:RMA上部署规则经常出现java版本过期等问题 解决该问题分为两步: 1.将本机中的JDK卸载,安装32位的7_80版本的JDK,并配置环境变量(自行查找系统环境配置) 2.IE10,将版本切换 ...
- Vue 部署单页应用,刷新页面 404/502 报错
在 Vue 项目中,可以选择 hash或者 history.pushState() 实现路由跳转.如果在路由中使用history模式: export default new Router({mode: ...
最新文章
- 巴塞罗那自治大学3D视觉课件(免费获取)
- Visual Assist X插件
- 写给新手的WebAPI实践
- [国家集训队] tree Ⅱ
- commons-pool
- 泛型类的定义与实例化 c#
- php 返回json对象
- python线程监控_一日一技:Python多线程的事件监控
- bat打包成exe_拜托!看完这篇文章别再问我怎么Python打包成exe了!
- 手机游戏制作(开发流程)
- 服务器如何 建立远程连接?
- Windows搭建nexus3.xx
- 渗透测试工具-瑞士军刀NC
- tailWindCSS
- 2022.8.22-8.28 AI行业周刊(第112期):个人定位发展
- python空间分析库_空间分析:5-1.空间分析库PySAL的使用
- 表格中编辑后进行数据比较的方法介绍-比较两套数据
- 神州数码DCN交换机 DHCP相关功能配置
- 趣图:不得了,日本出版社是这样吸引死宅们学编程的
- 纵横网络靶场社区-Modbus协议
热门文章
- SQL Server 关联
- C/C++——各种类型int、long、double、char表示范围(最大最小值)
- 【AI视野·今日CV 计算机视觉论文速览 第187期 part2】Fri, 18 Dec 2020
- Nginx学习之十-超时管理(定时器事件)
- 泛型类 0104 c#
- 数据结构与算法-时间复杂度的级别-时间复杂度的算法
- Springboot 整合 Dubbo/ZooKeeper你不知道的那点事,大神必修课
- Python: 装饰器的小例子
- 用MySQL Workbench工具分析OSSIM数据库
- jQuery 图片裁剪插件 Jcrop