1.6. 关于检查机器配置节点状态
如果您更改了机器配置池 (MCP) 而导致一个新的机器配置,例如使用 MachineConfig
或 KubeletConfig
对象,您可以使用机器配置节点自定义资源获取有关节点更新进度的详细信息。
MachineConfigNode
自定义资源允许您在通过升级阶段进行时监控单个节点更新的进度。如果其中一个节点在更新过程中出现问题,这些信息可以帮助进行故障排除。自定义资源报告节点在更新过程中的位置、已完成的阶段以及剩余的阶段。
节点更新过程由机器配置节点自定义资源跟踪的以下阶段和子阶段组成,如本节后续部分中的更多详情:
- 更新准备。MCO 停止配置偏移监控过程,并验证新创建的机器配置是否可以应用到节点。
更新已执行。MCO 对节点进行 cordon 和 drain 操作,并根据需要将新机器配置应用到节点的文件和操作系统。它包含以下子阶段:
- Cordoned
- Drained
- AppliedFilesAndOS
- PinnedImageSetsProgressing MCO 执行固定和预加载容器镜像所需的步骤。
-
PinnedImageSetsDegraded 固定镜像进程失败。您可以使用
oc describe machineconfignode
命令查看失败的原因,如本节后面的部分所述。 -
NodeDegraded 节点更新失败。您可以使用
oc describe machineconfignode
命令查看失败的原因,如本节后面的部分所述。 - 更新 Post 更新操作,MCO 会根据需要重新载入 CRI-O。
- 重新引导节点 MCO 根据需要重启节点。
更新完成。MCO uncordon 节点,将节点状态更新为集群,并恢复生成节点指标。它包含以下子阶段:
- Uncordoned
- 已更新 MCO 完成了一个节点更新,节点的当前配置版本是所需的更新版本。
- Resumed.MCO 重启了配置偏移监控过程,节点会返回到可操作状态。
当更新通过这些阶段时,您可以查询 MachineConfigNode
自定义资源,这会为每个阶段报告以下条件之一:
-
True
。该阶段在该节点上已完成。 -
False
。该阶段尚未启动,或不会在该节点上执行。 -
Unknown
。该阶段要么在该节点上执行,或者出现错误。如果阶段出现错误,您可以使用oc describe machineconfignodes
命令以了解更多信息,如本节后续部分中所述。
例如,假设带有新创建的机器配置的集群:
oc get machineconfig
$ oc get machineconfig
输出示例
您可以使用新机器配置监视节点被更新:
oc get machineconfignodes
$ oc get machineconfignodes
输出示例
字段 | 含义 |
---|---|
| 节点的名称。 |
| 与该节点关联的机器配置池的名称。 |
| 节点更新的新机器配置名称。 |
| 该节点上当前机器配置的名称。 |
| 指明节点是否已使用以下条件之一更新:
|
| 机器配置节点的年龄(在创建时)。如果关联的节点被更新,则不会更改年龄。 |
您可以使用 -o wide
标志来显示有关更新的附加信息:
oc get machineconfignodes -o wide
$ oc get machineconfignodes -o wide
输出示例
除了上表中定义的字段外,-o wide
输出还会显示以下字段:
阶段名称 | 定义 |
---|---|
| 指明 MCO 是否准备更新节点。 |
| 指明 MCO 是否已完成节点上的更新正文。 |
| 指明 MCO 是否已在节点上执行更新后操作。 |
| 指明 MCO 是否在节点上完成更新。 |
| 指明节点是否已恢复正常进程。 |
| 指明 MCO 是否已更新节点文件和操作系统。 |
| 指明 MCO 是否已将节点标记为不可调度。 |
| 指明 MCO 是否已排空节点。 |
| 指明 MCO 是否已重启该节点。 |
| 指明 MCO 是否已将节点标记为可以调度。 |
如需更新状态的更多详细信息,您可以使用 oc describe machineconfignode
命令:
oc describe machineconfignode/<machine_config_node_name>
$ oc describe machineconfignode/<machine_config_node_name>
输出示例
1.6.1. 检查机器配置节点状态 复制链接链接已复制到粘贴板!
在更新机器配置池 (MCP) 期间,您可以使用 oc get machineconfignodes
和 oc describe machineconfignodes
命令监控集群中的所有节点的进度。这些命令提供在更新过程中出现问题时很有用的信息,您需要对节点进行故障排除。
有关这些字段的含义的更多信息,请参阅"关于检查机器配置节点状态"。
流程
运行以下命令,查看集群中所有节点的更新状态,包括当前和所需的机器配置:
oc get machineconfignodes
$ oc get machineconfignodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看集群中节点的所有机器配置节点状态字段:
oc get machineconfignodes -o wide
$ oc get machineconfignodes -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查特定机器配置池中节点的更新状态:
oc get machineconfignodes $(oc get machineconfignodes -o json | jq -r '.items[]|select(.spec.pool.name=="<pool_name>")|.metadata.name')
$ oc get machineconfignodes $(oc get machineconfignodes -o json | jq -r '.items[]|select(.spec.pool.name=="<pool_name>")|.metadata.name')
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<pool_name>
指定机器配置池的名称。
输出示例
NAME POOLNAME DESIREDCONFIG CURRENTCONFIG UPDATED AGE ci-ln-g6dr34b-72292-g9btv-worker-a-sjh5r worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-d5534cb730e5e108905fc285c2a42b6c True 20M ci-ln-g6dr34b-72292-g9btv-worker-b-xthbz worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-faf6b50218a8bbce21f1370866283de5 False 20M ci-ln-g6dr34b-72292-g9btv-worker-c-gnpd6 worker rendered-worker-faf6b50218a8bbce21f1370866283de5 rendered-worker-faf6b50218a8bbce21f1370866283de5 True 19M
NAME POOLNAME DESIREDCONFIG CURRENTCONFIG UPDATED AGE ci-ln-g6dr34b-72292-g9btv-worker-a-sjh5r worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-d5534cb730e5e108905fc285c2a42b6c True 20M ci-ln-g6dr34b-72292-g9btv-worker-b-xthbz worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-faf6b50218a8bbce21f1370866283de5 False 20M ci-ln-g6dr34b-72292-g9btv-worker-c-gnpd6 worker rendered-worker-faf6b50218a8bbce21f1370866283de5 rendered-worker-faf6b50218a8bbce21f1370866283de5 True 19M
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,检查单个节点的更新状态:
oc describe machineconfignode/<node_name>
$ oc describe machineconfignode/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow