Điểm:1

Làm cách nào để gỡ lỗi Microsoft CIM không thành công vì MSFT_NetRoute "không tìm thấy"?

lá cờ co

Nói chung, làm thế nào để gỡ lỗi một lỗi liên quan đến CmdletizationQuery_NotFound và tại sao các truy vấn dựa trên MSFT_NetRoute lại đăng ký một lỗi như vậy?

Chi tiết

Cụ thể, nhà cung cấp Kubernetes CNI (antrea) của tôi đang đăng một thông báo lỗi liên quan đến MSFT_NetRoute khi nó khởi động, bởi vì nó không thể chạy thành công truy vấn powershell cần thiết để tự khởi động. Thông báo lỗi có một chuỗi đáng ngờ:

  • Có thể liên quan đến phiên bản powershell (tôi đã xác nhận sau trong bài đăng này, nhưng đó là một giả thuyết hợp lý)
  • Tôi cũng đang xem xét rằng có thể lỗi này đến từ những thứ bên ngoài mà tôi chưa cài đặt...
  • Cuối cùng, nếu không hiểu đầy đủ bản chất của thông báo lỗi cmdletizationQuery, sẽ hợp lý khi cho rằng điều này có liên quan đến sự cố thiết lập mạng cấp thấp hơn.
   + FullQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute

Đoạn trích trên của thông báo này, làm nổi bật Get-NetRoute Lỗi liên quan xảy ra bên dưới, gây khó hiểu vì dường như nó chỉ ra rằng Get-NetRoute không phải là truy vấn hợp lệ để chạy. Nhưng mà https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netroute?view=windowsserver2019-ps dường như ngụ ý rằng Get-NetRoute có sẵn theo mặc định trong powershell.

Thông báo lỗi

Lớp ROOT/StandardCimv2/MSFT_NetRoute trên máy chủ CIM: CHỌN * TỪ MSFT_NetRoute WHERE ((DestinationPrefix LIKE
'0.0.0.0/0')) AND ((Interface Index = 26)). Xác minh tham số truy vấn và thử lại.
Tại dòng:1 ký tự:3
+ $(Get-NetRoute -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0 ).Tiếp theo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute

Phiên bản PowerShell

Phiên bản powershell trên máy này có vẻ khá cập nhật... (5.1 tôi nghĩ là bình thường trên máy chủ windows 2019)...

Tên Giá trị
---- -----
Phiên bản PS 5.1.17763.1852
Máy tính để bàn PSEdition
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.1852
CLRVersion 4.0.30319.42000
WSManStackPhiên bản 3.0
PSRemotingProtocolPhiên bản 2.3
Tuần tự hóaPhiên bản 1.1.0.1

Lưu ý: Tôi đã thử nghiệm điều này trong các phiên bản tương tự của máy chủ windows 2019 với phiên bản powershell 5.1.x tương tự (5.1.17763.1490) và không thấy lỗi này. Cho nên,

câu hỏi

  • có điều gì tôi cần phải làm để thực hiện Get-NetRoute hoạt động bình thường trên máy của tôi không?
  • điều này có liên quan đến thứ gì khác không (tức là cách các giao diện mạng được định cấu hình trên VM riêng lẻ)? Lưu ý rằng đây là VirtualBox VM, vì vậy nếu có sự cố với mạng bắc cầu hoặc NAT, tôi sẽ không hoàn toàn bị sốc.
JosefZ avatar
lá cờ th
`Get-NetRoute` có chạy không? Và `Get-NetRoute -DestinationPrefix 0.0.0.0/0` có hiển thị `26` trong cột `ifIndex` không?
lá cờ cn
Đó là trong thông báo lỗi. MSFT_NetRoute không có. Bạn có thể xác thực điều này bằng cách thực hiện truy vấn WMI đối với không gian tên/đường dẫn.
lá cờ co
vâng, tôi đã chơi nhiều hơn với cái này và xác nhận: Get-NetRoute hoạt động...
lá cờ co
tôi nghi ngờ nó đơn giản như đã đề cập rằng MSFT_NETROUTE bị thiếu, nhưng không chắc chắn, đối tượng MSFT_NETROUTE cụ thể đó có -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0. không tồn tại... tôi nghi ngờ điều này là do địa chỉ giao diện 26 không có đích 0.0.0.0/0. Nhà cung cấp CNI của tôi mong đợi điều này .. vì vậy có thể giao diện 26 đang được truy vấn không phải là giao diện phù hợp
lá cờ cn
Điều này rất dễ xác nhận, không cần nghi ngờ gì cả. Lớp WMI có mặt hoặc không.
lá cờ co
Vâng, tôi nghĩ rằng tôi có thể tự trả lời câu hỏi này vào ngày mai sau khi giải tỏa suy nghĩ và thu thập một số dữ liệu trên các hệ thống khác...
Điểm:0
lá cờ co

Vì vậy, nói chung, nếu bạn nhận được một CmdletizationQuery_NotFound lỗi, không phải lúc nào cũng có thông tin về trường lỗi nếu có nhiều trường trong truy vấn...

â sig-windows-dev-tools git:(antrea-node-ip-hardcoding) â lang thang winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 123 "
Không tìm thấy đối tượng MSFT_NetRoute nào có thuộc tính 'InterfaceIndex' bằng '123'. Xác minh giá trị của thuộc tính và thử lại.
Tại dòng:1 ký tự:1
+ Get-NetRoute -Interface Index 123
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (123:UInt32) [Get-NetRoute], CimJobException
    + FullQualifiedErrorId : CmdletizationQuery_NotFound_InterfaceIndex,Get-NetRoute

Đó là do truy vấn CIM cụ thể không thành công và do đó không tìm thấy đối tượng bạn đang tìm kiếm.

Tuy nhiên, có vẻ như đôi khi một truy vấn CIMS sẽ không trả về kết quả mà không cung cấp cho bạn phần cụ thể của truy vấn không thành công (tức là CmdletizationQuery_NotFound_InterfaceIndex ở trên rất hay và dễ đọc, nhưng cùng một truy vấn bên dưới khi chúng tôi thêm tiền tố đích trường tìm kiếm, đưa ra thông báo lỗi khó hiểu hơn)...

â sig-windows-dev-tools git:(antrea-node-ip-hardcoding) â lang thang winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 7 -DestinationPrefix 0.0.0.0/1 "
Không tìm thấy đối tượng MSFT_NetRoute phù hợp nào bằng truy vấn CIM đối với các phiên bản của lớp ROOT/StandardCimv2/MSFT_NetRoute trên máy chủ CIM: CHỌN * TỪ MSFT_NetRoute WHERE ((DestinationPrefix LIKE '0.0.0.0/1')) AND ((InterfaceIndex = 7)). Xác minh tham số truy vấn và thử lại.
Tại dòng:1 ký tự:1
+ Get-NetRoute -Interface Index 7 -DestinationPrefix 0.0.0.0/1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullQualifiedErrorId : CmdletizationQuery_NotFound,Get-NetRoute

Trong trường hợp cụ thể này:

  • không có giao diện IP hiện có với id = 26 CŨNG có tiền tố đích 0.0.0.0/0

Trong các trường hợp tổng quát hơn, nếu bạn gặp lỗi tương tự, có thể do bạn vừa tạo một truy vấn CIMS không thể trả về bất kỳ dữ liệu nào.

Bây giờ, vì câu hỏi ban đầu liên quan đến nhà cung cấp Kubernetes CNI, nên tôi sẽ giải quyết phần đó:

Trong Kubernetes trên Windows

Các nhà cung cấp CNI như antrea cần thông tin này khi trực tuyến và điều chung cần đảm bảo là kubelet windows của bạn đang đặt địa chỉ IP chính xác (tức là thông qua trường nút-ip khi khởi động).

Trong trường hợp của tôi, tôi nhận thấy rằng sau khi thiết lập điều này, truy vấn này đã được tạo chính xác và nó bắt đầu xem đúng giao diện cho giá trị này (tức là giao diện tương ứng với địa chỉ IP nội bộ của Nút của tôi).

Nói chung, có một câu hỏi rộng hơn về cách thiết lập DestinationPrefixes trong máy ảo cửa sổ Kubernetes, nhưng điều đó nằm ngoài phạm vi câu hỏi ban đầu của tôi, nhưng nói chung, nếu bạn đã thiết lập mạng của mình một cách chính xác như sau:

  • của bạn nút-ip như được hiển thị bởi kubectl nhận các nút -o rộng là cái chính xác mà bạn muốn cho windows kubelet của mình và
  • điều đó nút-ip được liên kết với một giao diện có tiền tố đích Địa chỉ IP = 0.0.0.0/0

Sau đó, cụ thể là nhà cung cấp CNI antrea sẽ có thể xác định chính xác tiếp theoHop cho cổng của nó, cuối cùng được sử dụng để định cấu hình quy tắc định tuyến OVS trên một nút cho mạng nhóm của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.