`
wx1569466809
  • 浏览: 72064 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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


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

检查证书有效期

转载于:https://my.oschina.net/u/3330830/blog/3067960

分享到:
评论

相关推荐

    创建生产级别的Kubernetes集群.pptx

    通过在RKE(Rancher Kubernetes Engine)上部署Rancher HA集群,我们可以确保Rancher的服务在节点故障时仍然可用。RKE是一种轻量级的部署工具,允许在各种基础设施上快速搭建Kubernetes集群。按照官方文档...

    rancher-launcher-kvm:一种简单的方法可以在KVMLibvirt上启动并运行Rancher Kubernetes集群

    一种简单的方法可以在KVM / Libvirt上启动和运行Rancher Kubernetes集群 该项目由Praqma.com赞助 该脚本将在使用docker和ssh key准备的KVM中创建机器。 它还将生成一个cluster.yml,RKE可以使用它来置备Kubernetes...

    rancher2.2 shell jenkins k8s 自动化部署

    包含NodePort,HostPort,ClusterIp几种方式自动化部署脚本。

    docker部署rancher证书过期问题解决方案

    在Docker环境中部署Rancher时,可能会遇到Rancher证书过期的问题,这将导致Kubernetes集群内部的通信出现异常。以下是一个详尽的解决方案,涵盖了问题的原因、异常现象以及具体的解决步骤。 **问题原因** Rancher在...

    Rancher搭建redis集群配置

    Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建Rancher搭建redis集群配置Rancher搭建

    Rancher Kubernetes引擎(RKE),一种极其简单,闪电般快速的Kubernetes发行版,完全在容器内运行。-Golang开发

    rke Rancher Kubernetes引擎,一个极其简单,闪电般快速的Kubernetes安装程序,可在任何地方使用。 下载请检查发布页面。 要求请查看Rancher Kubernetes Engine的操作系统要求,Rancher Kubernetes Engine是一种非常...

    rancher2-terraform:Terraform在GCP上部署Rancher 2.0 Kubernetes集群

    rancher2-terraform Terraform在GCP上部署Rancher 2.0 Kubernetes集群用法设定变量Terraform将需要一些变量。 将secure.tf.example复制到secure.tf ,然后填写。 secure.tf在gitignore中。部署项目terraform ...

    Rancher 2.0 架构设计

    Rancher最初是在2015年开始构建Kubernetes支持的,当时最大的挑战是如何安装和配置Kubernetes集群。现有的Kubernetes脚本和工具难以使用且不可靠。Rancher通过一键设置轻松地搭建了Kubernetes集群。不仅于此,...

    Rancher企业级Kubernetes管理平台 v2.7.9.zip

    Rancher是一个强大的开源平台,专门用于管理和部署Kubernetes集群,提供了一站式的Kubernetes操作体验。在v2.7.9版本中,Rancher继续优化了用户体验,增强了安全性,并提供了更多的集群生命周期管理功能。 首先,让...

    Rancher v2.6 Documentation.pdf

    Rancher Server 负责管理 Rancher Agents,Rancher Agents 负责与 Kubernetes 集群通信,Kubernetes 集群负责运行容器。 安装 Rancher Rancher 提供了多种安装方式,包括使用 Docker 安装、使用 Helm Chart 安装、...

    update-rke-cluster:更新使用Rancher构建的Rancher Kubernetes Engine集群

    Rancher Kubernetes Engine(RKE)是Rancher Labs提供的一个轻量级、安全且可移植的Kubernetes部署工具,它使得部署和管理Kubernetes集群变得更加简单。本文将深入探讨如何使用Rancher来更新已有的RKE集群。 首先,...

    rancher2.3.6部署redis集群配置教程.pdf

    标题中的“rancher2.3.6部署redis集群配置教程.pdf”暗示了这份文档是针对特定版本的Rancher软件(版本号...总的来说,这份文档是一个指导用户在Rancher平台上部署Redis集群的重要资源,涵盖从配置到运行的全过程。

    terraform-provider-rke:Terraform provider插件,用于通过RKE部署Kubernetes集群(Rancher Kubernetes引擎)

    Terraform RKE提供程序可以使用轻松部署Kubernetes集群。 网站: : 文件: : 邮件列表: 要求 &gt; = 0.12.x 1.14来构建提供程序插件 17.03.x运行验收测试 安装提供程序 对于terraform 0.13或更高版本的用户,...

    kubernetes介单节点rancher安装部署手册

    Rancher是一个kubernetes-as-a-service解决方案,提供了图形化界面来部署和管理kubernetes集群。下面是使用容器方式快速部署单节点Rancher环境的步骤。 一、准备工作 1. 配置静态IP地址 为了能够上公网,需要配置...

    Rancher企业级Kubernetes管理平台 v2.7.6.zip

    Rancher是一个强大的开源工具,专门用于管理和部署Kubernetes集群,提供了一站式的Kubernetes管理平台。在v2.7.6版本中,Rancher继续优化了用户体验,增强了安全性,并提供了更多的集群生命周期管理功能。 一、...

    基于rancher的多租户平台管理手册.docx

    1. 多租户管理:Rancher可以创建来自Kubernetes托管服务提供商的集群,自动创建节点并安装Kubernetes集群,或者导入任何已经存在的Kubernetes集群。 2. 认证和授权:Rancher通过支持集群的身份验证和基于角色的访问...

    rancher+k8s+etcd集群

    使用RKE构建企业生产Kubernetes集群 内容包含: 1.集群主机准备 2.daocker部署 3.docker compose安装 4.添加rancher用户 5.生成ssh证书用户部署集群 6.rke工具下载 7.初始化rke配置文件 ....

    kubernetes的1.21.9版本相关镜像,包括apiserver、scheduler、proxy等等

    1.21.9版本的kubernetes,直接使用docker load -i kubeImages.tar导入镜像,镜像内容包括包括: k8s.gcr.io/kube-apiserver:v1.21.9 k8s.gcr.io/kube-controller-manager:v1.21.9 k8s.gcr.io/kube-scheduler:v1.21.9...

    Kubernetes高级教程营销培训视频.zip

    网盘文件永久链接 目录: 1k8s极速入门进阶课程环境说明mp4 2k8s极速入门课程进阶Pod...46基于 Rancher管理 kubernetes集群通过 Rancher创建 kubernetes集群,mp4 .............................................

Global site tag (gtag.js) - Google Analytics