2017-04-01 41 views
1

我有一個無頭的服務暴露的MongoDB實例的集羣端點發現無頭服務於Kubernetes

k get svc 
NAME   CLUSTER-IP EXTERNAL-IP PORT(S)   AGE 
hello  10.0.0.90 <nodes>  8080:32361/TCP 7h 
kubernetes 10.0.0.1  <none>  443/TCP   7h 
mongo  None   <none>  27017/TCP  7h 

所以有多個MongoDB的端點:

k get ep 
NAME   ENDPOINTS       AGE 
hello  172.17.0.4:8080      7h 
kubernetes 10.0.2.15:8443      7h 
mongo  172.17.0.5:27017,172.17.0.6:27017 7h 

如何將我的其他服務(稱爲hello)可以找到1個IP或1個DNS條目進行交談?如何有效地發現IP列表?

在Mongo的情況下,是否可以自動找到主副本(或可寫/可讀的副本)?

回答

0

服務應該可以通過他們的DNS名稱到達。在你的情況「mongo」或「mongo.my-命名空間」,如果你分配了一個命名空間。 您還應該檢查您的部署文件中是否設置了「spec.clusterIP = None」。如果那樣的話,你告訴kubernetes你不想使用標準的服務發現方式,並且會提供你自己的服務。

有多種標準的方式暴露業務:

  1. 您可以添加一個固定的內部羣集IP使用「spec.clusterIP」現場服務。

  2. 爲您的服務添加一個「NodePort」類型。這使您可以定義每個節點上可用的端口。所以當你在服務前有一個負載平衡器時,你可以在每個節點上轉發到這個端口。

更多信息,可以在k8s docs

找到
相關問題