Google-Cloud-Platform

在沒有負載平衡器的情況下在 Google Container Engine 上公開埠 80 和 443

  • October 14, 2021

目前我正在做一個小型的愛好項目,一旦它準備好我就會開源。該服務在 Google Container Engine 上執行。我選擇 GCE 是為了避免配置麻煩,成本負擔得起並且可以學習新東西。

我的 pod 執行良好,我創建了一個類型LoadBalancer為在埠 80 和 443 上公開服務的服務。這非常有效。

但是,我發現對於每個LoadBalancer服務,都會創建一個新的 Google Compute Engine 負載平衡器。這個負載均衡器非常昂貴,而且對於單個實例上的業餘項目來說確實做得太過分了。

為了降低成本,我正在尋找一種在沒有負載均衡器的情況下公開埠的方法。

到目前為止我已經嘗試過:

有沒有辦法在沒有負載均衡器的情況下為 Google Container Engine 上的單個實例公開埠 80 和 443?

是的,通過服務上的外部 IP。我使用的範例服務:

apiVersion: v1
kind: Service
metadata:
 name: bind
 labels:
   app: bind
   version: 3.0.0
spec:
 ports:
   - port: 53
     protocol: UDP
 selector:
   app: bind
   version: 3.0.0
 externalIPs:
   - a.b.c.d
   - a.b.c.e

請注意,配置文件中列出的 IP 必須是 GCE 上的內部 IP。

除了 ConnorJC 的出色且有效的解決方案:同樣的解決方案也在這個問題中描述: Kubernetes - 我可以避免使用 GCE 負載均衡器來降低成本嗎?

“internalIp”是指計算實例(也稱為節點)的內部 ip(如在 Google Cloud Platform -> Google Compute Engine -> VM Instances 上看到的)

評論提示了為什麼應該配置內部而不是外部 ip。

此外,在為埠 80 和 443 配置服務後,我必須創建一個防火牆規則,允許流量到我的實例節點:

gcloud compute firewall-rules create your-name-for-this-fw-rule --allow tcp:80,tcp:443 --source-ranges=0.0.0.0/0

完成此設置後,我可以通過 http(s)://externalIp 訪問我的服務

引用自:https://serverfault.com/questions/801189