Score:1

การกำหนดเส้นทาง Ubuntu 20.04 สำหรับ IP เดียว (ในซับเน็ตเดียวกัน) ลงท้ายด้วย "dev lo" แทน "dev eth0" โหนดผู้ปฏิบัติงาน kubernetes ไม่สามารถเชื่อมต่อกับโหนดหลัก

ธง fr

ฉันชนกับปัญหาการกำหนดเส้นทาง ฉันไม่สามารถเข้าถึงหนึ่งในโหนดผู้ปฏิบัติงานของฉัน (เซิร์ฟเวอร์) จากโหนดหลัก (เซิร์ฟเวอร์) ของฉันได้อีกต่อไป AFAIK ไม่มีส่วนเกี่ยวข้องกับ Kubernetes แต่นำไปสู่ปัญหาเครือข่าย Linux อย่างแท้จริง เนื่องจากปัญหาเกิดจาก IP เพียงรายการเดียว ฉันจึงแก้ปัญหา iptables, เปิดใช้งาน TRACE และตระหนักว่าแพ็กเก็ตที่เกิดขึ้นจริงนั้นมาจาก master (eth0), ไปที่ iptables (passes: raw > mangle >nat) แต่เมื่อต้องมีการกำหนดเส้นทางจาก nat ไปยัง ตัวกรองมันก็หายไป ตามที่ฉันเข้าใจนั่นคือจุดที่เคอร์เนลต้องทำการตัดสินใจกำหนดเส้นทางตรวจสอบการกำหนดเส้นทางและพบว่าไม่ทำงานสำหรับ IP นั้น (ส่วนอื่น ๆ ทั้งหมดจากส่วน IP เดียวกันทำงานได้ดี) !? เนื่องจากฉันทำงานกับผู้ให้บริการระบบคลาวด์ และไม่สามารถแก้ไขปัญหาเครือข่ายได้ ดังนั้นฉันจึงลองติดตั้งระบบปฏิบัติการใหม่ (Ubuntu 20.04 เดิม) ของโหนดหลัก (เซิร์ฟเวอร์) พบว่าเมื่อติดตั้ง OS ใหม่อีกครั้ง ปัญหาไม่ปรากฏ ดังนั้นปัญหาการกำหนดค่าต้องอยู่ภายในเซิร์ฟเวอร์ Linux หลักของฉัน (ฉันเปลี่ยนอิมเมจเซิร์ฟเวอร์กลับเป็นสแนปช็อต)

root@vmi57XXXX:~# เส้นทาง  
ตารางเส้นทางเคอร์เนล IP  
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะการอ้างอิงเมตริก ใช้ Iface  
gw.provider.net เริ่มต้น 0.0.0.0 UG 0 0 0 eth0  
10.244.0.0 0.0.0.0 255.255.255.0 คุณ 0 0 0 cni0  
10.244.1.0 10.244.1.0 255.255.255.0 UG 0 0 0 ผ้าสักหลาด.1  
172.17.0.0 0.0.0.0 255.255.0.0 คุณ 0 0 0 นักเทียบท่า 0  
root@vmi57XXXX:~# เส้นทาง ip รับ xx.xx.xx.96  
xx.xx.xx.96 ท้องถิ่น dev จริง src xx.xx.xx.96 uid 0   
    แคช <ท้องถิ่น>   
root@vmi57XXXX:~# เส้นทาง ip รับ xx.xx.xx.95  
xx.xx.xx.95 ผ่าน xx.xx.xx.1 dev eth0 src xx.xx.xx.95 uid 0   
    แคช  
root@vmi57XXXX:~# เส้นทาง ip รับ xx.xx.xx.97  
xx.xx.xx.97 ผ่าน xx.xx.xx.1 dev eth0 src xx.xx.xx.97 uid 0   
    แคช   
  
root@vmi57XXXX:~# arp -v  
ที่อยู่ HWtype HWaddress Flags Mask Iface  
10.244.0.60 อีเธอร์ 8a:94:de:43:b6:0f C cni0  
10.244.0.63 อีเธอร์ 1e:76:6a:60:27:f3 C cni0  
10.244.0.62 อีเธอร์ 36:0b:19:5e:57:87 C cni0  
gw.provider.net อีเธอร์ 00:c0:1d:c0:ff:ee C eth0  
10.244.0.64 อีเธอร์ 82:03:61:c5:4d:fb C cni0  
10.244.0.50 (ไม่สมบูรณ์) cni0  
10.244.1.0 อีเธอร์ 52:3d:a5:f4:c2:2c CM สักหลาด.1  
10.244.0.61 อีเธอร์ 56:19:98:79:a1:3a C cni0  
รายการ: 8 ข้าม: 0 พบ: 8  

root@vmi57XXXX:~# ip netconf แสดง dev eth0
การส่งต่อ inet eth0 บน rp_filter ปิด mc_forwarding ปิด proxy_neigh 
เพิกเฉย_routes_with_linkdown ปิด 
inet6 eth0 ส่งต่อปิด mc_forwarding ปิด proxy_neigh 
เพิกเฉย_routes_with_linkdown ปิด 

เบาะแสใด ๆ เกี่ยวกับสิ่งที่เกิดขึ้นที่นั่นยินดีต้อนรับมากกว่า !!!

ขอบคุณ

แก้ไข: หลังจากแก้ไขปัญหาแล้ว ควรสังเกตว่าพฤติกรรมนี้เกิดขึ้นกับ Kubernetes 1.21.2-00 และ flannel เป็น CNI ฉันทำการอัปเกรดเมื่อไม่กี่สัปดาห์ก่อน และนี่เป็นการรีสตาร์ทโหนดผู้ปฏิบัติงานหนึ่งโหนดเป็นครั้งแรกหลังจากการอัปเกรด

Score:1
ธง fr

แก้ไขแล้ว!

คนเลวคือ Kubernetes จริง ๆ - มันตั้งค่าเส้นทาง L O C A L บนโหนดหลักที่ไม่สามารถทำงานได้หากไม่มีบริการเครือข่ายที่ใช้งานได้ของ Kubernetes (ผ้าสักหลาด - ในกรณีของฉัน)ดังนั้นเมื่อโหนดผู้ปฏิบัติงานได้รับการรีบูต จึงไม่สามารถเข้าถึงบริการ API ของโหนดหลัก (6443/tcp) ได้อีกต่อไป และไม่สามารถนำเสนอตัวเองกับ API ได้ ซึ่งเป็นวงเวทย์มนตร์ที่ปิดซึ่งโหนด Waker วนลูปโดยไม่มีโชค

วันนี้ฉันได้เรียนรู้เกี่ยวกับเส้นทาง "ท้องถิ่น" ที่ดูแลโดยเคอร์เนล (สามารถดูตารางเส้นทางปัจจุบันทั้งหมดได้ที่นี่: /etc/iproute2/rt_tables)

เส้นทาง ip ls ตารางในเครื่อง
local xx.xx.xx.96 dev kube-ipvs0 proto kernel scope host src xx.xx.xx.96 <<< PROBLEMATIC
local xx.xx.xx.50 dev eth0 proto kernel scope host src xx.xx.xx.50 <<< เช่นตกลง

ลบเส้นทาง

เส้นทาง ip เดลตารางโลคัล xx.xx.xx.96 dev kube-ipvs0 โปรโตเคอร์เนลขอบเขตโฮสต์ src xx.xx.xx.96

และตอนนี้มันใช้งานได้

root@vmi57XXXX:~# เส้นทาง ip รับ xx.xx.xx.96
xx.xx.xx.96 ผ่าน xx.xx.xx.1 dev eth0 src xx.xx.xx.50 uid 0 
    แคช
Martin avatar
kz flag
ไปข้างหน้าและยอมรับคำตอบของคุณเอง ทำได้ดีนี่! ฉันไม่เคยรู้ว่ามีตารางเส้นทางที่ไม่แสดงโดยใช้คำสั่งเส้นทาง "เก่า" ...
Marsplay avatar
fr flag
ต้องใช้เวลาสองวันหนึ่งคืนที่อดหลับอดนอนเพื่อค้นหาสิ่งนั้น ฉันไม่แน่ใจว่าฉันกำลังมองหาอะไรกันแน่ และกูเกิลก็ไม่ได้ช่วยอะไรเลย เพื่อช่วยเหลือผู้อื่น ฉันได้เพิ่ม kubernetes ในชื่อปัญหา เนื่องจากอาจมีผู้คนอีกมากมายที่ประสบปัญหาเดียวกัน และกว่าจะยอมรับคำตอบของตัวเองก็ใช้เวลาสองวัน นั่นคือสิ่งที่กฎของระบบบอกไว้ :)

โพสต์คำตอบ

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