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

栏目: 编程工具 · 发布时间: 5年前

内容简介:本文将为您详细介绍如何进行轮换证书的操作。即使您的证书现在已经过期,您也可以依照以下步骤进行证书的轮换。但请注意先不要升级通过UI轮换证书(业务集群)
Kubernetes集群通常使用ssl证书来加密通信,Rancher会自动为集群生成证书。在 Rancher v2.0.14、v2.1.9 之前的版本,Rancher配置集群的自动生成证书的有效期为1年,这意味着如果您在大约1年前使用这些版本创建了Rancher配置集群,那么您需要尽快开始轮换证书,否则证书过期后集群将进入错误状态。轮换证书是一次性操作,新生成的证书有效期为10年。

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

注意

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

重要提醒 | 手动轮换Rancher 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、选择【目标集群】右侧的【省略号菜单】,选择升级;

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

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

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

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

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

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

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

轮换证书

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

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

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

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

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

4、集群将自动更新证书

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

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

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

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

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

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

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

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

2、点击右上方的 RotateCertificates

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

3、点击Show Request

4、点击Send Request

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

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

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

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证书不变)

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

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

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

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

rke cert rotate --rotate-ca

INFO[0000] Initiating Kubernetes cluster
INFO[0000] Rotating Kubernetes cluster certificates
INFO[0000] [certificates] Generating CA kubernetes certificates
INFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificates
INFO[0000] [certificates] Generating Kubernetes API server certificates
INFO[0000] [certificates] Generating Kube Controller certificates
INFO[0000] [certificates] Generating Kube Scheduler certificates
INFO[0000] [certificates] Generating Kube Proxy certificates
INFO[0000] [certificates] Generating Node certificate
INFO[0001] [certificates] Generating admin certificates and kubeconfig
INFO[0001] [certificates] Generating Kubernetes API server proxy client certificates
INFO[0001] [certificates] Generating etcd-xxxxx certificate and key
INFO[0001] [certificates] Generating etcd-yyyyy certificate and key
INFO[0001] [certificates] Generating etcd-zzzzz certificate and key
INFO[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 Kubernetes集群的证书

独立容器Rancher server证书更新

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

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

故障处理

提示CA证书为空

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

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

解决方法

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

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

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 层级下的配置参数:

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

修改为

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

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

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

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

解决方法

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

调整命令:

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

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

检查证书有效期

推荐阅读

Kubernetes的身份认证与授权详解

10倍DB交付效率,飞贷金融科技的数据库生产容器化实践

原创干货 | Rancher如何按计算资源调度

About Rancher Labs

Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2018年全球最酷的云基础设施供应商。

目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通、等全球著名企业在内的共25000家企业客户。

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


以上所述就是小编给大家介绍的《重要提醒 | 手动轮换Rancher Kubernetes集群的证书》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码阅读方法与实践

代码阅读方法与实践

斯平内利斯 / 赵学良 / 清华大学出版社 / 2004-03-01 / 45.00元

代码阅读有自身的一套技能,重要的是能够确定什么时候使用哪项技术。本书中,作者使用600多个现实的例子,向读者展示如何区分好的(和坏的)代码,如何阅读,应该注意什么,以及如何使用这些知识改进自己的代码。养成阅读高品质代码的习惯,可以提高编写代码的能力。 阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题......一起来看看 《代码阅读方法与实践》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码