5.4. 正常重新引导节点
Windows Machine Config Operator (WMCO) 尽可能最小化节点重启。但是,某些操作和更新需要重新引导,以确保正确且安全地应用更改。要安全地重新引导 Windows 节点,请使用安全重启过程。有关安全重新引导标准 OpenShift Container Platform 节点的详情,请参考节点文档中的"正常引导节点"。
在重启节点前,建议备份 etcd 数据以避免该节点上出现数据丢失。
对于需要用户执行 oc login
命令而不是 kubeconfig
文件中的证书来管理集群的单节点 OpenShift 集群,oc adm
命令在封锁并排空节点后可能无法使用。这是因为 openshift-oauth-apiserver
pod 没有运行,因为 cordon。您可以使用 SSH 访问节点,如以下步骤所示。
在单节点 OpenShift 集群中,在封锁和排空时无法重新调度 Pod。但是,这样做会为 pod(特别是您的工作负载 pod)提供一定的时间来正确停止和释放相关资源。
流程
执行节点正常重启:
将节点标记为不可调度:
oc adm cordon <node1>
$ oc adm cordon <node1>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空节点以删除所有正在运行的 pod:
oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force
$ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可能会收到与自定义 pod 中断预算(PDB)关联的 pod 无法被驱除的错误。
错误示例
error when evicting pods/"rails-postgresql-example-1-72v2w" -n "rails" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
error when evicting pods/"rails-postgresql-example-1-72v2w" -n "rails" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,再次运行 drain 命令,添加
disable-eviction
标记,这将绕过 PDB 检查:oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
$ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 到 Windows 节点,并运行以下命令来输入 PowerShell:
powershell
C:\> powershell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启节点:
Restart-Computer -Force
C:\> Restart-Computer -Force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Amazon Web Services (AWS) 上的 Windows 节点不会因为 EC2 实例元数据路由和主机网络服务(HNS)网络不一致而在安全重启后返回
READY
状态。重启后,通过 SSH 到 AWS 上的任何 Windows 节点,并在 shell 提示符中运行以下命令来添加路由:
route add 169.254.169.254 mask 255.255.255.0 <gateway_ip>
C:\> route add 169.254.169.254 mask 255.255.255.0 <gateway_ip>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
169.254.169.254
- 指定 EC2 实例元数据端点的地址。
255.255.255.255
- 指定 EC2 实例元数据端点的网络掩码。
<gateway_ip>
运行以下命令,在 Windows 实例中指定网关的对应 IP 地址,您可以找到该地址:
ipconfig | findstr /C:"Default Gateway"
C:\> ipconfig | findstr /C:"Default Gateway"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启完成后,运行以下命令将节点标记为可以调度:
oc adm uncordon <node1>
$ oc adm uncordon <node1>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证节点是否已就绪:
oc get node <node1>
$ oc get node <node1>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION <node1> Ready worker 6d22h v1.18.3+b0068a8
NAME STATUS ROLES AGE VERSION <node1> Ready worker 6d22h v1.18.3+b0068a8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow