Score:1

VMWare Workstation และ Windows 10: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่โฮสต์บน VM

ธง cn

ฉันมีคลัสเตอร์ Kubernetes 2 โหนดส่วนตัวที่กำหนดค่าบน VMWare Workstation 15 ฉันใช้ MetalLB และ Calico บริการทางเข้าและทางเข้ามีลักษณะดังนี้:

xxx@c1-cp1:~/Desktop$ kubectl รับ svc -n ingress-controller-2
ประเภทชื่อ CLUSTER-IP EXTERNAL-IP PORT(S) อายุ
wsnginx-ingress-nginx-controller LoadBalancer 10.109.117.222 192.168.44.136 80:30167/TCP,443:30680/TCP 24 ชม.
wsnginx-ingress-nginx-controller-admission ClusterIP 10.105.103.165 <ไม่มี> 443/TCP 24 ชม.
xxx@c1-cp1:~/Desktop$ kubectl รับ ing apollo-ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
apollo-เข้า wsnginx test.xxx.com 192.168.44.136 80 3h17m

ฉันใช้ Nat Network Adapter และ IPS แบบคงที่ ฉันได้กำหนดค่าการส่งต่อพอร์ตดังต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่

ขด -D- http://192.168.44.136 -H 'โฮสต์: test.xxx.com' จาก VM ส่งคืนสถานะ 200 แต่ฉันไม่สามารถจัดการเพื่อเข้าถึงได้จากเครื่องโฮสต์ Win10 บน 127.0.0.1:8080 เมื่อฉันได้รับ 404 ไม่พบ NGINX.

คุณช่วยฉันหน่อยได้ไหม ผมทำอะไรผิดหรือเปล่า? ฉันจะเปิดเผยมันในเครือข่ายส่วนตัวได้อย่างไร ขอขอบคุณ!


อัปเดต ฉันไม่แน่ใจว่าเป็นวิธีที่ถูกต้องหรือไม่ แต่ฉันจัดการเพื่อเชื่อมต่อจากเครื่องโฮสต์โดยเปลี่ยนทรัพยากร Ingress เล็กน้อย ฉันแสดงความคิดเห็นพารามิเตอร์โฮสต์เป็น

รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  ชื่อ: อพอลโลเข้า
ข้อมูลจำเพาะ:
  ingressClassName: wsnginx
  กฎ:
    #- โฮสต์: test.xxx.com
    - http:
        เส้นทาง:
          - แบ็กเอนด์:
              บริการ:
                ชื่อ: อพอลโล-เซอร์วิส
                ท่า: 
                  จำนวน: 80
            เส้นทาง: /
            pathType: คำนำหน้า

และตอนนี้ทางเข้าของฉันก็เป็นแบบนี้

NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
เริ่มต้น ingress.networking.k8s.io/apollo-ingress wsnginx * 192.168.44.136 80 3h31m

ดูเหมือนว่าตอนนี้ฉันสามารถเข้าถึงได้จากเครื่องโฮสต์ของฉันเช่นกัน ฉันมี Rest API ดังนั้นฉันเพิ่งเปิดจากเบราว์เซอร์ http://127.0.0.1:8080

in flag
สวัสดี Oana ยินดีต้อนรับสู่ S.F. คุณไม่ได้รวมคำสั่งทดสอบจริงสำหรับตัวอย่าง Win10 ของคุณ แต่เพื่อความชัดเจน: ทรัพยากร Ingress เป็นโฮสต์เสมือนของส่วนหัวโฮสต์ทั้งหมด หมายความว่า (เช่นเดียวกับที่คุณทำกับ `curl`) คุณ _must_ รวมส่วนหัว `host:` ดังนั้น ตัวควบคุมขาเข้ารู้วิธีกำหนดเส้นทางคำขอของคุณ ขอให้โชคดี
Oana avatar
cn flag
สวัสดี @mdaniel ! ขอบคุณ :) ฉันแค่พยายามเปิดในเบราว์เซอร์ (เนื่องจากมี REST API) --> 127.0.0.1:8080; แต่ฉันทำให้มันใช้งานได้ในระหว่างนี้โดยการลบค่าโฮสต์ออกจากรายการขาเข้า `กฎ: #- โฮสต์: test.xxx.com - http: เส้นทาง: - แบ็กเอนด์: บริการ: ชื่อ: อพอลโล-เซอร์วิส ท่า: จำนวน: 80` ตกลงไหม
Score:1
ธง us

ดูเหมือนว่าจะเป็นปัญหาง่ายๆ ที่ไม่มีส่วนหัว HTTP

ขั้นแรก คำอธิบายสั้นๆ:
เมื่อใดก็ตามที่ก เจ้าภาพ มีการระบุฟิลด์ในรายการ Ingress เฉพาะการเชื่อมต่อจากโฮสต์นั้นเท่านั้นที่จะได้รับการยอมรับ ข้อมูลนี้ถูกดึงออกมาจากแบบฟอร์ม เจ้าภาพ ส่วนหัว HTTP หากคุณไม่ได้ระบุ เจ้าภาพ ในช่อง Ingress Manifest คำขอจากทุกแหล่งจะได้รับการยอมรับ

คุณส่งคำขออย่างถูกต้องในครั้งแรก

ขด -D- http://192.168.44.136 -H 'โฮสต์: test.xxx.com'

แต่ลืมทำครั้งที่สอง
Powershell เทียบเท่ากับด้านบนคือ

เรียกใช้ WebRequest -Uri http://127.0.0.1 -Headers @{"Host"="test.xxx.com"}

ทั้งหมดนี้เป็นสิ่งที่ดีและง่ายเมื่อทำจากบรรทัดคำสั่ง แต่การส่งคำขอจากเว็บเบราว์เซอร์นั้นยากกว่าเล็กน้อย เว็บเบราว์เซอร์ไม่อนุญาตให้คุณแก้ไขคำขอ เพื่อให้เหมาะสม เจ้าภาพ ส่วนหัว โดยค่าเริ่มต้น อย่างไรก็ตาม ฟังก์ชันดังกล่าวสามารถทำได้ด้วยส่วนขยาย:

โพสต์คำตอบ

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