ฉันได้ตั้งค่า K3S Kubernetes Environment ใน Home-Lab ส่วนตัวของฉันบน Raspberry PI เพื่อสอนตัวเองเกี่ยวกับ Kubernetes (Noob-Alert) โดยใช้ NGINX เป็น Ingress Controller และฉันค่อนข้างติดขัดที่การส่งคำขอ IP จริง ไปยัง Pods เป้าหมาย ในกรณีของฉันคืออินสแตนซ์ Nextcloud เวอร์ชันของ K3S คือ v1.22.5+k3s1
.
K3S ได้รับการตั้งค่าโดยใช้ Docker เป็นคอนเทนเนอร์รันไทม์และด้วย --no-ปรับใช้ traefik
ตัวเลือก.
หลังจากนั้นฉันก็ปรับใช้ NGINX Ingress Controller โดยใช้
kubectl ใช้ -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml
จากนั้น หลังจากปรับใช้พ็อด Nextcloud ฉันปรับใช้ Ingress:
รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
ชื่อ: nginx-ingress
คำอธิบายประกอบ:
nginx.ingress.kubernetes.io/force-ssl-redirect: "จริง"
ข้อมูลจำเพาะ:
tls:
- เจ้าภาพ:
- my.own-dns.org
ชื่อลับ: ลับมาก-ssl-ลับ
ชื่อคลาส ingress: nginx
กฎ:
- โฮสต์: my.own-dns.org
http:
เส้นทาง:
- เส้นทาง: /somepath
pathType: คำนำหน้า
แบ็กเอนด์:
บริการ:
ชื่อ: someservice-บริการ
ท่า:
หมายเลข: 8081
- เส้นทาง: /
pathType: คำนำหน้า
แบ็กเอนด์:
บริการ:
ชื่อ: บริการ nextcloud
ท่า:
จำนวน: 80
ในการปรับใช้ IngressController ฉันได้เพิ่มรายการต่อไปนี้ใน ConfigMap:
api เวอร์ชัน: v1
ประเภท: ConfigMap
ข้อมูลเมตา:
ป้ายกำกับ:
helm.sh/chart: ingress-nginx-4.0.10
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/version: 1.1.0
app.kubernetes.io/managed-by: หางเสือ
app.kubernetes.io/component: ตัวควบคุม
ชื่อ: ingress-nginx-controller
เนมสเปซ: ingress-nginx
ข้อมูล:
Allow-snippet-annotations: 'จริง'
คำนวณเต็มส่งต่อสำหรับ: 'จริง'
ใช้ส่งต่อส่วนหัว: 'จริง'
enable-real-ip: 'จริง'
proxy-add-original-uri-header: 'จริง'
ส่งต่อสำหรับส่วนหัว: 'X-ส่งต่อสำหรับ'
และเปลี่ยน ServiceType จากบริการ http เป็น โหลดบาลานเซอร์
ดังนั้นบริการ IngressController ของฉันจึงมีลักษณะดังนี้:
api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
คำอธิบายประกอบ:
ป้ายกำกับ:
helm.sh/chart: ingress-nginx-4.0.10
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/version: 1.1.0
app.kubernetes.io/managed-by: หางเสือ
app.kubernetes.io/component: ตัวควบคุม
ชื่อ: ingress-nginx-controller
เนมสเปซ: ingress-nginx
ข้อมูลจำเพาะ:
ประเภท: LoadBalancer
ipFamilyPolicy: SingleStack
ครอบครัว IP:
- IPv4
พอร์ต:
- ชื่อ: http
พอร์ต: 80
โปรโตคอล: TCP
พอร์ตเป้าหมาย: http
โปรโตคอลแอป: http
- ชื่อ: https
พอร์ต: 443
โปรโตคอล: TCP
พอร์ตเป้าหมาย: https
โปรโตคอลแอป: https
ตัวเลือก:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/component: ตัวควบคุม
จนถึงตอนนี้ดีมาก การเข้าถึงอินสแตนซ์ Nextcloud จากอินเทอร์เน็ตใช้งานได้ดี รวมถึงการเปลี่ยนเส้นทางไปยัง https เป็นต้น แต่บันทึกการตรวจสอบ Nextcloud ได้รับเฉพาะ IP ของคลัสเตอร์ภายในเป็น IP ต้นทาง (น่าแปลกที่ไม่มี IP จากบริการใด ๆ ที่ฉันใช้งานอยู่ภายในคลัสเตอร์ ) ไม่ใช่ของจริงจากนอกโลก
แล้วฉันพลาดอะไรไป? ฉันลองตั้งค่า ใช้พร็อกซีโปรโตคอล
เป็นจริง แต่สิ่งนี้ส่งผลให้ก ERR_CONNECTION_RESET
.