Kubernetes - ฉันสามารถหลีกเลี่ยงการใช้ GCE Load Balancer เพื่อลดค่าใช้จ่ายได้หรือไม่?


11

ฉันกำลังปรับใช้คลัสเตอร์ Kubernetes บน GCE โดยใช้ Gitlab-CI ฉันต้องการเก็บค่าใช้จ่ายให้น้อยที่สุด - นี่คือการตั้งค่าปัจจุบันของฉัน:

  • โหนดทำงานกับ 3 f1-microอินสแตนซ์
  • พ็อดของระบบที่รันTraefikด้วย ServiceTypeLoadBalancer
  • Wildcard DNS กำหนดค่า
  • 1 postgres ฝัก
  • 1 ฝักเว็บเซิร์ฟเวอร์ที่มีingressการกำหนดค่าสำหรับ Traefik

ฉันต้องการลดค่าใช้จ่ายในการติดตั้ง ค่าใช้จ่ายส่วนใหญ่จะอยู่กับ GCE load balancer มีวิธีที่ฉันสามารถใช้ที่อยู่ IP สาธารณะแทน Load Balancer ใน GCE หรือไม่? ถ้าเป็นเช่นนั้นฉันสามารถใช้ที่อยู่ IP ที่จัดสรรให้กับคลัสเตอร์ (แทนที่จะจอง IP แบบคงที่) ได้หรือไม่

หากต้องการใช้อีกวิธีหนึ่งมีวิธีผูก ip ชั่วคราวกับบริการ Kubernetes โดยใช้ GCE โดยไม่มี load balancer หรือไม่?

มีการกำหนดค่าอื่น ๆ ที่ฉันสามารถทำได้แตกต่างกันซึ่งจะลดต้นทุนโดยทั่วไปใน GCE หรือไม่


1
คุณสามารถเปิดเผยบริการของคุณโดยใช้ชนิดบริการ NodePort เท่านั้น แต่จะแนะนำข้อ จำกัด บางประการสำหรับการปรับใช้ของคุณ สำหรับข้อมูลเพิ่มเติมเยี่ยมชมลิงค์นี้
Kamran

คำตอบ:


11

ใช่ผ่าน ExternalIPs โปรดทราบว่านี่จะหมายถึงบริการของคุณจะล้มลงหากโหนดที่ระบุว่า IP ภายนอกที่กำหนดล้มเหลว แต่ถ้าคุณใช้งานเพียง 1 หลักคุณอาจไม่สนใจอะไรมาก

บริการตัวอย่าง:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 80
      protocol: TCP
  selector:
    app: myapp
  externalIPs:
    - a.b.c.d

IP ต้องเป็นIP ภายในของอินสแตนซ์ GCE (นี่เป็นเพราะ GCE DNATs ปริมาณการใช้งานไปยัง IP ภายใน) บริการควรจะสามารถเข้าถึงได้ผ่าน IP ภายนอกที่ได้รับมอบหมายของโหนด

คุณอาจต้องการเปลี่ยนบริการสำหรับคอนโทรลเลอร์ของคุณเพื่อให้คุณสามารถกำหนดเส้นทางแอปทั้งหมดของคุณผ่าน IP เดียว


2
หลังจากเรียนรู้เกี่ยวกับสิ่งที่ DNAT ฉันรู้ว่าฉันต้องการกำหนดค่ากฎไฟร์วอลล์เพื่ออนุญาตการรับส่งข้อมูลบนพอร์ตบางอย่างไปยังอินสแตนซ์ GCE หลังจากนี้ฉันสามารถใช้คำแนะนำของคุณได้สำเร็จ ฉันได้ทดสอบNodePortเวอร์ชันหนึ่งด้วยเช่นกัน
Mitkins

2

ฉันไม่ต้องการใช้ตัวโหลดบาลานซ์คลาวด์จนกว่าจะจำเป็นเนื่องจากค่าใช้จ่ายและการล็อคอินของผู้ขาย

ฉันใช้สิ่งนี้แทน: https://kubernetes.github.io/ingress-nginx/deploy/

มันเป็นพ็อดที่ให้โหลดบาลานเซอร์ให้คุณ หน้านั้นมีบันทึกการติดตั้งเฉพาะของ GKE

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.