2.2. 关闭集群
您可以以安全的方式关闭集群,以便稍后重启集群。
您可以在安装日期起的一年内关闭集群,并期望它可以正常重启。安装日期起一年后,集群证书会过期。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 已进行 etcd 备份。
重要执行此流程前务必要进行 etcd 备份,以便在重启集群遇到任何问题时可以恢复集群。
例如,以下条件可能会导致重启的集群失败:
- 关机过程中的 etcd 数据崩溃
- 因硬件原因造成节点故障
- 网络连接问题
如果集群无法恢复,请按照以下步骤恢复到以前的集群状态。
流程
如果您计划长时间关闭集群,请确定集群证书过期的日期。
您需要在证书过期前重启集群。当集群重启时,可能需要您手动批准待处理的证书签名请求 (CSR) 来恢复 kubelet 证书。
检查
kube-apiserver-to-kubelet-signer
CA 证书的过期日期:$ oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}{"\n"}'
输出示例
2023-08-05T14:37:50Z
检查 kubelet 证书的过期日期:
运行以下命令,为控制平面(control plane)节点启动 debug 会话:
$ oc debug node/<node_name>
运行以下命令,将根目录改为
/host
:sh-4.4# chroot /host
运行以下命令,检查 kubelet 客户端证书过期日期:
sh-5.1# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate
输出示例
notAfter=Jun 6 10:50:07 2023 GMT
运行以下命令,检查 kubelet 服务器证书过期日期:
sh-5.1# openssl x509 -in /var/lib/kubelet/pki/kubelet-server-current.pem -noout -enddate
输出示例
notAfter=Jun 6 10:50:07 2023 GMT
- 退出 debug 会话。
- 重复这些步骤,以检查所有控制平面节点上的证书过期日期。为确保集群可以正常重启,请计划在最早的证书过期前重启它。
关闭集群中的所有节点。您可以从云供应商的 Web 控制台完成此操作,或者运行以下循环:
$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done 1
- 1
-h 1
表示此过程在 control-plane 节点关闭前可以持续的时间(以分钟为单位)。对于具有 10 个或更多节点的大型集群,请它设置为 10 分钟或更长时间,以确保所有计算节点都已关闭。
输出示例
Starting pod/ip-10-0-130-169us-east-2computeinternal-debug ... To use host binaries, run `chroot /host` Shutdown scheduled for Mon 2021-09-13 09:36:17 UTC, use 'shutdown -c' to cancel. Removing debug pod ... Starting pod/ip-10-0-150-116us-east-2computeinternal-debug ... To use host binaries, run `chroot /host` Shutdown scheduled for Mon 2021-09-13 09:36:29 UTC, use 'shutdown -c' to cancel.
使用以下方法关闭节点可让 pod 安全终止,从而减少数据崩溃的可能性。
注意为大规模集群调整关闭时间:
$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 10; done
注意在关闭前,不需要排空 OpenShift Container Platform 中附带的标准 pod 的 control plane 节点。
集群管理员负责确保在集群重启后,彻底重启自己的工作负载。如果因为自定义工作负载的原因已在关闭前排空 control plane 节点,您必须在重启后将 control plane 节点标记为可调度,然后集群才可以重新正常工作。
关闭不再需要的集群依赖项,如外部存储或 LDAP 服务器。在进行操作前请务必查阅您的厂商文档。
重要如果您在云供应商平台上部署了集群,请不要关闭、挂起或删除关联的云资源。如果您删除挂起的虚拟机的云资源,OpenShift Container Platform 可能无法成功恢复。