11.2. 将节点设置为维护模式
通过 Web 控制台、CLI 或者使用 NodeMaintenance
自定义资源将节点置于维护模式。
11.2.1. 通过 web 控制台将节点设置为维护模式
使用 Compute
流程
-
在 OpenShift Container Platform 控制台中,点 Compute
Nodes。 您可从此屏幕将节点设置为维护,这有助于在一个屏幕中对多个虚拟机执行操作,也可通过 Node Details 屏幕进行,其中可查看所选节点的综合详情:
- 点击节点 末尾的 Options 菜单并选择 Start Maintenance。
-
点击节点名称以打开 Node Details 屏幕,然后点击 Actions
Start Maintenance。
- 在确认窗口中点击 Start Maintenance。
该节点将实时迁移具有 LiveMigration
驱除策略的虚拟机实例,且该节点不可再调度。该节点上的所有其他 pod 和虚拟机均被删除,并会在另一节点上重新创建。
11.2.2. 在 CLI 中将节点设置为维护模式
通过将节点标记为不可调度,并使用 oc adm drain
命令从节点驱除或删除 pod,将节点设置为维护模式。
流程
将节点标记为不可调度。节点状态变为
NotReady,SchedulingDisabled
。$ oc adm cordon <node1>
排空节点以准备进行维护。节点实时迁移
LiveMigratable
条件设置为True
,spec:evictionStrategy
字段设置为LiveMigrate
的虚拟机实例。该节点上的所有其他 pod 和虚拟机均被删除,并会在另一节点上重新创建。$ oc adm drain <node1> --delete-emptydir-data --ignore-daemonsets=true --force
-
--delete-emptydir-data
标志会删除节点上使用emptyDir
卷的任何虚拟机实例。这些卷中的数据是临时的,在终止后可以被安全地删除。 -
--ignore-daemonsets=true
标志确保守护进程集被忽略,pod 驱除可以成功继续。 -
需要
--force
标志来删除不是由副本集或守护进程设置控制器管理的 pod。
-
11.2.3. 使用 NodeMaintenance 自定义资源将节点设置为维护模式
您可以使用 NodeMaintenance
自定义资源(CR)将节点置于维护模式。应用 NodeMaintenance
CR 时,所有允许的 pod 都会被驱除并关闭该节点。被驱除的 pod 会被放入到集群中的另一节点中。
先决条件
-
安装 OpenShift Container Platform CLI
oc
。 -
以具有
cluster-admin
权限的用户身份登录集群。
流程
创建以下节点维护 CR,并将文件保存为
nodemaintenance-cr.yaml
:apiVersion: nodemaintenance.kubevirt.io/v1beta1 kind: NodeMaintenance metadata: name: maintenance-example 1 spec: nodeName: node-1.example.com 2 reason: "Node maintenance" 3
运行以下命令来应用节点维护计划:
$ oc apply -f nodemaintenance-cr.yaml
运行以下命令,将
<node-name>
替换为节点的名称来检查维护任务的进度:$ oc describe node <node-name>
输出示例
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeNotSchedulable 61m kubelet Node node-1.example.com status is now: NodeNotSchedulable
11.2.3.1. 检查当前 NodeMaintenance CR 任务的状态
您可以检查当前 NodeMaintenance
CR 任务的状态。
先决条件
-
安装 OpenShift Container Platform CLI
oc
。 -
以具有
cluster-admin
权限的用户身份登录。
流程
运行以下命令,检查当前节点维护任务的状态:
$ oc get NodeMaintenance -o yaml
输出示例
apiVersion: v1 items: - apiVersion: nodemaintenance.kubevirt.io/v1beta1 kind: NodeMaintenance metadata: ... spec: nodeName: node-1.example.com reason: Node maintenance status: evictionPods: 3 1 pendingPods: - pod-example-workload-0 - httpd - httpd-manual phase: Running lastError: "Last failure message" 2 totalpods: 5 ...