This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.10.3. 对节点网络配置进行故障排除
如果节点网络配置遇到问题,则策略会自动回滚,且报告失败。这包括如下问题:
- 配置没有在主机上应用。
- 主机丢失了到默认网关的连接。
- 断开了与 API 服务器的连接。
10.3.1. 对不正确的 NodeNetworkConfigurationPolicy 配置进行故障排除 复制链接链接已复制到粘贴板!
您可以通过应用 NodeNetworkConfigurationPolicy,对整个集群中的节点网络配置应用更改。如果您应用了不正确的配置,您可以使用参照示例进行故障排除并修正失败的网络策略。
在本例中,一个 Linux 桥接策略应用到一个有 3 个 master 节点和 3 个 worker 节点的实例集群。策略无法应用,因为它会引用了一个不正确的接口。要查找错误,请调查可用的 nmstate 资源。然后您可以使用正确配置来更新 Policy。
流程
创建 Policy 并将其应用到集群。以下示例在
ens01
接口上创建了一个简单桥接:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f ens01-bridge-testfail.yaml
$ oc apply -f ens01-bridge-testfail.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 Policy 的状态:
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示策略失败:
NAME STATUS ens01-bridge-testfail FailedToConfigure
NAME STATUS ens01-bridge-testfail FailedToConfigure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,仅有 Policy 状态并不表示它在所有节点或某个节点子集中是否失败。
列出 Enactments 以决定所有节点上的策略是否成功。如果策略仅仅因为某个子集而失败,这意味着问题在于特定的节点配置; 如果策略在所有节点中都失败,则表明问题在 Policy 中。
oc get nnce
$ oc get nnce
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示 Policy 在所有节点上都失败:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看失败的 Enactments 并检查回溯信息。以下命令使用输出工具
jsonpath
来过滤输出结果:oc get nnce worker-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'
$ oc get nnce worker-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令会返回一个大的回溯信息,它被编辑为 brevity:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NmstateVerificationError
列出了desired(期望的)
Policy 配置,Policy 在节点上的current(当前的)
配置,并高亮标识了不匹配参数间的difference(不同)
。在本示例中,此port
包含在difference
部分,这表示 Policy 中的端口配置问题。要确保正确配置了策略,请求
NodeNetworkState
来查看一个或多个节点的网络配置。以下命令会返回master-1
节点的网络配置:oc get nns master-1 -o yaml
$ oc get nns master-1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示节点上的接口名称为
ens1
,但失败的 Policy 使用了ens01
:- ipv4: ... name: ens1 state: up type: ethernet
- ipv4: ... name: ens1 state: up type: ethernet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑现有策略修正此错误:
oc edit nncp ens01-bridge-testfail
$ oc edit nncp ens01-bridge-testfail
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... port: - name: ens1
... port: - name: ens1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存 Policy 以应用更正。
检查 Policy 的状态,以确保它被成功更新:
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更新的 Policy 可在集群中的所有节点上成功配置。