Score:1

ฉันจะดีบัก Microsoft CIM ที่ล้มเหลวเนื่องจาก MSFT_NetRoute เป็น "ไม่พบ" ได้อย่างไร

ธง co

โดยทั่วไป เราควรดีบักความล้มเหลวที่เกี่ยวข้องกับ CmdletizationQuery_NotFound ข้อความ และเหตุใดการสืบค้นตาม MSFT_NetRoute จึงลงทะเบียนข้อผิดพลาดดังกล่าว

รายละเอียด

ผู้ให้บริการ Kubernetes CNI (antrea) ของฉันกำลังโพสต์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับ MSFT_NetRoute เมื่อเริ่มต้นขึ้น เนื่องจากไม่สามารถเรียกใช้แบบสอบถาม PowerShell ที่จำเป็นสำหรับการบู๊ตสแตรปได้สำเร็จ ข้อความแสดงข้อผิดพลาดมีสตริงที่น่าสงสัย ซึ่ง:

  • อาจเกี่ยวข้องกับรุ่น PowerShell (ฉันไม่ยืนยันในภายหลังในโพสต์นี้ แต่เป็นสมมติฐานที่สมเหตุสมผล)
  • ฉันกำลังพิจารณาด้วยว่าข้อผิดพลาดนี้อาจมาจากสิ่งภายนอกที่ฉันยังไม่ได้ติดตั้ง ...
  • สุดท้าย หากไม่เข้าใจธรรมชาติของข้อความแสดงข้อผิดพลาด cmdletizationQuery อย่างถ่องแท้ มีเหตุผลที่จะถือว่าสิ่งนี้เกี่ยวข้องกับปัญหาการตั้งค่าเครือข่ายระดับล่าง
   + FullyQualifiedErrorId : CmdletizationQuery_NotFound, Get-NetRoute

ตัวอย่างข้างต้นของข้อความนี้เน้นที่ รับ NetRoute ข้อผิดพลาดที่เกี่ยวข้องซึ่งเกิดขึ้นด้านล่าง ซึ่งทำให้งง เพราะดูเหมือนว่าจะบ่งชี้ว่า รับ NetRoute ไม่ใช่แบบสอบถามที่ถูกต้องในการเรียกใช้ แต่ https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netroute?view=windowsserver2019-ps ดูเหมือนจะบอกเป็นนัยว่า Get-NetRoute มีให้ใช้งานตามค่าเริ่มต้นใน PowerShell

ข้อความแสดงข้อผิดพลาด

คลาส ROOT/StandardCimv2/MSFT_NetRoute บนเซิร์ฟเวอร์ CIM: SELECT * FROM MSFT_NetRoute WHERE ((DestinationPrefix LIKE
'0.0.0.0/0')) และ ((InterfaceIndex = 26)) ตรวจสอบพารามิเตอร์การค้นหาแล้วลองอีกครั้ง
ที่บรรทัด:1 ตัวอักษร:3
+ $(Get-NetRoute -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0 ).ต่อไป ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound, Get-NetRoute

รุ่น PowerShell

เวอร์ชันของ PowerShell ในเครื่องนี้ดูค่อนข้างเป็นปัจจุบันแล้ว... (ฉันคิดว่า 5.1 เป็นเรื่องปกติบนเซิร์ฟเวอร์ windows 2019)...

ชื่อ ค่า
---- -----
PS เวอร์ชัน 5.1.17763.1852
PSEdition เดสก์ท็อป
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
รุ่นบิลด์ 10.0.17763.1852
CLRเวอร์ชัน 4.0.30319.42000
WSManStackเวอร์ชัน 3.0
PSRemotingProtocol เวอร์ชัน 2.3
การทำให้เป็นอนุกรมเวอร์ชัน 1.1.0.1

หมายเหตุ: ฉันได้ทดสอบสิ่งนี้ใน windows server 2019 รุ่นที่คล้ายกันโดยใช้ powershell รุ่น 5.1.x ที่คล้ายกัน (5.1.17763.1490) และไม่พบความล้มเหลวนี้ ดังนั้น,

คำถาม

  • มีบางอย่างที่ฉันต้องทำ รับ NetRoute ทำงานอย่างถูกต้องบนเครื่องของฉัน?
  • สิ่งนี้เกี่ยวข้องกับสิ่งอื่นหรือไม่ (เช่นวิธีการกำหนดค่าอินเทอร์เฟซเครือข่ายบน VM แต่ละตัว) โปรดทราบว่านี่คือ VirtualBox VM ดังนั้นหากมีปัญหาเกี่ยวกับเครือข่ายบริดจ์หรือ NAT ฉันจะไม่ตกใจเลย
JosefZ avatar
th flag
`Get-NetRoute` ทำงานเลยหรือไม่ และ `Get-NetRoute -DestinationPrefix 0.0.0.0/0` แสดง `26` ในคอลัมน์ `ifIndex` หรือไม่
cn flag
มันอยู่ในข้อความแสดงข้อผิดพลาด ไม่มี MSFT_NetRoute คุณสามารถตรวจสอบได้โดยดำเนินการค้นหา WMI กับเนมสเปซ/พาธ
co flag
ใช่ ฉันเล่นกับสิ่งนี้มากขึ้นและยืนยันว่า: Get-NetRoute ทำงาน...
co flag
ฉันสงสัยว่ามันเป็นไปตามที่กล่าวไว้ว่า MSFT_NETROUTE หายไป แต่ไม่แน่ใจว่าวัตถุ MSFT_NETROUTE เฉพาะนั้นมี -InterfaceIndex 26 -DestinationPrefix 0.0.0.0/0 ไม่มีอยู่จริง... ฉันสงสัยว่าเป็นเพราะที่อยู่อินเทอร์เฟซ 26 ไม่มีปลายทาง 0.0.0.0/0 ผู้ให้บริการ CNI ของฉันคาดหวังสิ่งนี้ .. ดังนั้นอินเทอร์เฟซ 26 ที่กำลังสอบถามอาจไม่ใช่อินเทอร์เฟซที่ถูกต้อง
cn flag
อันนี้ยืนยันง่ายไม่ต้องสงสัยอะไร คลาส WMI มีอยู่หรือไม่
co flag
ใช่ ฉันคิดว่าฉันสามารถตอบคำถามนี้ได้ด้วยตนเองในวันพรุ่งนี้เมื่อฉันเคลียร์ความคิดของฉันและรวบรวมข้อมูลบางอย่างในระบบอื่น...
Score:0
ธง co

โดยทั่วไปแล้ว หากคุณได้รับ CmdletizationQuery_NotFound อาจไม่มีข้อมูลเกี่ยวกับฟิลด์ที่ล้มเหลวเสมอไป หากมีหลายฟิลด์ในแบบสอบถาม...

â sig-windows-dev-tools git:(antrea-node-ip-hardcoding) â vagrant winrm winw1 --shell=powershell --command="Get-NetRoute -InterfaceIndex 123 "
ไม่พบวัตถุ MSFT_NetRoute ที่มีคุณสมบัติ 'InterfaceIndex' เท่ากับ '123' ตรวจสอบค่าของคุณสมบัติและลองอีกครั้ง
ที่บรรทัด:1 ตัวอักษร:1
+ รับ NetRoute -InterfaceIndex 123
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (123:UInt32) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_InterfaceIndex,Get-NetRoute

เป็นเพราะแบบสอบถาม CIMs เฉพาะล้มเหลว ดังนั้นจึงไม่พบวัตถุที่คุณกำลังมองหา

อย่างไรก็ตามปรากฏว่า บางครั้งแบบสอบถาม CIMS จะไม่สามารถส่งคืนผลลัพธ์ได้ โดยไม่แจ้งส่วนเฉพาะของแบบสอบถามที่ล้มเหลว (เช่น CmdletizationQuery_NotFound_InterfaceIndex ด้านบนนั้นดีและอ่านง่าย แต่ข้อความค้นหาเดียวกันด้านล่างเมื่อเราเพิ่ม คำนำหน้าปลายทาง ช่องค้นหาให้ข้อความแสดงข้อผิดพลาดที่เป็นความลับมากขึ้น)...

â 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 "
ไม่พบวัตถุ MSFT_NetRoute ที่ตรงกันโดยแบบสอบถาม CIM สำหรับอินสแตนซ์ของคลาส ROOT/StandardCimv2/MSFT_NetRoute บนเซิร์ฟเวอร์ CIM: SELECT * FROM MSFT_NetRoute WHERE ((DestinationPrefix LIKE '0.0.0.0/1')) AND ((InterfaceIndex = 7)) ตรวจสอบพารามิเตอร์การค้นหาแล้วลองอีกครั้ง
ที่บรรทัด:1 ตัวอักษร:1
+ รับ NetRoute -InterfaceIndex 7 -DestinationPrefix 0.0.0.0/1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (MSFT_NetRoute:String) [Get-NetRoute], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound, Get-NetRoute

ในกรณีเฉพาะนี้:

  • ไม่มีอินเทอร์เฟซ IP ที่มี id = 26 ซึ่งยังมีคำนำหน้าปลายทาง 0.0.0.0/0

ในกรณีทั่วไป หากคุณได้รับข้อผิดพลาดที่คล้ายกัน อาจเกิดจากการที่คุณเพิ่งสร้างแบบสอบถาม CIMS ที่ไม่สามารถส่งคืนข้อมูลใด ๆ.

ตอนนี้ เนื่องจากคำถามเดิมเกี่ยวข้องกับผู้ให้บริการ Kubernetes CNI ฉันจะกล่าวถึงส่วนนั้น:

ใน Kubernetes บน Windows

ผู้ให้บริการ CNI เช่น antrea ต้องการข้อมูลนี้เมื่อออนไลน์ และสิ่งทั่วไปที่ต้องแน่ใจคือข้อเท็จจริงที่ว่า windows kubelet ของคุณตั้งค่าที่อยู่ IP อย่างถูกต้อง (เช่น ผ่านฟิลด์ node-ip เมื่อเริ่มต้น)

ในกรณีของฉัน ฉันพบว่าหลังจากตั้งค่านี้ ข้อความค้นหานี้ถูกสร้างขึ้นอย่างถูกต้อง และเริ่มมองหาอินเทอร์เฟซที่ถูกต้องสำหรับค่านี้ (เช่น ค่าที่ตรงกับที่อยู่ IP ภายในของโหนดของฉัน)

มีคำถามกว้างๆ ว่าโดยทั่วไปแล้วควรตั้งค่า DestinationPrefixes ใน Kubernetes windows VMs อย่างไร แต่นั่นอยู่นอกขอบเขตของคำถามเดิมของฉัน แต่โดยทั่วไป หากคุณตั้งค่าเครือข่ายอย่างถูกต้อง เช่น:

  • ของคุณ โหนดไอพี ที่แสดงโดย kubectl รับโหนด -o กว้าง เป็นสิ่งที่ถูกต้องที่คุณต้องการสำหรับ windows kubelet และ
  • นั่น โหนดไอพี เชื่อมโยงกับอินเทอร์เฟซซึ่งมีที่อยู่ IP คำนำหน้าปลายทาง = 0.0.0.0/0

จากนั้นผู้ให้บริการ antrea CNI โดยเฉพาะจะสามารถระบุได้อย่างถูกต้อง ถัดไปHop สำหรับเกตเวย์ ซึ่งท้ายที่สุดจะใช้เพื่อกำหนดค่ากฎการกำหนดเส้นทาง OVS บนโหนดสำหรับเครือข่ายพ็อดของคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา