Puncte:1

Cum ar trebui să depanez un Microsoft CIM care eșuează deoarece MSFT_NetRoute este „negăsit”?

drapel co

În general, cum ar trebui să depanați o defecțiune legată de CmdletizationQuery_NotFound mesaje și de ce interogările bazate pe MSFT_NetRoute ar înregistra o astfel de eroare?

Detalii

Mai exact, furnizorul meu Kubernetes CNI (antrea) postează un mesaj de eroare legat de MSFT_NetRoute când pornește, deoarece nu poate rula cu succes o interogare powershell necesară pentru bootstrapping-ul în sine. Mesajul de eroare are un șir suspect, care:

  • Ar putea fi legat de versiunea Powershell (am deconfirmat mai târziu în această postare, dar este o ipoteză rezonabilă)
  • De asemenea, consider că poate această eroare a venit de la lucruri externe pe care nu le-am instalat...
  • În cele din urmă, fără a înțelege pe deplin natura mesajelor de eroare cmdletizationQuery, este rezonabil să presupunem că acest lucru este legat de o problemă de configurare a rețelei de nivel inferior.
   + FullyQualifiedErrorId: CmdletizationQuery_NotFound, Get-NetRoute

Fragmentul de mai sus al acestui mesaj evidențiază Get-NetRoute Eroare asociată care apare mai jos, ceea ce este derutant deoarece pare să indice asta Get-NetRoute nu este o interogare validă de rulat. Dar https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netroute?view=windowsserver2019-ps pare să implice faptul că Get-NetRoute este disponibil implicit în powershell.

Mesajul de eroare

Clasa ROOT/StandardCimv2/MSFT_NetRoute pe serverul CIM: SELECT * FROM MSFT_NetRoute WHERE ((DestinationPrefix LIKE
'0.0.0.0/0')) ȘI ((InterfaceIndex = 26)). Verificați parametrii de interogare și încercați din nou.
La linia:1 char:3
+ $(Get-NetRoute -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0 ).Următorul...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
    + CategoryInfo: ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId: CmdletizationQuery_NotFound, Get-NetRoute

Versiunea Powershell

Versiunea powershell de pe această mașină este aparent destul de actualizată... (5.1 cred că este normală pe Windows Server 2019)...

Nume Valoare
---- -----
PSVersiunea 5.1.17763.1852
Desktop PSEdition
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.1852
CLRVersiunea 4.0.30319.42000
WSManStackVersiunea 3.0
PSRemotingProtocolVersion 2.3
SerializareVersiunea 1.1.0.1

Notă: am testat acest lucru în versiuni similare ale Windows Server 2019 cu o versiune similară 5.1.x powershell (5.1.17763.1490) și nu am văzut acest eșec. Asa de,

Întrebări

  • trebuie să fac ceva pentru a face Get-NetRoute funcționează corect pe mașinile mele?
  • este legat de altceva (adică felul în care interfețele de rețea sunt configurate pe VM individual)? Rețineți că acesta este un VirtualBox VM, așa că dacă a existat o problemă cu rețeaua bridge sau NAT, nu aș fi total șocat.
JosefZ avatar
drapel th
`Get-NetRoute` rulează deloc? Și `Get-NetRoute -DestinationPrefix 0.0.0.0/0` arată `26` în coloana `ifIndex`?
drapel cn
Este în mesajul de eroare. MSFT_NetRoute nu este prezent. Puteți valida acest lucru efectuând o interogare WMI împotriva spațiului de nume/cale.
drapel co
da, m-am jucat mai mult cu asta și am confirmat: Get-NetRoute funcționează...
drapel co
Bănuiesc că este pur și simplu așa cum s-a menționat că MSFT_NETROUTE lipsește, dar nu sunt sigur, acel obiect MSFT_NETROUTE specific care are -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0. nu există... bănuiesc că acest lucru se datorează faptului că adresa interfeței 26 nu are o destinație 0.0.0.0/0. Furnizorul meu CNI se așteaptă la asta... deci poate că interfața 26 care este interogată nu este cea potrivită
drapel cn
Acest lucru este ușor de confirmat, nu trebuie să bănuiți nimic. Clasa WMI este fie prezentă, fie nu.
drapel co
Da, cred că pot răspunde singur la această întrebare mâine, odată ce îmi clarific gândurile și colectez câteva date despre alte sisteme...
Puncte:0
drapel co

Deci, în general, dacă obțineți un CmdletizationQuery_NotFound eroare, este posibil să nu fie întotdeauna însoțită de informații despre câmpul eșuat dacă există multe câmpuri în interogare...

â sig-windows-dev-tools git:(antrea-node-ip-hardcoding) â vagabond winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 123 "
Nu s-au găsit obiecte MSFT_NetRoute cu proprietatea „InterfaceIndex” egală cu „123”. Verificați valoarea proprietății și încercați din nou.
La linia:1 char:1
+ Get-NetRoute -InterfaceIndex 123
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo: ObjectNotFound: (123:UInt32) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId: CmdletizationQuery_NotFound_InterfaceIndex, Get-NetRoute

Se datorează faptului că interogarea CIM-urilor specifice a eșuat și, astfel, obiectul pe care îl căutați nu a fost găsit.

Cu toate acestea, se pare că uneori, o interogare CIMS nu va returna un rezultat fără a vă oferi partea specifică a interogării care a eșuat (de ex. CmdletizationQuery_NotFound_InterfaceIndex de mai sus a fost frumos și ușor de citit, dar aceeași interogare de mai jos când adăugăm DestinationPrefix câmpul de căutare, oferă un mesaj de eroare mai criptic)...

â 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 "
Nu s-au găsit obiecte MSFT_NetRoute potrivite de interogarea CIM pentru instanțe ale clasei ROOT/StandardCimv2/MSFT_NetRoute pe serverul CIM: SELECT * FROM MSFT_NetRoute WHERE ((DestinationPrefix LIKE '0.0.0.0/1')) AND ((InterfaceIndex = 7)). Verificați parametrii de interogare și încercați din nou.
La linia: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

În acest caz specific:

  • nu a existat o interfață IP existentă cu id = 26 care avea, DE asemenea, prefixul de destinație 0.0.0.0/0

În cazuri mai generale, dacă primiți o eroare similară, ar putea fi cauzat de faptul că tocmai creați o interogare CIMS care nu poate returna date.

Acum, deoarece întrebarea inițială era legată de un furnizor Kubernetes CNI, voi aborda acea parte:

În Kubernetes pe Windows

Furnizorii CNI, cum ar fi antrea, au nevoie de aceste informații atunci când intră online, iar lucrul general de care trebuie să vă asigurați este faptul că Windows Kubelet își setează corect adresa IP (adică prin câmpul node-ip la pornire).

În cazul meu, am constatat că după setarea asta, această interogare a fost generată corect și a început să caute interfața potrivită pentru această valoare (adică cea care corespundea adresei IP interne a Nodului meu).

Există întrebarea mai amplă despre cum, în general, DestinationPrefixes ar trebui să fie configurate în mașinile virtuale Kubernetes Windows, dar aceasta este în afara domeniului de aplicare al întrebării mele inițiale, dar, în general, dacă ați configurat corect rețeaua astfel încât:

  • ta nod-ip după cum arată kubectl obține noduri -o lățime este cea corectă pe care o doriți pentru Windows Kubelet și
  • acea nod-ip este asociat cu o interfață care are o adresă IP de prefix de destinație = 0.0.0.0/0

Apoi, în mod specific, furnizorul antrea CNI va putea determina cu exactitate corect următorul pas pentru gateway-ul său, care în cele din urmă este folosit pentru a configura regulile de rutare OVS pe un nod pentru rețelele dumneavoastră de pod.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.