7.3. 将节点设置为维护模式
您可以通过 web 控制台或 CLI 使用 NodeMaintenance
CR 将节点置于维护模式。
7.3.1. 使用 Web 控制台将节点设置为维护模式
要将节点设置为维护模式,您可以使用 Web 控制台创建 NodeMaintenance
自定义资源(CR)。
先决条件
-
以具有
cluster-admin
特权的用户身份登录。 - 从 OperatorHub 安装 Node Maintenance Operator。
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 Node Maintenance Operator。
- 在 Node Maintenance 选项卡中,点 Create NodeMaintenance。
-
在 Create NodeMaintenance 页面中,选择 Form view 或 YAML 视图来 配置
NodeMaintenance
CR。 -
要应用您配置的
NodeMaintenance
CR,请点击 Create。
验证
在 Node Maintenance 选项卡中,检查 Status
列并验证其状态是否为 Succeeded
。
7.3.2. 使用 CLI 将节点设置为维护模式
您可以使用 NodeMaintenance
自定义资源(CR)将节点置于维护模式。应用 NodeMaintenance
CR 时,所有允许的 pod 都会被驱除,且节点不可调度。被驱除的 pod 会被放入到集群中的另一节点中。
先决条件
-
安装 Red Hat OpenShift CLI
oc
。 -
以具有
cluster-admin
权限的用户身份登录集群。
流程
创建以下
NodeMaintenance
CR,并将文件保存为nodemaintenance-cr.yaml
:apiVersion: nodemaintenance.medik8s.io/v1beta1 kind: NodeMaintenance metadata: name: nodemaintenance-cr 1 spec: nodeName: node-1.example.com 2 reason: "NIC replacement" 3
运行以下命令来应用节点维护 CR:
$ oc apply -f nodemaintenance-cr.yaml
验证
运行以下命令,检查维护任务的进度:
$ oc describe node <node-name>
其中
<node-name>
是节点的名称,如node-1.example.com
检查输出示例:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeNotSchedulable 61m kubelet Node node-1.example.com status is now: NodeNotSchedulable
7.3.3. 检查当前 NodeMaintenance CR 任务的状态
您可以检查当前 NodeMaintenance
CR 任务的状态。
先决条件
-
安装 Red Hat OpenShift CLI
oc
。 -
以具有
cluster-admin
特权的用户身份登录。
流程
运行以下命令,检查当前节点维护任务的状态,如
NodeMaintenance
CR 或nm
对象:$ oc get nm -o yaml
输出示例
apiVersion: v1 items: - apiVersion: nodemaintenance.medik8s.io/v1beta1 kind: NodeMaintenance metadata: ... spec: nodeName: node-1.example.com reason: Node maintenance status: drainProgress: 100 1 evictionPods: 3 2 lastError: "Last failure message" 3 lastUpdate: "2022-06-23T11:43:18Z" 4 phase: Succeeded totalpods: 5 5 ...