2015-08-24 101 views
1

我有幾個豆莢,例如一個python web應用程序和一個redis(由其他應用程序共享),所以我需要將redis放在單獨的窗格中。但是它們都使用來自docker(172.17.0.0/16)的相同子網或甚至相同的IP地址。應用程序窗口如何與redis窗格交談?讓kubenetes豆莢互相溝通的最佳方式是什麼?

也許我想問的是什麼是設置多主機conainer網絡的最佳方式。


7周後,我對kubernetes更熟悉了。我知道kubernetes有網絡假設豆莢可以互相訪問。因此如果您的應用服務pod需要訪問共享服務(redis)pod,則需要將共享服務作爲kubernetes服務公開,然後您可以從app pod的環境變量或主機名獲得共享服務端點。

+0

或u se kubenetes的服務? – xdays

+0

你說:「他們都使用從碼頭(172.17.0.0/16),甚至相同的IP地址相同的子網」。這表明您尚未正確配置網絡。請看看:http://docs.k8s.io/v1.0/admin/networking.html Kubernetes依賴於一些基本的東西。 –

回答

2

你是如何設置Kubernetes的?我不知道任何將pod IP放入172子網的安裝腳本。

但通常,假設Kubernetes已正確設置(理想情況下使用其中一個提供的腳本),則使用​​在1個或多個redis窗格中負載平衡將是標準方法。

+0

172子網是docker0橋使用的網絡。 – xdays

2

當您創建服務時,服務會將連接代理到不同的窗格。

因此,服務維護着豆莢容器的IP列表。

你可以再看看那些了API

在他們將在

http(s)://${KUBERNETES_SERVICE_HOST}/api/v1/namespaces/${NAMESPACE}/endpoints/${SERVICE_NAME} 

命名空間的命名空間的名稱。默認情況下,它是默認設置,所以如果您未將代碼塊中的名稱空間替換爲'default' SERVICE_NAME是您的服務名稱 KUBERNETES_SERVICE_HOST是您的容器中可用的環境變量。

您將得到一個帶有容器和「ip」標籤的JSON對象。 然後,您可以管的答案,

grep '\"ip\"' | awk '{print $2}' | awk -F\" '{print $2}' 

做隔離的IP

您可能還需要憑據到達HTTPS(與捲曲測試) 在谷歌雲計算,憑據可通過觀察發現高達

gcloud cluster-info <your-cluster-name> 

注意:即使你不使用該服務來談談你的豆莢,它提供收集IP地址爲您莢的目的。但是請注意,如果在某個節點出現故障時,將該容器重新安排到其他位置,則這些可能會發生變化,但該服務需要維護最新的列表,但您的應用需要每隔一段時間拉一次或在端點上設置一個監視器保持最新的列表。

+0

如果您在沒有安裝CA證書的羣集中進行https操作,您可能還需要使用curl --insecure標誌。 – MrE

0

我意識到也許這個問題有點含糊:

,如果你要的是你的應用程序交談Redis的服務,然後設置一個服務Redis的(與「Redis的」爲例子的名字)然後Redis的服務將可以訪問簡單地通過它的主機名「的Redis」

檢查,設置了一個Redis的主+副本的奴隸,並可以聯繫到PHP應用程序(一個或多個)這樣

留言簿例如叫它

https://github.com/kubernetes/kubernetes/tree/master/examples/guestbook

相關問題