千家信息网

重要提醒 | 手动轮换Rancher Kubernetes集群的证书

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,Kubernetes集群通常使用ssl证书来加密通信,Rancher会自动为集群生成证书。在Rancher v2.0.14、v2.1.9之前的版本,Rancher配置集群的自动生成证书的有效期为1年,
千家信息网最后更新 2024年11月20日重要提醒 | 手动轮换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-caINFO[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

  • 如果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进行升级,接着按照证书轮换步骤进行证书轮换,等到证书轮换完成后再把时间同步回来。

检查证书有效期




证书 集群 更新 版本 服务 功能 升级 选择 有效 时间 有效期 右侧 命令 容器 组件 应用 支持 检查 生成 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 免费云服务器的优缺点 手机如何炒股软件开发 网络安全防诈骗的安全心得 查网络安全整改报告 思迅数据库v9 数据库搭建项目方案 江苏智能软件开发哪家好 异星工厂服务器不一样可以联机吗 河南好的软件开发行业标准 浙江c语言软件开发大概要多少钱 中小学校网络安全宣传周简讯 做bms软件开发 宿城区直销网络技术大概费用 国内网络安全系统 数据库设计免费时间 work软件开发进度管理 软件开发行业新闻收集 论述网络安全的主要表现 天猫购物车买东西显示服务器出错 远程系统控制系统与网络安全 信息网络安全监察好就业前景 对网络安全怎么看 数据库2005导入2012 数据库包含的数据模型包括 文献 数据库 首都网络安全日是第几届 高清版护苗网络安全课 山东设计少儿编程平台软件开发 服务器人数过多还能进吗 华为服务器是由哪些硬件构成的
0