正常关闭 OpenShift 集群

实验服务器无法 24 小时一直开机,所以需要经常做完测试关闭服务器,对集群的关闭有一套流程,在这里记录一下。

首先是推荐进行 etcd 的备份,这里暂时略过。

首先需要确认证书的过期时间,要确保在这个时间之前启动集群,如果超过了该时间需要手动批准 CSR。

oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'

接下来对集群中所有的节点禁止 scheduler :

for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm cordon ${node} ; done

疏散 worker 节点上的 Pod:

for node in $(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s ; done

关闭集群中的所有节点:

for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done

集群启动后,记得需要移除 cordon

for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm uncordon ${node} ; done

如果长时间关机了证书过期将自动签发新的证书,但是需要手动批准证书请求,使用以下命令进行全部批准:

 oc adm certificate approve $(oc get csr | grep -i Pending  | awk '{print $1}')

参考链接:https://docs.openshift.com/container-platform/4.14/backup_and_restore/graceful-cluster-shutdown.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部