本文转自Rancher Labs

前 言

Rancher 2.3正式发布已经一年,第一批使用Rancher 2.3的用户可能会遇到Rancher Server证书过期,但是没有自动轮换的情况。这会导致Rancher Server无法启动,并且日志出现报错:

请注意:

Rancher Server无法启动不会影响下游集群,下游集群依然可以通过kubeconfig去操作。

请注意:

Rancher Server无法启动不会影响下游集群,下游集群依然可以通过kubeconfig去操作。

以上情况只会在docker run启动或使用小于k3s v1.19用作local集群的Rancher上才会发生。以上情况只会在docker run启动或使用小于k3s v1.19用作local集群的Rancher上才会发生。

重现问题

为了让大家更好的理解这个问题,下面将以手动修改系统时间的形式来重现这个问题。

当前时间:2020年10月30日 星期五 10时37分59秒 CST

1、启动Rancher v2.3.1,并且添加下游集群,操作步骤可以参考官网:

2、启动Rancher 之后,从浏览器上查看到的过期时间:2021年10月30日 星期六 中国标准时间 10:29:35

3、查看Rancher Server容器内的K3s证书过期时间为 Oct 30 02:28:49 2021 GMT

root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Oct 30 02:28:49 2021 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Oct 28 02:28:49 2030 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Oct 30 02:28:49 2021 GMT

4、将服务器时间调整为证书过期后5天的日期,比如:20211105

root@rancher1:~# timedatectl set-ntp no
root@rancher1:~# date -s 20211105
Fri Nov 5 00:00:00 CST 2021
root@rancher1:~# date
Fri Nov 5 00:00:00 CST 2021

此时,Rancher UI 已经无法访问:

并且Rancher 容器由于内置的K3s证书过期而不断重启。

手动轮换证书

以上现象是因为Rancher Server内置的K3s证书过期,导致K3s无法启动,从而导致Rancher Server容器无法启动。

为了可以继续操作Rancher Server容器,需要将系统时间调整到K3s证书过期之前。

root@rancher1:~# date -s 20211025
Mon Oct 25 00:00:00 CST 2021

如果启动Rancher时未加--restart=unless-stopped参数,需要手动启动Rancher Server。

接下来我们就可以进入到容器内手动删除K3s证书,然后重启Rancher,重启成功后将重新生成K3s证书。

root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# rm -rf /var/lib/rancher/k3s/server/tls/*.crt
root@25c228f6a4c8:/var/lib/rancher# exit
exit
root@rancher1:~# docker restart rancher_server_id

Rancher Server如果出现以下日志,那么需要再重启一次Rancher Server:

2021/10/24 16:01:00 [INFO] Waiting for server to become available: Get https://localhost:6443/version?timeout=30s: x509: certificate signed by unknown authority

验 证

1、将服务器时间再次调整为证书过期后5天的日期,比如:20211105

root@rancher1:~# date -s 20211105
Fri Nov 5 00:00:00 CST 2021

证书更新之后,我们需要确认K3s证书是否更新成功,还需要检查下游集群是否会有影响。

2、确认K3s证书已经更新

root@rancher1:~# docker exec -it rancher_server_id bash
root@25c228f6a4c8:/var/lib/rancher# for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Oct 24 16:00:54 2022 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Oct 22 16:00:54 2031 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Oct 24 16:00:54 2022 GMT

K3s证书过期时间已经从Oct 30 02:28:49 2021 GMT更新到了Oct 24 16:00:54 2022 GMT

3、确认浏览器证书已经更新

浏览器上的证书过期已经从2021年10月30日 星期六 中国标准时间 10:29:35更新到了2022年10月25日 星期二 中国标准时间 00:01:34

4、确认下游集群不受影响

  • 集群状态为Active

  • 检查集群 Pod 的运行状况

后 记

从Rancher 2.3开始,Rancher Server容器中内置了K3s作为local集群来支撑Rancher Server运行。

而K3s内部自动签发的证书有效期是1年,正常情况下如果证书已过期或剩余的时间少于90天,则在重新启动K3s时将轮换证书。参考官方文档:

https://docs.rancher.cn/docs/k3s/advanced/_index

实际上由于K3s的bug导致在证书已过期或剩余的时间少于90天时重启Rancher,没有将K3s证书轮换,所以才会出现上述问题。

不过无需担心,在后续的K3s v1.19版本中已经解决了这一问题,请参考:

https://github.com/rancher/k3s/commit/a2471a1f8a2aa26902f8e3b29624dc9c809024d2

超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!的更多相关文章

  1. 来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  2. VSCode插件开发全攻略(一)概览

    文章索引 VSCode插件开发全攻略(一)概览 VSCode插件开发全攻略(二)HelloWord VSCode插件开发全攻略(三)package.json详解 VSCode插件开发全攻略(四)命令. ...

  3. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  4. 从小工到专家 ——读《Java程序员职场全攻略》有感

    从小工到专家 ——读<Java程序员职场全攻略>有感   <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...

  5. 【与软件无关】2013赤峰地区C1科目三考试攻略【绝对原创】

    期待很久的科目三,终于在开考了.传说中的全部电子评判,让习惯给考官送礼的赤峰人民无所是从.据说前几天曾经有一个驾校,考了一整天,八十多个人一个没过的. 我这个攻略是今天通过考试后的一点心得,希望能有用 ...

  6. 经典DOS游戏皇帝攻略(曾经的回忆)

    最完美攻略>>>>> -------------------------------------------------------------------------- ...

  7. AppStore提审攻略

    导语: AppStore后台上传新产品的时候需要填写很多资料,看似很复杂,其实搞清楚之后也比较简单. 下面就给大家介绍一下  iTunes Connect 后台上传新APP时需要提交的资料.不要等待需 ...

  8. 30天,O2O速成攻略【7.19深圳站】

    活动概况 时间:2015年07月19日13:30-16:30 地点:深圳腾讯大厦(南山区科技园科技中一路)2楼多功能厅 主办:APICloud.OneAPM.连接科技 网址:www.apicloud. ...

  9. 从零开始攻略PHP(9)——错误和异常处理

    1.Exception类 这个类是PHP为异常处理提供的内置类.构造函数的两个参数分别是错误消息和错误代码. 除了构造函数之外,该类还提供了如下的内置方法: · getCode() 返回传递给构造函数 ...

随机推荐

  1. Appium+python自动化环境搭建

    一.步骤及环境 环境:Windows 7版本 64位系统(python) 1.jdk安装配置:jdk1.6.0 (64位) 2.android-sdk下载安装:android-sdk_r24.3.4- ...

  2. 一文搞懂后台高性能服务器设计的常见套路, BAT 高频面试系列

    微信搜索「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍 先赞后看,养成习惯~ 前言 金九银十,又是一年校招季. 经历过,才深知不易.最近,和作为校招面试官的同事聊了 ...

  3. ts流中的pcr与pts计算与逆运算

    mpeg2ts文件格式中有pcr和pts的概念,其代码含义如下: PCR(Program Clock Reference)--指示系统时钟本身的瞬时值的时间标签称为节目参考时钟标签(PCR). PTS ...

  4. 【QT】QtConcurrent::run()+QThreadPool实现多线程

    往期链接: <QThread源码浅析> <子类化QThread实现多线程> <子类化QObject+moveToThread实现多线程> <继承QRunnab ...

  5. 23longest-consecutive-sequence

    题目描述 给定一个无序的整数类型数组,求最长的连续元素序列的长度. 例如: 给出的数组为[100, 4, 200, 1, 3, 2], 最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长 ...

  6. python数据分析03Python的数据结构、函数和文件

    我们会从Python最基础的数据结构开始:元组.列表.字典和集合.然后会讨论创建你自己的.可重复使用的Python函数.最后,会学习Python的文件对象,以及如何与本地硬盘交互. 3.1 数据结构和 ...

  7. 0 quickstart

    说明 使用的安装包有: Prism 6.3 Unity 4.0.1 基于Prism框架的应用程序都包含一个主项目和若干功能模块,主项目负责启动时初始化工作,包括依赖注入容器,定义Shell等等.功能模 ...

  8. Fastdfs集群部署以及基本操作

    FastDFS引言 本地存储与分布式文件系统 本地存储的缺点: 是否有备份? 没有 成本角度? 贵 ​ 服务器 :用于计算 ---- cpu/内存 ​ 用于存储 ---- 硬盘大 存储瓶颈? 容量有限 ...

  9. 看看poll 事件掩码 --- review代码时发现掩码不分的错误

    事件 描述 是否可作为输入(events) 是否可作为输出(revents) POLLIN 数据可读(包括普通数据&优先数据) 是 是 POLLOUT 数据可写(普通数据&优先数据) ...

  10. Linux(CentOS6.8)配置ActiveMQ

    1.下载ActiveMQ http://activemq.apache.org/ 注:若是想下载老版本的ActiveMQ可以通过以下链接下载 http://activemq.apache.org/do ...