前言

双十一刚过早上到公司去查看一下集群的负载情况,打开网址后直接访问被拒绝,吓坏我了以为整个集群崩了(集群跑了很多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.x1.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.xrancher-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 解决方案相关推荐

  1. 单节点Rancher离线安装的关键一步

    作者简介 王海龙,SUSE/Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有7年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作 ...

  2. 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)

    前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...

  3. php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决

    PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...

  4. 证书颁发者证书过期 curl#60 The certificate issuer‘s certificate has expired

    原因 国外论坛说了原因大致是:Let's Encrypt 's - 一个免费.自动化和开放的证书颁发机构,根证书"DST Root CA X3"已于2021 年 9 月 30 日到 ...

  5. [Unity][FlowCanvas] 被重复执行的节点,只要其中一次执行出现报错,该报错就会在脚本中一直显示

    我做了一个取 list 的 item 的事件,我看到这个 get item 有报错,但是它还是能传出正确的值,就蒙了 实际上是这个节点重复执行了,第一次出错了,第二次没出错,取到了值 我以为我自己是只 ...

  6. 使用百度云服务器申请ssl证书配置报错问题

    2022年08月11日,从百度云服务器上申请ssl证书成功, 申请成功之后把证书扔到服务器上,在nginx中配置证书路径,启动的时候报错,错误信息如下: [root@lsnGKGRoEm cert]# ...

  7. https证书缺失报错:PKIX path building failed 问题解决

    背景: 当使用java来进行爬虫操作的时候,会遇到处理https站点时报错:PKIX path building failed: sun.security.provider.certpath.SunC ...

  8. fico RMA部署规则时,jdk过期报错

    问题:RMA上部署规则经常出现java版本过期等问题 解决该问题分为两步: 1.将本机中的JDK卸载,安装32位的7_80版本的JDK,并配置环境变量(自行查找系统环境配置) 2.IE10,将版本切换 ...

  9. Vue 部署单页应用,刷新页面 404/502 报错

    在 Vue 项目中,可以选择 hash或者 history.pushState() 实现路由跳转.如果在路由中使用history模式: export default new Router({mode: ...

最新文章

  1. 巴塞罗那自治大学3D视觉课件(免费获取)
  2. Visual Assist X插件
  3. 写给新手的WebAPI实践
  4. [国家集训队] tree Ⅱ
  5. commons-pool
  6. 泛型类的定义与实例化 c#
  7. php 返回json对象
  8. python线程监控_一日一技:Python多线程的事件监控
  9. bat打包成exe_拜托!看完这篇文章别再问我怎么Python打包成exe了!
  10. 手机游戏制作(开发流程)
  11. 服务器如何 建立远程连接?
  12. Windows搭建nexus3.xx
  13. 渗透测试工具-瑞士军刀NC
  14. tailWindCSS
  15. 2022.8.22-8.28 AI行业周刊(第112期):个人定位发展
  16. python空间分析库_空间分析:5-1.空间分析库PySAL的使用
  17. 表格中编辑后进行数据比较的方法介绍-比较两套数据
  18. 神州数码DCN交换机 DHCP相关功能配置
  19. 趣图:不得了,日本出版社是这样吸引死宅们学编程的
  20. 纵横网络靶场社区-Modbus协议

热门文章

  1. SQL Server 关联
  2. C/C++——各种类型int、long、double、char表示范围(最大最小值)
  3. 【AI视野·今日CV 计算机视觉论文速览 第187期 part2】Fri, 18 Dec 2020
  4. Nginx学习之十-超时管理(定时器事件)
  5. 泛型类 0104 c#
  6. 数据结构与算法-时间复杂度的级别-时间复杂度的算法
  7. Springboot 整合 Dubbo/ZooKeeper你不知道的那点事,大神必修课
  8. Python: 装饰器的小例子
  9. 用MySQL Workbench工具分析OSSIM数据库
  10. jQuery 图片裁剪插件 Jcrop