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

在Rancher 2.0和2.1中,Rancher配置集群的自动生成证书的有效期为1年,本文将为您详细介绍如何轮换证书,即便您的证书已通过期也可从文章中得到具体的操做指南。node


Kubernetes集群一般使用ssl证书来加密通讯,Rancher会自动为集群生成证书。在Rancher v2.0.1四、v2.1.9以前的版本,Rancher配置集群的自动生成证书的有效期为1年,这意味着若是您在大约1年前使用这些版本建立了Rancher配置集群,那么您须要尽快开始轮换证书,不然证书过时后集群将进入错误状态。轮换证书是一次性操做,新生成的证书有效期为10年。nginx

本文将为您详细介绍如何进行轮换证书的操做。即便您的证书如今已通过期,您也能够依照如下步骤进行证书的轮换。但请注意先不要升级rancher server,根据本文最后一节【证书已过时致使没法链接k8s】进行处理。docker

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

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

注:可用版本 Rancher v2.2.0 +浏览器

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

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

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

  • etcd加密

  • kubelet

  • kube-apiserver

  • kube-proxy

  • kube-scheduler

  • kube-controller-manager

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

  • 批量更新全部服务证书(CA证书不变)

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

(重要)集群更新

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

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

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

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

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

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

轮换证书

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

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

三、选择更新全部服务证书,并点击保存

四、集群将自动更新证书

五、由于证书改变,相应的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.1四、v2.1.9以及更高版本,可经过API对集群证书进行更新。API证书轮换将会同时对全部组件证书进行更新,不支持指定组件更新证书。

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

二、点击右上方的RotateCertificates

三、点击 Show Request

四、点击 Send Request

五、由于证书改变,相应的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和全部服务证书

一、批量更新全部服务证书(CA证书不变)

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

三、轮换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

四、由于证书改变,相应的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证书为空

若是执行更新证书后出现以下错误提示,由于没有执行集群更新操做。

解决方法

一、选择对应问题集群,而后查看浏览器的集群ID,以下图:

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

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

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

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

修改成

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

证书已过时致使没法链接K8S

若是集群证书已通过期,那么即便升级到Rancher v2.0.1四、v2.1.9以及更高版本也没法轮换证书。rancher是经过Agent去更新证书,若是证书过时将没法与Agent链接。

解决方法

能够手动设置节点的时间,把时间日后调整一些。由于Agent只与K8S master和Rancher server通讯,若是rancher server证书未过时,那就只需调整K8S master节点时间。

调整命令:

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

检查证书有效期

相关文章
相关标签/搜索