Rancher 2.5.x 证书过期报错 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
查看过期时间
for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
删除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 server 容器
docker restart rancher
总结
Rancher v2.5.8 通过把内置的K3s 集群更新到v1.20解决了这个问题。无论是新安装的,还是从老版本升级到 v2.5.8的单节点 Rancher,都不会再被证书过期的问题所困扰。
Rancher 2.5.x 证书过期报错 x509: certificate has expired or is not yet valid 解决方案的更多相关文章
- docker报错: x509: certificate has expired or is not yet valid
环境:最小化安装centos7 问题:docker 启动没问题,但是查询 镜像时报错 Error response from daemon: Get https://index.docker.io/v ...
- docker 报错:x509: certificate has expired or is not yet valid
环境:centos 7 程序:docker 下载镜像报错: # docker pull centos Pulling repository centos FATA[0004] Get https:// ...
- MySQL忘记密码,或:root密码重置报错:mysqladmin: connect to server at 'localhost' failed的解决方案
MySQL root密码重置报错:mysqladmin: connect to server at 'localhost' failed的解决方案 1 登陆失败,mysqladmin修改密码失败 ...
- 关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument 'column' 的解决方案
关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument ...
- Xcode 证书问题报错锦集
Xcode因为证书问题经常报的那些错 字数495 阅读13559 评论20 喜欢47 去年才开始做 iOS开发的时候,因为证书问题 Xcode 经常报这样或那样的错,经过一年多的实践,现在看见 Xco ...
- Let's encrypt申请泛域名证书以及报错处理
申请泛域名证书的步骤请参考该链接地址: https://www.jianshu.com/p/df6d13187578 报错信息: No matching distribution found for ...
- nginx 使用HTTPS协议-SSL证书模块报错解决-附nginx安装 : [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.c
Linux系统下ngnix使用HTTPS协议启动报错: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modul ...
- Let's Encrypt 证书 wget 报错
最近发现一个奇怪的问题,网站使用 let's encrypt 的免费证书,浏览器访问时正常,但是wget的时候报错.报错信息如下: wget https://www.example.com --202 ...
- Rancher 系列文章-K3s Traefik MiddleWare 报错-Failed to create middleware keys
概述 书接上回:<Rancher 系列文章-K3S 集群升级>, 我们提到:通过一键脚本升级 K3S 集群有报错. 接下来开始进行 Traefik 报错的分析和修复, 问题是: 所有 Tr ...
- git push 报错 "Peer certificate cannot be authenticated with known CA certificates"
使用git push -u origin master 命令向远程仓库提交代码时报错:Peer certificate cannot be authenticated with known CA ce ...
随机推荐
- Hive分区和分桶的区别
1.前言 Hive的分区和分桶都是细化数据管理,加快数据查询和分析,两者有什么区别呢?下面讲解一下分区和分桶的原理. 2.分区 (1)分区原理 Hive的分区表可以有一个或多个分区键,用于确定数据的存 ...
- 回顾复习之背包DP
\(\small{(本文统一将c[i]视作cost,w[i]视作worth,下面的代码用这两个变量表示费用和价值)}\) \(\Large\textbf{1. 01背包}\) \(\large\tex ...
- 从零开始的react入门教程(九),react context上下文详解,可能有点啰嗦,但很想让你懂
壹 ❀ 引 我在从零开始的react入门教程(八),redux起源与基础用法一文中,介绍了redux的前辈Flux,以及redux关于单项数据更新的基本用法.我们在前文提到,相对Flux支持多个sto ...
- JS Leetcode 220. 存在重复元素 III 题解分析,暴力解法与桶排序
壹 ❀ 引 今天的题目来自LeetCode 220. 存在重复元素 III,难度中等,题目描述如下: 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j, ...
- NC50493 石子合并
题目链接 题目 题目描述 将n堆石子绕圆形操场排放,现要将石子有序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆数n及每堆的石子 ...
- 基于zabbix的数据库查询各种监控数据
select FROM_UNIXTIME(clock) as DateTime, value, round(value/1024,2) as Traffic_in from history_uint ...
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭算法(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 【Azure Compute Gallery】使用 Python 代码从 Azure Compute Gallery 复制 Image-Version
问题描述 Azure Compute Gallery 可以帮助围绕 Azure 资源(例如映像和应用程序)生成结构和组织,并且支持全局复制. 如果想通过Python代码实现 Image-Version ...
- 【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
问题描述 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk.在Azure门户中可以通过查看Backup Item查 ...
- Hibernate-Validator扩展之自定义注解
一.Hibernate-Validator介绍 Hibernate-Validator框架提供了一系列的注解去校验字段是否符合预期,如@NotNull注解可以校验字段是否为null,如果为null ...