写点什么

手动轮换 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:151306

评论

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

开源项目中的设计模式(一) - Alibaba Sentinel与责任链模式

骑牛上青山

Java 设计模式

有奖调查 | @所有人,MO有一份问卷邀您填写~

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

如何定义“易用”?无代码/低代码开发平台能力探讨

NocoBase

开源 软件开发 低代码 低代码开发平台 无代码

过年前 再带大家卷一波Go高质量知识点

王中阳Go

Go golang go面试题 后端面试题

深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

申公豹

存内计算

「AI Party」喊你来!百度Create大会4月16-17日在深圳举办

飞桨PaddlePaddle

百度 AI 开发者大会

部署篇 | MatrixOne与MySQL全面对比

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

亿级流量高并发春晚互动前端技术揭秘

京东科技开发者

科蓝软件启动鲲鹏原生应用开发合作

彭飞

一文详解静态图和动态图中的自动求导机制

百度Geek说

Python 深度学习 自动求导 autodiff

甲辰龙年,中国科技十大趋势

脑极体

科技趋势

「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」

阿里巴巴云原生

阿里云 云原生

流批一体化数据加工处理之记录过滤

大河

2023年12月文章一览

codists

codists

代码手术刀-自定义你的代码重构工具

京东科技开发者

基于 SRAM 的存内计算助力实现节能 AI

申公豹

存内计算

快速熟悉 MatrixOne 内核前端

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

云原生安全DevSecOps思考

薛猫

云原生 k8s 安全 DevSecOps

一行命令找出 Linux 中所有真实用户

互联网工科生

Linux

零基础入门Vue之影分身之术——列表渲染&渲染原理浅析

不在线第一只蜗牛

Java Vue 前端 前端开发

低代码,流行的软件开发方式

互联网工科生

软件开发 低代码 JNPF

2024年1月文章一览

codists

华为云软件开发生产线CodeArts开发者实践8件套——开发者的进阶宝典!

华为云PaaS服务小智

软件开发 华为云

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