AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1068558
Accepted
jayunit100
jayunit100
Asked: 2021-07-04 04:49:47 +0800 CST2021-07-04 04:49:47 +0800 CST 2021-07-04 04:49:47 +0800 CST

我应该如何调试由于 MSFT_NetRoute “未找到”而失败的 Microsoft CIM?

  • 772

一般来说,应该如何调试与CmdletizationQuery_NotFound消息相关的故障,为什么基于 MSFT_NetRoute 的查询会注册这样的错误?

细节

具体来说,我的 Kubernetes CNI 提供程序 (antrea) 发布了一条与其启动时间相关的错误消息MSFT_NetRoute,因为它无法成功运行引导自身所需的 powershell 查询。错误消息有一个可疑字符串,其中:

  • 可能与 powershell 版本有关(我在这篇文章的后面没有确认,但这是一个合理的假设)
  • 我还考虑到这个错误可能来自我没有安装的外部东西......
  • 最后,在不完全了解 cmdletizationQuery 错误消息的性质的情况下,可以合理地假设这与较低级别的网络设置问题有关。
   + FullyQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute

此消息的上述片段突出显示了Get-NetRoute下面发生的相关错误,这令人费解,因为它似乎表明该Get-NetRoute查询不是要运行的有效查询。但是https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netroute?view=windowsserver2019-ps似乎暗示 Get-NetRoute 在 powershell 中默认可用。

错误信息

ROOT/StandardCimv2/MSFT_NetRoute class on the  CIM server: SELECT * FROM MSFT_NetRoute  WHERE ((DestinationPrefix LIKE
'0.0.0.0/0')) AND ((InterfaceIndex = 26)). Verify query parameters and retry.
At line:1 char:3
+ $(Get-NetRoute -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0 ).Next ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute

Powershell 版本

这台机器上的powershell版本似乎是最新的......(我认为5.1在windows server 2019上是正常的)......

Name                           Value
----                           -----
PSVersion                      5.1.17763.1852
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.1852
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

注意:我已经在具有类似 5.1.x powershell 版本 (5.1.17763.1490) 的类似版本的 windows server 2019 中对此进行了测试,但没有看到此故障。所以,

问题

  • 我需要做些什么才能Get-NetRoute在我的机器上正常工作吗?
  • 这是否与其他事情有关(即在单个 VM 上配置网络接口的方式)?请注意,这是一个 VirtualBox VM,所以如果出现桥接或 NAT 网络问题,我不会完全震惊。
networking powershell interface windows-server-2019
  • 1 1 个回答
  • 392 Views

1 个回答

  • Voted
  1. Best Answer
    jayunit100
    2021-07-05T02:29:22+08:002021-07-05T02:29:22+08:00

    因此,一般来说,如果您遇到CmdletizationQuery_NotFound错误,如果查询中有很多字段,则可能并不总是伴随有关失败字段的信息......

    ➜  sig-windows-dev-tools git:(antrea-node-ip-hardcoding) ✗ vagrant winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 123 "
    No MSFT_NetRoute objects found with property 'InterfaceIndex' equal to '123'.  Verify the value of the property and retry.
    At line:1 char:1
    + Get-NetRoute -InterfaceIndex 123
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (123:UInt32) [Get-NetRoute], CimJobException
        + FullyQualifiedErrorId : CmdletizationQuery_NotFound_InterfaceIndex,Get-NetRoute
    

    这是因为特定的 CIM 查询失败,因此找不到您要查找的对象。

    但是,有时 CIMS 查询似乎无法返回结果而没有给出查询失败的特定部分(即CmdletizationQuery_NotFound_InterfaceIndex 上面的内容很好且易于阅读,但是当我们添加DestinationPrefix搜索字段时,下面的相同查询给出了一个更神秘的错误信息)...

    ➜  sig-windows-dev-tools git:(antrea-node-ip-hardcoding) ✗ vagrant winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 7 -DestinationPrefix 0.0.0.0/1"
    No matching MSFT_NetRoute objects found by CIM query for instances of the ROOT/StandardCimv2/MSFT_NetRoute class on the  CIM server: SELECT * FROM MSFT_NetRoute  WHERE ((DestinationPrefix LIKE '0.0.0.0/1')) AND ((InterfaceIndex = 7)). Verify query parameters and retry.
    At line:1 char:1
    + Get-NetRoute -InterfaceIndex 7 -DestinationPrefix 0.0.0.0/1
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
        + FullyQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute
    

    在这种特定情况下:

    • 没有 id = 26 的现有 IP 接口,它也有 0.0.0.0/0 目标前缀

    在更一般的情况下,如果您遇到类似的错误,可能是由于您刚刚制作了一个无法返回任何数据的 CIMS 查询。

    现在,由于最初的问题与 Kubernetes CNI 提供程序有关,我将解决该部分:

    在 Windows 上的 Kubernetes 中

    CNI 提供商(如 antrea)在上线时需要这些信息,一般要确保您的 windows kubelet 正确设置其 IP 地址(即通过启动时的 node-ip 字段)。

    在我的例子中,我发现在设置之后,这个查询是正确生成的,它开始寻找这个值的正确接口(即对应于我节点的内部 IP 地址的那个)。

    有一个更广泛的问题,一般来说,DestinationPrefixes 应该如何在 Kubernetes windows VM 中设置,但这超出了我最初问题的范围,但总的来说,如果您正确设置了网络,那么:

    • node-ip如图所示,您kubectl get nodes -o wide的 Windows kubelet 是您想要的正确的,并且
    • 与node-ip具有目标前缀 IP 地址 = 0.0.0.0/0 的接口相关联

    然后具体来说,antrea CNI 提供商将能够准确地确定nextHop其网关的正确性,最终用于在您的 Pod 网络的节点上配置 OVS 路由规则。

    • 0

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve