2016-04-14 83 views
0

我在'裸機'Ubuntu機器上運行kubernetes羣集,如此處所述http://kubernetes.io/docs/getting-started-guides/ubuntu/。我創建了一個負載平衡器服務後,我可以看到其IP地址,運行:如何從裸機羣集中公開kubernetes服務

kubectl describe services sonar 
Name:   sonar 
IP:    10.0.0.170 
Port:   <unset> 9000/TCP 
Endpoints:  172.17.0.2:9000 
. . . 

然後,我與運行kubernetes集羣之外nginx的揭露這個世界。太好了,但在下一次服務部署時,ip會發生變化。我該如何處理這個問題?修復IP,使用環境變量,任何其他方式?

回答

2

沒有看到您的服務定義,我聽起來像是想要一個NodePort服務類型而不是LoadBalancer。使用NodePort服務,您只需將NGINX指向Ubuntu機器的IP地址和服務定義中指定的端口即可。只要Ubuntu機器的地址是穩定的,你應該沒問題。

如果您在多臺機器上運行Kubernetes,只需將所有機器的IP地址添加到您的NGINX機器並讓它執行負載平衡。

有關不同服務類型的更多信息,請訪問:http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types

+0

非常感謝,從我在文檔中閱讀的內容中,我需要'NodePort'而不是'LoadBalancer'。 –

2

免責聲明:我對Stackpoint工作,學習不同的選擇,我們決定使用我們的產品進入控制器,所以我的答案是偏向於入節點之後。

With ingress + ingress Controller您可以將外部負載平衡到吊艙端點。雖然服務是其主要目標是追蹤豆莢並創建路線(等等)的資源,但入口是定義平衡規則的更好方式。現在它:

  • 支持主機名
  • 支持使用祕密TLS規範
  • 可以根據路線路徑
  • 可以定義默認後端

與入口的最大缺點是你需要一個入口控制器來監聽Ingress,解析端點,將配置更改傳送給平衡器,並在必要時重新加載。由於我們控制着Ingress告訴平衡器的內容,因此我們可以配置Keepalive,粘性會話,健康檢查等等。

使用服務,您不完全控制所有這些參數。

在kubernetes/contrib上有一個nginx example應該與大多數場景匹配。在Stackpoint,我們使用我們自己的haproxy入口控制器,並且對結果非常滿意(並且將從我們的用戶界面簡稱爲Ingress管理)

ingress kubernetes page包含更多信息,並在底部有一些鏈接替代品。

相關問題