第 2 章 对节点网络配置进行故障排除
如果节点网络配置遇到问题,则策略会自动回滚,且报告失败。这包括如下问题:
- 配置没有在主机上应用。
- 主机丢失了到默认网关的连接。
- 断开了与 API 服务器的连接。
2.1. 对不正确的节点网络配置策略配置进行故障排除 复制链接链接已复制到粘贴板!
您可以通过应用节点网络配置策略,对整个集群中的节点网络配置应用更改。
如果应用了不正确的配置,您可以使用以下示例进行故障排除并修正失败的节点网络策略。这个示例尝试将 Linux 网桥策略应用到具有三个 control plane 节点和三个计算节点的集群。策略不会被应用,因为策略会引用错误的接口。
要查找错误,您需要调查可用的 NMState 资源。然后您可以使用正确配置来更新策略。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
您确保 Linux 系统上不存在
ens01接口。
流程
在集群中创建策略。以下示例创建了一个简单的网桥
br1,它具有ens01作为其成员:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将策略应用到您的网络接口:
oc apply -f ens01-bridge-testfail.yaml
$ oc apply -f ens01-bridge-testfail.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证策略的状态:
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示策略失败:
输出示例
NAME STATUS ens01-bridge-testfail FailedToConfigure
NAME STATUS ens01-bridge-testfail FailedToConfigureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仅有策略状态并不表示它在所有节点或某个节点子集中是否失败。
列出节点网络配置以查看策略在任意节点上是否成功。如果策略只在一组节点中失败,输出表示问题在于特定的节点配置。如果策略在所有节点上都失败,输出会认为问题在于策略。
oc get nnce
$ oc get nnceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示策略在所有节点上都失败:
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看失败的原因之一。以下命令使用输出工具
jsonpath来过滤输出结果:oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'$ oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[2024-10-10T08:40:46Z INFO nmstatectl] Nmstate version: 2.2.37 NmstateError: InvalidArgument: Controller interface br1 is holding unknown port ens01
[2024-10-10T08:40:46Z INFO nmstatectl] Nmstate version: 2.2.37 NmstateError: InvalidArgument: Controller interface br1 is holding unknown port ens01Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上例显示
InvalidArgument错误的输出,这表示ens01是一个未知端口。在本例中,您可能需要更改策略配置文件中的端口配置。要确保正确配置了策略,请求
NodeNetworkState来查看一个或多个节点的网络配置。以下命令返回control-plane-1节点的网络配置:oc get nns control-plane-1 -o yaml
$ oc get nns control-plane-1 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示节点上的接口名称为
ens1,但失败的策略使用了ens01:输出示例
- ipv4: # ... name: ens1 state: up type: ethernet- ipv4: # ... name: ens1 state: up type: ethernetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑现有策略修正错误:
oc edit nncp ens01-bridge-testfail
$ oc edit nncp ens01-bridge-testfailCopy to Clipboard Copied! Toggle word wrap Toggle overflow # ... port: - name: ens1# ... port: - name: ens1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存策略以应用更正。
检查策略的状态,以确保它被成功更新:
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
NAME STATUS ens01-bridge-testfail SuccessfullyConfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中的所有节点上都成功配置了更新的策略。