资讯专栏INFORMATION COLUMN

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

cheukyin / 1513人阅读

摘要:轮换证书是一次性操作,新生成的证书有效期为年。其他应用通过轮换证书业务集群注可用版本对于以及更高版本,可通过对集群证书进行更新。

在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/doc...

通过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

如果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://www.ucloud.cn/yun/33000.html

相关文章

  • Kubernetes 1.12全新发布!新功能亮点解析

    摘要:距离上一次版本发布三个月之隔,是今年的第三个主要版本。证书轮换证书轮换功能现已进入状态。这一功能可以在当前证书到期时自动续订密钥和服务器的证书。更多包含许多修复和内部组件的改进,此次的更新明显侧重于稳定核心以及使现有的功能成熟。 Kubernetes1.12已于今日全新发布!Kubelet证书轮换、资源配额优先级、挂载命名空间、对Azure的增强支持等10大亮点功能,本文为你一一解读!...

    Developer 评论0 收藏0
  • GitLab Auto DevOps功能与Kubernetes集成教程

    摘要:从开始,部署管理的集群时,默认情况下会启用授权群集端点功能。我们将首先在中创建一个新项目,该项目将使用功能与我们的集群集成。完成后单击创建项目。这不仅意味着已被设为默认值,还能够触发构建。例如,负载均衡选项卡显示已部署的以及创建的主机名。 介 绍 在这篇文章中,我们将介绍如何将GitLab的Auto DevOps功能与Rancher管理的Kubernetes集群连接起来,利用Ranch...

    GraphQuery 评论0 收藏0
  • Kubernetes负载均衡详解

    摘要:部署只是一种规则,控制器组件会将这一规则应用于实际负载均衡器中。原因是功能仅允许将端口用于路由,负载均衡器和则可作为全局启动。负载均衡的限制提供了功能丰富的负载均衡器支持详细介绍在此。截至目前,我们暂时无法使用工具将负载均衡器配置从转换为。 如果您的应用程序是面向大量用户、会吸引大量流量,那么一个不变的目标一定是在高效满足用户需求的同时、不让用户感知到任何类似于服务器繁忙!的情况。这一...

    CoderBear 评论0 收藏0
  • Kubernetes仪表盘和外部IP代理漏洞及应对之策

    摘要:近期,仪表盘和外部代理接连被发现存在安全问题。本文将更深入解读这两个安全漏洞的原理会对您的部署造成的影响以及相应的应对之策。在中,仪表盘作为每个集群环境的一部分包含在内但是,部署不受影响,因为充当了仪表盘的身份验证授权和代理。 近期,Kubernetes仪表盘和外部IP代理接连被发现存在安全问题。针对这两个漏洞,Kubernetes发布了相应的补丁版本供会受漏洞影响的用户解决问题。本文...

    everfly 评论0 收藏0

发表评论

0条评论

cheukyin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<