1.6. 关于检查机器配置节点状态
如果更改了集群中默认 control plane 或 worker 节点,例如使用机器配置或 kubelet 配置,您可以使用机器配置自定义资源获取有关节点更新进度的详细信息。导致新机器配置的任何更改都会触发节点更新过程。
您可以查看在 OpenShift Container Platform 安装后创建的 control plane
和 worker
机器配置池中的节点的详细信息。您不能使用自定义机器配置池。
MachineConfigNode
自定义资源允许您在通过升级阶段进行时监控单个节点更新的进度。如果其中一个节点在更新过程中出现问题,这些信息可以帮助进行故障排除。自定义资源报告节点在更新过程中的位置、已完成的阶段以及剩余的阶段。
机器配置节点自定义资源只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
节点更新过程由机器配置节点自定义资源跟踪的以下阶段和子阶段组成,如本节后续部分中的更多详情:
更新准备。MCO 停止配置偏移监控过程,并验证新创建的机器配置是否可以应用到节点。
- UpdateCompatible
更新已执行。MCO 对节点进行 cordon 和 drain 操作,并根据需要将新机器配置应用到节点的文件和操作系统。它包含以下子阶段:
- Cordoned
- Drained
- AppliedFilesAndOS
- PinnedImageSetsProgressing MCO 执行固定和预加载容器镜像所需的步骤。
-
PinnedImageSetsDegraded 固定镜像进程失败。您可以使用
oc describe machineconfignode
命令查看失败的原因,如本节后面的部分所述。 更新 Post update 操作。MCO 根据需要重启节点或重新载入 CRI-O。
- RebootedNode
- ReloadedCRIO
更新完成。MCO 取消记录节点,将节点状态更新为集群,并恢复生成节点指标。
- Updated
- Uncordoned
- Resumed.MCO 重启配置偏移监控过程,节点会返回操作状态。
当更新通过这些阶段时,您可以查询 MachineConfigNode
自定义资源,这会为每个阶段报告以下条件之一:
-
True
。该阶段在该节点上完成,或者 MCO 已在该节点上启动该阶段。 -
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 是否已重启该节点。 |
| 指明 MCO 是否已重启 CRI-O 服务。 |
| 指明 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
命令监控集群中所有 control plane 和 worker 节点的进度。这些命令提供在更新过程中出现问题时很有用的信息,您需要对节点进行故障排除。
您不能将这些命令用于自定义机器配置池。
有关这些字段的含义的更多信息,请参阅"关于检查机器配置节点状态"。
先决条件
您可以通过编辑名为
cluster
的FeatureGate
CR 为集群启用所需的技术预览功能:oc edit featuregate cluster
$ oc edit featuregate cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FeatureGate
CR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告在集群中启用
TechPreviewNoUpgrade
功能集无法撤消,并会阻止次版本更新。此功能集允许您在测试集群中启用这些技术预览功能,您可以在测试集群中完全测试它们。不要在生产环境集群中启用此功能。保存更改后,会创建新的机器配置,然后更新机器配置池,并在应用更改时在每个节点上调度。
流程
运行以下命令,查看集群中所有节点的更新状态,包括当前和所需的机器配置:
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 输出示例
NAME POOLNAME DESIREDCONFIG CURRENTCONFIG UPDATED ci-ln-g6dr34b-72292-g9btv-worker-a-sjh5r worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-d5534cb730e5e108905fc285c2a42b6c True ci-ln-g6dr34b-72292-g9btv-worker-b-xthbz worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-faf6b50218a8bbce21f1370866283de5 False ci-ln-g6dr34b-72292-g9btv-worker-c-gnpd6 worker rendered-worker-faf6b50218a8bbce21f1370866283de5 rendered-worker-faf6b50218a8bbce21f1370866283de5 True
NAME POOLNAME DESIREDCONFIG CURRENTCONFIG UPDATED ci-ln-g6dr34b-72292-g9btv-worker-a-sjh5r worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-d5534cb730e5e108905fc285c2a42b6c True ci-ln-g6dr34b-72292-g9btv-worker-b-xthbz worker rendered-worker-d5534cb730e5e108905fc285c2a42b6c rendered-worker-faf6b50218a8bbce21f1370866283de5 False ci-ln-g6dr34b-72292-g9btv-worker-c-gnpd6 worker rendered-worker-faf6b50218a8bbce21f1370866283de5 rendered-worker-faf6b50218a8bbce21f1370866283de5 True
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