Rancher证书过期 rancher页面无法登录

 Rancher证书过期  rancher页面无法登录

一 系统分析;

  1. 使用命令docker ps  -a 查询rancher镜像版本为2.4.5 ,和ID号。
  2. 查看Rancher运行是否正常。在查看日志。
  3. 使用命令 docker logs -f --tail 200  <rancher ID号> 查询日志,原因是rancher证书过期。
  4. 运行 docker exec -it <rancher ID号> /bin/bash  进入ruancher server镜像,运行如下命令:4.    根据不同版本的运行命令不同:rancher-server最新版本为2.5.4

参考转载文章:<独立容器 Rancher Server 证书更新>,部分更新证书,其他部分作为参考资料也转载出来了。

  1. 文章连接:

https://docs.rancher.cn/docs/rancher2.5/cluster-admin/certificate-rotation/_index/#%E6%A6%82%E8%BF%B0

二 转载文章:

轮换证书

概述#

默认情况下,Kubernetes 集群所需要的证书由 Rancher 生成,如果出现证书过期,或证书泄露等情况,则需要使用新的证书轮换掉有问题的证书。轮换证书后,Kubernetes 组件将自动重新启动。

以下服务支持证书轮换:

  • etcd
  • kubelet
  • kube-apiserver
  • kube-proxy
  • kube-scheduler
  • kube-controller-manager

警告

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

Rancher v2.2.x 中的证书轮换#

Rancher 启动的 Kubernetes 集群(RKE 集群)能够通过 UI 轮换自动生成的证书。

全局视图中,导航到要轮换证书的集群。

选择省略号(...)>轮换证书

选择要轮换的证书。

    • 轮换所有服务证书(保持相同的 CA)
    • 轮换单个服务,然后从下拉菜单中选择一项服务

单击保存

结果:所选证书将被轮换,相关服务将重新启动以开始使用新证书。

注意: 尽管 RKE CLI 可以为 Kubernetes 集群组件使用自定义证书,但目前 Rancher 不支持在 Rancher UI 中创建 RKE 集群时上传这些证书。

Rancher v2.1.x 和 v2.0.x 中的证书轮换#

在版本 v2.0.14 以及 v2.1.9 中支持

Rancher 启动的 Kubernetes 集群能够通过 API 轮换自动生成的证书。

1.在全局视图中,导航到要轮换证书的集群。

2.选择省略号(...)>在 API 中查看

3.单击 RotateCertificates

4.单击显示请求

5.单击发送请求

结果:所有 Kubernetes 证书将被轮换。

升级较旧的 Rancher 版本后轮换过期的证书#

如果要从 Rancher v2.0.13 或更早版本或 v2.1.8 或更早版本升级,并且您的集群已过期证书,则需要一些手动步骤来完成证书轮换。

对于 controlplane 和 etcd 节点,登录到每个对应的主机,并检查证书 kube-apiserver-requestheader-ca.pem 是否在以下目录中:

cd /etc/kubernetes/.tmp

Copy

如果证书不在目录中,请执行以下命令:

cp kube-ca.pem kube-apiserver-requestheader-ca.pem

cp kube-ca-key.pem kube-apiserver-requestheader-ca-key.pem

cp kube-apiserver.pem kube-apiserver-proxy-client.pem

cp kube-apiserver-key.pem kube-apiserver-proxy-client-key.pem

Copy

如果.tmp目录不存在,则可以将整个 SSL 证书复制到.tmp中:

cp -r /etc/kubernetes/ssl /etc/kubernetes/.tmp

Copy

轮换证书。对于 Rancher v2.0.x 和 v2.1.x,请使用 Rancher API,对于 Rancher 2.2.x 请使用Rancher UI

命令完成后,检查 worker 节点是否处于活动状态。如果不是,请登录到每个 worker 节点,然后重新启动 kubelet 和 agent。

RKE 证书轮换 (local 集群和业务集群通用)#

可用版本: rke v0.2.0+

注意 如果以前是通过rke v0.2.0之前的版本创建的 Kubernetes 集群,在轮换证书前先执行rke up操作,参考证书管理

通过 RKE 轮换证书,目前支持的操作包括:

    • 批量更新所有服务证书(CA 证书不变)
    • 更新某个指定服务(CA 证书不变)
    • 轮换 CA 和所有服务证书

批量更新所有服务证书(CA 证书不变)

rke cert rotate

INFO[0000] Initiating Kubernetes cluster

INFO[0000] Rotating Kubernetes cluster certificates

INFO[0000] [certificates] Generating Kubernetes API server certificates

INFO[0000] [certificates] Generating Kube Controller certificates

INFO[0000] [certificates] Generating Kube Scheduler certificates

INFO[0001] [certificates] Generating Kube Proxy certificates

INFO[0001] [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[0002] [certificates] Generating etcd-zzzzz certificate and key

INFO[0002] Successfully Deployed state file at [./cluster.rkestate]

INFO[0002] Rebuilding Kubernetes cluster with rotated certificates

.....

INFO[0050] [worker] Successfully restarted Worker Plane..

Copy

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

rke cert rotate --service kubelet

INFO[0000] Initiating Kubernetes cluster

INFO[0000] Rotating Kubernetes cluster certificates

INFO[0000] [certificates] Generating Node certificate

INFO[0000] Successfully Deployed state file at [./cluster.rkestate]

INFO[0000] Rebuilding Kubernetes cluster with rotated certificates

.....

INFO[0033] [worker] Successfully restarted Worker Plane..

Copy

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

Copy

因为证书改变,相应的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 server 可以正常运行。升级到 Rancher v2.0.14+ 、v2.1.9+、v2.2.2+ 后会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书。所以独立容器运行的 Rancher Server,只需在证书过期前把 rancher 版本升级到支持自动更新 ssl 证书的版本即可,无需做其他操作。

证书已过期

如果证书已过期,那么 rancher server 无法正常运行。即使升级到 Rancher v2.0.14+ 、v2.1.9+、v2.2.2+ 也可能会提示证书错误。如果出现这种情况,可通过以下操作进行处理:

正常升级 rancher 版本到 v2.0.14+ 、v2.1.9+、v2.2.2+;

执行以下命令:

2.0 或 2.1 版本

docker exec -ti <rancher_server_id> mv /var/lib/rancher/management-state/certs/bundle.json /var/lib/rancher/management-state/certs/bundle.json-bak

Copy

2.2 +

docker exec -ti <rancher_server_id> mv /var/lib/rancher/management-state/tls/localhost.crt /var/lib/rancher/management-state/tls/localhost.crt-bak

Copy

2.3 +

docker exec -ti <rancher_server_id> mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tlsbak

# 执行两侧,第一次用于申请证书,第二次用于加载证书并启动

docker restart <rancher_server_id>

Copy

2.4 +

        1. exec 到 rancher server

kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving

kubectl --insecure-skip-tls-verify delete secret serving-cert -n cattle-system

rm -f /var/lib/rancher/k3s/server/tls/dynamic-cert.json

Copy

重启 rancher-server

执行以下命令刷新参数

curl --insecure -sfL https://server-url/v3

Copy

重启 Rancher Server 容器

docker restart <rancher_server_id>

Copy

故障处理#

提示 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层级下的配置参数进行修改:
  4. 输入:wq保存 yaml 文件后集群将自动更新,更新完成后再进行证书更新。

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

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

解决方法

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

调整命令:

# 关闭ntp同步,不然时间会自动更新

timedatectl set-ntp false

# 修改节点时间

timedatectl set-time '2019-01-01 00:00:00'

Copy

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

timedatectl set-ntp true

Copy

检查证书有效期

openssl x509 -in /etc/kubernetes/ssl/kube-apiserver.pem -noout -dates

Copy

Edit this page

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值