Score:-1

(Kubernetes) การส่งต่อพอร์ตจากพอร์ต NodePort ไปยังพอร์ตที่อยู่นอกช่วง

ธง in

ฉันมีพ็อดที่ทำงานบน Kubernetes บนเครื่องโลคัล (My Mac) และถูกกำหนดให้เข้าถึงได้ผ่าน nodePort 30036

  - โปรโตคอล: TCP
    พอร์ตเป้าหมาย: 8081
    โหนดพอร์ต: 30036

ฉันต้องการที่จะเข้าถึงโหนดนี้โดยใช้พอร์ตที่อยู่นอกช่วงที่กำหนดไว้สำหรับการใช้งาน nodePort (30000-32768) สมมติว่าเป็น 8080 ตัวเลือกของฉันคืออะไร? ขอขอบคุณ!

Score:0
ธง cn

เนื่องจากไม่มีข้อมูลเกี่ยวกับโซลูชัน Kubernetes ที่แน่นอนที่ใช้ การระบุโซลูชันที่แน่นอนอาจทำได้ยาก

สมมติว่ามี 2 ทางเลือก:

  • Docker Desktop พร้อม Kubernetes
  • มินิคุเบะ

วิธีแก้ปัญหาสำหรับพวกเขาอาจเป็น:


Docker Desktop พร้อม Kubernetes

บริการ ประเภท โหลดบาลานเซอร์

คลัสเตอร์ Kubernetes ของคุณใช้ได้ บริการ ประเภท โหลดบาลานเซอร์ และเชื่อมโยงกับของคุณ โลคัลโฮสต์ (แมคของคุณ โลคัลโฮสต์).

คุณสามารถตรวจสอบได้โดยเรียกใช้ตัวอย่างต่อไปนี้:

  • $ kubectl สร้างการปรับใช้ nginx --image=nginx
  • $ kubectl เปิดเผยการปรับใช้ nginx --port=80 --type=LoadBalancer
  • $ kubectl รับบริการ
ประเภทชื่อ CLUSTER-IP EXTERNAL-IP PORT(S) อายุ
Kubernetes ClusterIP 10.96.0.1 <ไม่มี> 443/TCP 10d
nginx LoadBalancer 10.111.214.48 localhost 80:30032/TCP 77s
  • ขด 127.0.0.1:80 / ขด kubernetes.docker.internal:80
<-- REDACTED --> 
<title>Welcome to nginx!</title>
<-- REDACTED --> 

ข้อสังเกต!

คุณสามารถแก้ไขเพิ่มเติมได้โดยใช้ --ท่า (พอร์ตของคุณ โลคัลโฮสต์) และ --targetPort (พอร์ตที่กำลังฟังในไฟล์ พ็อด) พารามิเตอร์เมื่อใช้ $ kubectl เปิดเผย ...

เปลี่ยน โหนดพอร์ต ช่วงพอร์ต

คุณสามารถทำตามคำตอบเชิงลึกนี้ซึ่งจะแสดงวิธีแก้ไขของคุณ เซิร์ฟเวอร์ kubeapi เพื่อเปลี่ยน โหนดพอร์ต ช่วงพอร์ต (โดยการเข้าสู่ Docker VM):

ใช้ ทางเข้า ผู้ควบคุม

คุณยังสามารถใช้ ทางเข้า ตัวควบคุมที่จะเชื่อมโยงกับ Mac ของคุณ โลคัลโฮสต์ และจะอนุญาตให้คุณใช้ ทางเข้า ทรัพยากร (ส่วนใหญ่สำหรับ เอชทีทีพี/HTTPS แต่ด้วยการปรับเปลี่ยนบางอย่างก็สามารถผ่านไปได้ ทีซีพี/กปปส การจราจร). คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนั้นได้ที่นี่:


มินิคุเบะ

กับ มินิคุเบะ อาจมีการเปลี่ยนแปลงได้มากมายเนื่องจาก --คนขับรถ ใช้แล้ว.

เปลี่ยน โหนดพอร์ต ช่วงพอร์ต

คุณสามารถทำตามคำตอบด้านล่างอีกครั้งเพื่อเปลี่ยน มินิคูเบะ โหนดพอร์ต ช่วงพอร์ต:

ใช้ โลหะ

คุณยังสามารถใช้ โลหะ เพื่อจัดสรรที่อยู่ให้กับคุณ บริการ ประเภท โหลดบาลานเซอร์.

โดยมีขั้นตอนในการทำดังนี้

  • $ minikube start --driver=hyperkit
  • $ minikube addons เปิดใช้งาน metallb
  • รายการโหนด $ minikube (สังเกตเลขไอพีของท่าน มินิคูเบะ)
  • $ minikube addons กำหนดค่า metallb (ใส่ช่วงจัดสรรใกล้กับ มินิคูเบะ ไอพีที่ชอบ:
    • มินิคูเบะ ไอพี: 192.168.64.11
    • เริ่มต้นโลหะ: 192.168.64.100
    • ปลายโลหะ: 192.168.64.110
  • สร้างภาระงานและเปิดเผยด้วย บริการ ประเภท โหลดบาลานเซอร์
  • $ ขด SVC_EXTERNAL_IP:PORT

ข้อสังเกต!

--driver=ไฮเปอร์คิต ถูกใช้เนื่องจาก:

เนื่องจากคุณกำลังใช้ไดรเวอร์ Docker บนดาร์วิน เทอร์มินัลจึงต้องเปิดอยู่เพื่อเรียกใช้

ข้อความนี้เกี่ยวข้องกับการเข้าถึงของคุณ มินิคูเบะ ตัวอย่างเมื่อใช้ --driver=นักเทียบท่า และเป็นข้อจำกัด คุณต้องใช้ บริการ minikube SERVICE_NAME เพื่อเข้าถึง บริการ (และเทอร์มินัลจะต้องทำงานในขณะที่คุณอยู่ที่นั้น)


ข้อสังเกต!

ฉันถือว่าเป็นวิธีแก้ปัญหาที่คุณสามารถใช้ a $ kubectl ส่งต่อพอร์ต.

แหล่งข้อมูลเพิ่มเติม:

moonkotte avatar
in flag
สวัสดี @pavel-zagalsky นี่ [ตอบคำถามของคุณ](https://stackoverflow.com/help/someone-answers)ไหม

โพสต์คำตอบ

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