2016-11-28 79 views
1

我在使用HTTP負載均衡器(第7層)和GKE中的服務時遇到問題。我原本暴露GKE服務使用負載平衡器服務類型:適用於GKE的Google Cloud HTTP負載均衡器(第7層)

kubectl暴露部署爲MyService --type =「負載平衡器」

這將爲我在同一個區域集羣創建一個公共IP地址,它一直運作良好。我的目標是爲我的服務使用SSL支持的全球IP地址。這是我曾嘗試:

  1. 暴露GKE服務爲NodePort類型 kubectl暴露部署爲MyService --type =「節點類型」
  2. 按照教程here創建入口對象。它不起作用,因爲GKE中的服務已經在受管實例組中,並且入口對象將創建一個實例爲零的新實例組。我發現討論here
  3. 按照討論中的建議。刪除到入口對象,並嘗試從谷歌雲控制檯手動設置HTTP負載平衡器。
    • 添加了防火牆規則,允許在所有目標上的端口80和8081(我的服務端口)上使用130.211.0.0/22。
    • 後端服務是由GKE創建的託管實例組。
    • 在端口8081,path/health上創建健康檢查。 它仍然不起作用,因爲負載均衡器可以識別受管實例組中正確的實例數量,但沒有健康的節點。我的服務有一個運行狀況檢查終端myservice:8081/health,並且根路徑「/」也返回HTTP 200 OK。我玩了健康檢查配置,但負載平衡器永遠找不到一個健康的節點。

我在想什麼?

+0

難道最簡單的方法是: 1.使用nginx服務器創建一個部署,您可以在其中配置SSL連接。它會將請求路由到您的其他服務。 2.在nginx部署周圍創建一個類型爲LoadBalancer的服務,它將爲您提供公共IP。 –

+0

這可能會幫助你http://stackoverflow.com/questions/40136891/gcloud-ingress-loadbalancer-static-ip。如果你使用入口並開始使用kube-lego(如果letsencrypt已經足夠),你會對它變得多麼容易感到驚訝 – Ben

回答

0

事實證明,如果我想遵循入口教程,我無法在同一端點上定義HTTP(S)負載均衡器。您可以選擇遵循教程並讓入口對象自動定義LB,這在刪除我的測試LB之後適用於我,或者不使用入口並手動定義LB(我從未得到它)。