Score:0

Kubernetes CNI เชื่อมต่อเราเตอร์แบบลอจิคัลระหว่าง MACVLAN ที่แตกต่างกัน (เครือข่ายย่อยที่แตกต่างกัน) ได้หรือไม่

ธง in

ขณะนี้ฉันได้สำรวจ Multus CNI สำหรับโครงการทดลองของฉันเกี่ยวกับการโยกย้าย Virtual Machine หรือบางแอปพลิเคชันที่เราไม่ต้องการ (ไม่สามารถเปลี่ยนซอร์สโค้ด) เกี่ยวกับที่อยู่ IP ดังนั้นฉันจึงมีข้อจำกัดที่จะท้าทายว่าฉัน ต้องใช้ IP คงที่ ปัจจุบันฉันประสบความสำเร็จในการใช้ Multus กับ Pod ที่มี IP รองผ่าน MacVLAN ข้าม Node ใน Kubernetes ของฉันแล้ว ฉันมีสองเครือข่ายย่อย 192.168.15.0/24 (โซนสาธารณะ) และ 192.168.16.0/24(โซนส่วนตัว) สำหรับแต่ละ IP ที่อยู่ในโซน (ซับเน็ต) ของตนสามารถเชื่อมต่อระหว่าง Kubernetes Node ได้สำเร็จ ผู้ปฏิบัติงาน A มีพ็อด 192.168.15.10 สามารถ ping ไปที่ ผู้ปฏิบัติงาน B มีพ็อด 192.168.15.11 เพราะเป็นเครือข่ายย่อยเดียวกัน (MACVLAN เดียวกัน)

**แต่ผมต้องการให้ Pod ที่มี MACVLAN ต่างกัน (คนละ Subnet) เชื่อมต่อกันได้ ** แบบนี้ครับ ผู้ปฏิบัติงาน A มีพ็อด 192.168.15.10 สามารถ ping ไปที่ ผู้ปฏิบัติงาน B มีพ็อด 192.168.16.10 (เครือข่ายย่อยสาธารณะเชื่อมต่อกับโซนเครือข่ายย่อยที่ปลอดภัย)

ในแนวคิดเครือข่ายปกติเราจะต้อง เราเตอร์ ขวา ? เพราะตอนนี้โทโพโลยีของผมก็จะคล้ายๆ ภาพนี้ เครดิต: https://www.practicalnetworking.net/stand-alone/routing-between-vlans/

ภาพตัวอย่าง Logical Switch เมื่อใช้ VLAN

ดังที่เราเห็นในภาพ ขณะนี้เรามีเครือข่ายย่อยที่แตกต่างกัน และไม่มีสายเคเบิลเชื่อมต่อระหว่างสวิตช์ ดังนั้นจึงไม่สามารถกำหนดเส้นทาง/เชื่อมต่อได้ ฉันจะสร้างลอจิคัลเราเตอร์เพื่อให้ความพยายามนี้สำเร็จได้อย่างไร เป็นไปได้ไหม ? หรือฉันเข้าใจผิดในแนวคิดการออกแบบ Networking/Kubernetes ?

ในรูปนี้จะเห็นว่าฝักที่ติดกับ ส่วนต่อประสานเครือข่ายย่อยสาธารณะ สามารถ ping/เชื่อมต่อกันข้าม Kubernetes Node ได้แล้วเนื่องจาก แมคแวล แต่ถ้าฉันใช้บริดจ์จะต้องให้ทั้งคู่อยู่ในโฮสต์เดียวกัน

รูปภาพของ Pod และ Network Interface ของฉัน

ฉันต้องการลองทำสิ่งนี้เพราะฉันต้องการจำลองโทโพโลยีเครือข่ายที่คล้ายกับ Virtual Machine ภายในองค์กร เพื่อให้ฉันสามารถมี Migrate Virtual Machine แบบอัตโนมัติไปยัง Kubernetes ได้โดยไม่ต้องเปลี่ยนรหัสใดๆ (ตอนนี้ฉันได้สำรวจ KubeVirt ด้วย) แต่ในบริบทของฉัน ฉันไม่มีโซลูชันระดับองค์กรอย่าง ESXI หรืออะไรทำนองนั้น เพียงแค่สแนปช็อต Virtual Machine และอัปโหลดไปยัง Kubernetes โดยใช้ KubeVirt เท่านั้น ดังนั้น Network Topology จึงเป็นรากฐานของการทดลองย้ายข้อมูลนี้

ขอบคุณมากสำหรับการตอบกลับความคิดใด ๆ / ความช่วยเหลือล่วงหน้า :)

นี่คือตัวอย่างของฉัน ตัวอย่าง NetworkAttachmentDefinition ของฉัน

รุ่น api: k8s.cni.cncf.io/v1
ประเภท: NetworkAttachmentDefinition
ข้อมูลเมตา:
  ชื่อ: macvlan-สาธารณะ
  เนมสเปซ: บริษัทดั้งเดิม
ข้อมูลจำเพาะ:
  การกำหนดค่า: >-
    { 
      "cniVersion": "0.3.1", 
      "ประเภท": "macvlan", 
      "สะพาน": "macvlan-public-zone", 
      "ไอแพม": {
        "ประเภท": "โฮสต์ท้องถิ่น", 
        "เครือข่ายย่อย": "192.168.15.0/24", 
        "rangeStart": "192.168.15.10", 
        "ช่วงสิ้นสุด": "192.168.15.200" 
        } 
    }
---
รุ่น api: k8s.cni.cncf.io/v1
ประเภท: NetworkAttachmentDefinition
ข้อมูลเมตา:
  ชื่อ: macvlan-secure
  เนมสเปซ: บริษัทดั้งเดิม
ข้อมูลจำเพาะ:
  การกำหนดค่า: >-
    { 
      "cniVersion": "0.3.1", 
      "ประเภท": "macvlan", 
      "บริดจ์": "macvlan-secure-zone", 
      "ไอแพม": {
        "ประเภท": "โฮสต์ท้องถิ่น", 
        "เครือข่ายย่อย": "192.168.16.0/24", 
        "rangeStart": "192.168.16.10", 
        "ช่วงสิ้นสุด": "192.168.16.200" 
        } 
    }
---

ตัวอย่าง Pod ที่มีอินเทอร์เฟซเครือข่ายรอง Multus

ประเภท: การปรับใช้
apiVersion: แอป/v1
ข้อมูลเมตา:
  ชื่อ: สะพานสาธารณะ
  ป้ายกำกับ:
    แอป: สะพานสาธารณะ
ข้อมูลจำเพาะ:
  แบบจำลอง: 1
  ตัวเลือก:
    ป้ายกำกับการแข่งขัน:
      แอป: สะพานสาธารณะ
  แม่แบบ:
    ข้อมูลเมตา:
      ป้ายกำกับ:
        แอป: สะพานสาธารณะ
      คำอธิบายประกอบ:
        k8s.v1.cni.cncf.io/networks: '[
                { "ชื่อ": "macvlan-สาธารณะ"}]'
    ข้อมูลจำเพาะ:
      ตัวเลือกโหนด:
        kubernetes.io/ชื่อโฮสต์: 10.111.147.164 
      serviceAccountName: ค่าเริ่มต้น
      ตู้คอนเทนเนอร์:
        - ชื่อสะพานสาธารณะ
          รูปภาพ: "quay.io/linxianer12/nettool:0.0.4"
          imagePullPolicy: เสมอ
          บริบทความปลอดภัย:
            ความสามารถ:
              เพิ่ม:
                - "NET_RAW"
      นโยบายรีสตาร์ท: เสมอ
      การสิ้นสุดGracePeriodวินาที: 30
      นโยบาย DNS: ClusterFirst
---
ประเภท: การปรับใช้
apiVersion: แอป/v1
ข้อมูลเมตา:
  ชื่อ: สะพานที่ปลอดภัย
  ป้ายกำกับ:
    แอป: สะพานที่ปลอดภัย
ข้อมูลจำเพาะ:
  แบบจำลอง: 1
  ตัวเลือก:
    ป้ายกำกับการแข่งขัน:
      แอป: สะพานที่ปลอดภัย
  แม่แบบ:
    ข้อมูลเมตา:
      ป้ายกำกับ:
        แอป: สะพานที่ปลอดภัย
      คำอธิบายประกอบ:
        k8s.v1.cni.cncf.io/networks: '[
                { "ชื่อ": "macvlan-secure"}]'
    ข้อมูลจำเพาะ:
      serviceAccountName: ค่าเริ่มต้น
      ตู้คอนเทนเนอร์:
        - ชื่อ: สะพานที่ปลอดภัย
          รูปภาพ: "quay.io/linxianer12/nettool:0.0.4"
          imagePullPolicy: เสมอ
          บริบทความปลอดภัย:
            ความสามารถ:
              เพิ่ม:
                - "NET_RAW"

โพสต์คำตอบ

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