写点什么

手动轮换 Rancher Kubernetes 集群的证书

  • 2020-05-16
  • 本文字数:2882 字

    阅读完需:约 9 分钟

手动轮换Rancher Kubernetes集群的证书

Kubernetes 集群通常使用 ssl 证书来加密通信,Rancher 会自动为集群生成证书。在 Rancher v2.0.14、v2.1.9 之前的版本,Rancher 配置集群的自动生成证书的有效期为 1 年,这意味着如果您在大约 1 年前使用这些版本创建了 Rancher 配置集群,那么您需要尽快开始轮换证书,否则证书过期后集群将进入错误状态。轮换证书是一次性操作,新生成的证书有效期为 10 年。


本文将为您详细介绍如何进行轮换证书的操作。即使您的证书现在已经过期,您也可以依照以下步骤进行证书的轮换。但请注意先不要升级 rancher server,根据本文最后一节【证书已过期导致无法连接 k8s】进行处理。


注意

在重新启动组件时,轮换 Kubernetes 证书可能会导致您的群集暂时不可用。此外,对于生产环境,建议在维护窗口期间执行此操作。

通过 UI 轮换证书(业务集群)

注:可用版本 Rancher v2.2.0 +


在 Rancher v2.2.0 以及更高版本,可通过 UI 的证书轮换功能对集群证书进行更新,此功能适用于【自定义安装的集群】。


证书轮换之后,Kubernetes 组件将自动重新启动,重启不影响应用 Pod,重启时间需要 3 到 5 分钟。


证书轮换可用于下列服务:


  • etcd

  • kubelet

  • kube-apiserver

  • kube-proxy

  • kube-scheduler

  • kube-controller-manager


通过 UI 轮换证书,目前支持:


  • 批量更新所有服务证书(CA 证书不变)

  • 更新某个指定服务(CA 证书不变)

(重要)集群更新

如果 Rancher 版本是从 v2.x.x 升级到 2.2.x,则需要先做一次 集群更新 操作。


1、进入【全局\集群视图】;


2、选择【目标集群】右侧的【省略号菜单】,选择升级;



3、点击右侧【显示高级选项】,检查【Etcd 快照轮换】功能是否开启,建议开启此功能;



4、在【授权集群访问地址】中,检查功能是否已开启,建议开始此功能,下边的域名可以不用填写;



5、最后点击【保存】,集群将自动进行更新


轮换证书

1、进入【全局\集群视图】;


2、选择对应集群右侧的【省略号菜单】,选择更新证书有效期;



3、选择更新所有服务证书,并点击保存



4、集群将自动更新证书



5、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 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

通过 UI API 轮换证书(业务集群)

注:可用版本 Rancher v2.0.14+ v2.1.9+


对于 Rancher v2.0.14、v2.1.9 以及更高版本,可通过 API 对集群证书进行更新。API 证书轮换将会同时对所有组件证书进行更新,不支持指定组件更新证书。


1、在【全局】视图中,定位到需要更新证书的集群,然后点击右侧省略号菜单,然后点击【API 查看】。



2、点击右上方的 RotateCertificates



3、点击 Show Request


4、点击 Send Request



5、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 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

RKE 证书轮换(local 集群和业务集群通用)

注:可用版本 rke v0.2.0+

如果以前是通过 rke v0.2.0 之前的版本创建的 Kubernetes 集群,在轮换证书前先执行 rke up 操作,请参考:

https://www.cnrancher.com/docs/rke/latest/cn/cert-mgmt/


通过 RKE 轮换证书,目前支持:


  • 批量更新所有服务证书(CA 证书不变)

  • 更新某个指定服务(CA 证书不变)

  • 轮换 CA 和所有服务证书


1、批量更新所有服务证书(CA 证书不变)



2、更新指定服务(CA 证书不变)



3、轮换 CA 和所有服务证书


rke cert rotate --rotate-ca
INFO[0000] Initiating Kubernetes clusterINFO[0000] Rotating Kubernetes cluster certificatesINFO[0000] [certificates] Generating CA kubernetes certificatesINFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificatesINFO[0000] [certificates] Generating Kubernetes API server certificatesINFO[0000] [certificates] Generating Kube Controller certificatesINFO[0000] [certificates] Generating Kube Scheduler certificatesINFO[0000] [certificates] Generating Kube Proxy certificatesINFO[0000] [certificates] Generating Node certificateINFO[0001] [certificates] Generating admin certificates and kubeconfigINFO[0001] [certificates] Generating Kubernetes API server proxy client certificatesINFO[0001] [certificates] Generating etcd-xxxxx certificate and keyINFO[0001] [certificates] Generating etcd-yyyyy certificate and keyINFO[0001] [certificates] Generating etcd-zzzzz certificate and keyINFO[0001] Successfully Deployed state file at [./cluster.rkestate]INFO[0001] Rebuilding Kubernetes cluster with rotated certificates
复制代码


4、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 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 server 证书更新

Rancher v2.0.14+ 、v2.1.9+、v2.2.0+会自动检查证书有效期,如果发现证书过期,将会自动生成新的证书。所以独立容器运行的 Rancher server 只需把 rancher 版本升级到支持的版本,无需做其他操作。

故障处理

提示 CA 证书为空

如果执行更新证书后出现如下错误提示,因为没有执行集群更新操作。



解决方法


1、选择对应问题集群,然后查看浏览器的集群 ID,如下图:



2、执行命令 kubectl edit clusters <clusters_ID>


  • 如果 Rancher 是 HA 安装,直接在 local 集群中,通过 rke 生成的 kube 配置文件执行以上命令;

  • 如果 Rancher 是单容器运行,通过 docker exec -ti <容器 ID> bash 进入容器中,然后执行 apt install vim -y 安装 vim 工具,然后再执行以上命令;


3、删除 spec.rancherKubernetesEngineConfig.rotateCertificates 层级下的配置参数:



修改为



输入:wq 保存 yaml 文件后集群将自动更新,更新完成后再进行证书更新。

证书已过期导致无法连接 K8S

如果集群证书已经过期,那么即使升级到 Rancher v2.0.14、v2.1.9 以及更高版本也无法轮换证书。rancher 是通过 Agent 去更新证书,如果证书过期将无法与 Agent 连接。


解决方法


可以手动设置节点的时间,把时间往后调整一些。因为 Agent 只与 K8S master 和 Rancher server 通信,如果 rancher server 证书未过期,那就只需调整 K8S master 节点时间。


调整命令:



然后再对 rancher server 进行升级,接着按照证书轮换步骤进行证书轮换,等到证书轮换完成后再把时间同步回来。



检查证书有效期



2020-05-16 17:152080

评论

发布
暂无评论
发现更多内容

YashanDB|使用 Kettle 同步 PostgreSQL 数据时报错:pg_hba.conf 无法识别连接?

数据库砖家

数据库

YashanDB 知识库|MySQL 的 GROUP BY 语句迁移到崖山时报错?原来是这个规范不同!

数据库砖家

数据库

YashanDB 知识库|MySQL 迁移后 CHAR 字段多出空格?问题可能出在这里

数据库砖家

数据库

DApp开发:开启去中心化应用新时代

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

YashanDB|崖山共享集群(YAC):从怀疑到认可,技术细节决定产品成色

数据库砖家

数据库

Arthas jad(字节码文件反编译成源代码 )

刘大猫

监控 Arthas 监控工具 jad 字节码文件

YashanDB|Kettle 同步大表报错 “无法创建 Java 虚拟机”?别忘了调整内存

数据库砖家

数据库

AI 大赛丨总奖池 50 万元!「1000 AIdea 应用计划」等你来战!

RTE开发者社区

最新版LangChain4j发布!终于修复了这个恶心的问题

王磊

YashanDB|UNDO 表空间持续增长怎么处理?一文教你排查+优化

数据库砖家

数据库

公链钱包开发:技术逻辑与产品设计实践

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

YashanDB|select 0.00 的返回类型居然变了?警惕 JDBC 下的类型映射差异!

数据库砖家

数据库

《算法导论(第4版)》阅读笔记:p11-p13

codists

算法

HTTP接口数据也能定时同步入湖?用DolphinScheduler×SeaTunnel快速搞定!

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度

区块链内容创作全攻略:海报、白皮书与视频的视觉化革命

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展

非晓为骁

chrome AI DeepWiki Extension

LED虚拟生产:革新影视制作的新技术

Dylan

虚拟 LED LED display LED显示屏 LED屏幕

DeFi开发系统软件开发:技术架构与生态重构

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

智源研究院发布开源中文互联网语料库CCI 4.0 新增高质量英文数据与合成数据

智源研究院

黑龙江密码测评你需要知道的基本知识

黑龙江陆陆信息测评部

Java 字符串拼接性能实测:基于 JMH 的微基准测试

歆晨技术笔记

提升研发运维效能:Pacvue 泊客电商的 GenAI 技术实践

亚马逊云科技 (Amazon Web Services)

jd 商品评论Api接口 全解析指南

代码忍者

个人评论 JD

Mint Blockchain 与 Chainlink 达成战略合作:赋能跨链创新

NFT Research

blockchain web3

YashanDB 知识库|如何判断表空间是否启用了加密?

数据库砖家

数据库

探索如何提升自动化测试的效率--代码评审和脚本生成

夏兮。

AI 自动化测试 端到端测试新范式

自研时序大模型讲解(4月29日)直播回顾

Apache IoTDB

当AI智能体通过稳定币自主交易和结算,如何利好DeCloud?

PowerVerse

AI 加密 去中心化 稳定币 DeCloud

英特尔以系统级代工模式促进生态协同,助力客户创新

E科讯

英特尔持续推进核心制程和先进封装技术创新,分享最新进展

E科讯

智源研究院发布开源中文互联网语料库CCI 4.0 新增高质量英文数据与合成数据

智源研究院

手动轮换Rancher Kubernetes集群的证书_文化 & 方法_Rancher_InfoQ精选文章