Score:0

พ็อด AWS EKS kubernetes ได้รับการตอบกลับว่างเปล่าเมื่อเรียก Ingress URL ด้วยพ็อดในโหนดเดียวกัน

ธง us

บริบท:

ฉันเพิ่งพบปัญหาที่ kubernetes pod (blackbox-exporter) จะได้รับการตอบกลับที่ว่างเปล่าเมื่อใดก็ตามที่พยายามเรียก Ingress URL ของ pod ที่อยู่ในโหนดเดียวกับตัวมันเอง สิ่งนี้สะท้อนให้เห็นว่าเป็นโพรบที่ล้มเหลวเป็นระยะบนแดชบอร์ด

ตัวควบคุมขาเข้าที่ใช้คือ ingress-nginx และอยู่ด้านหลัง AWS NLB

ตัวอย่าง:

โหนด 1: 192.168.20.2

โหนด 2: 192.168.20.3

โหนด 3: 192.166.20.4

blackbox-exporter (ปรับใช้ใน node1 พร้อม clusterIP 10.244.2.21)

foo-pod (ปรับใช้ใน node1 พร้อม clusterIP 10.244.2.22)

foo-pod (ปรับใช้ใน node2 พร้อม clusterIP 10.244.2.23)

foo-pod (ปรับใช้ใน node3 พร้อม clusterIP 10.244.2.24)

บันทึกตัวควบคุมขาเข้า:

192.168.20.3 - - [21/มิ.ย./2021:15:15:07 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

192.168.20.4 - - [21/มิ.ย./2021:15:16:00 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

192.168.20.3 - - [21/มิ.ย./2021:15:16:30 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

การติดตามบันทึกตัวควบคุมขาเข้าแสดงให้เห็นว่า "การตอบกลับว่างเปล่า" (การหมดเวลาหลังจาก 5 วินาที) จะเกิดขึ้นเฉพาะเมื่อพ็อดที่ทำให้การเรียก URL ขาเข้าถูกปรับใช้ในโหนดเดียวกับพ็อดเป้าหมายที่ควรจะตอบสนองต่อการโทรนั้น

ข้อสรุปถูกสร้างขึ้นจากข้อเท็จจริงที่ว่าเมื่อใดก็ตามที่ได้รับ "การตอบกลับที่ว่างเปล่า" จะไม่มีบันทึกที่มี IP ต้นทางตรงกับที่อยู่บนโหนด IP ที่ผู้ส่งออก blackbox อยู่ ในกรณีนี้ควรเป็น node1 192.168.20.2.

สงสัยว่าเกี่ยวข้องกับ IP ต้นทางที่ "ไม่ถูกต้อง" และเป็นผลให้พ็อดเป้าหมายไม่ทราบวิธีตอบกลับ ฉันจึงเปลี่ยนมาใช้ AWS Classic L7 LB และปัญหาได้รับการแก้ไขแล้ว

ตอนนี้บันทึกแสดง IP ต้นทางที่แทนที่ด้วย ClusterIP ของพ็อดจริง และการเรียกโพรบทั้งหมดจากผู้ส่งออกแบล็กบ็อกซ์ก็สำเร็จ

10.244.2.21 - - [21/มิ.ย./2021:15:15:07 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

10.244.2.21 - - [21/มิ.ย./2021:15:16:00 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

10.244.2.21 - - [21/มิ.ย./2021:15:16:30 +0000] "GET /metrics HTTP/1.1" 200 29973 "-" "curl/7.47.0" 90 0.005 [foo-pod] [] 10.32 .0.2:3000 30015 0.004 200 e39022b47e857cc48eb6a127a7b8ce24

ข้อมูลมากกว่านี้: เวอร์ชันคลัสเตอร์: AWS EKS v1.19

คำถาม:

ระบบเครือข่าย Linux/kubernetes ไม่ใช่จุดแข็งของฉัน ดังนั้นสิ่งที่ฉันอยากจะถามคือ เกิดอะไรขึ้นกันแน่

เหตุใดการเปลี่ยนมาใช้ตัวจัดสรรภาระงาน AWS Classic L7 จึงช่วยแก้ปัญหาได้

ส่วนประกอบอื่น ๆ (kubernetes หรือ linux) อาจส่งผลกระทบต่อสิ่งนี้ด้วยหรือไม่

โพสต์คำตอบ

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