2016-08-23 71 views
0

我有一個組合服務S.c,它使用兩個原子服務S.a和S.b,其中所有三個服務都在Kubernetes集羣中運行。這將是一個更好的模式kubernetes集羣內服務通信

1)創建SA,SB作爲一個無頭的服務,讓鈧通過它使用DNS解析程序,以維護更新後端豆莢像NGINX +(外部負載均衡器)

2)建立安全聯盟與他們整合,帶clusterIP的Sb,並讓Sc通過集羣DNS(skyDNS插件)訪問/解析它們。這將在內部利用基於IP-Table的負載均衡到pod。

注意:我的k8s羣集正在定製解決方案(內部部署虛擬機)上運行。 我們有許多組合服務會消耗1到多個原子服務(如上例所示)。

編輯:在少數情況下,我也需要將服務公開到外部網絡 像Sb一樣需要從Sc和外部訪問。 在這種情況下,創建Sb作爲無頭服務會更有意義,否則DNS解析器將始終只返回羣集IP地址,並且所有外部請求也將被路由到羣集IP地址。 我的挑戰是這兩種情況(幀內VS間)是衝突的相互

例如:nginx的服務(其具有clusterIP)和nginx的-無頭服務(無頭)

/# nslookup nginx-service 
Server: 172.16.48.11 
Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local 

Name:  nginx-service 
Address 1: 172.16.50.29 nginx-service.default.svc.cluster.local 

/# nslookup nginx-headless-service 
Server: 172.16.48.11 
Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local 

Name:  nginx-headless-service 
Address 1: 11.11.1.13 wrkfai1asby2.my-company.com 
Address 2: 11.11.1.15 imptpi1asby.my-company.com 
Address 3: 11.11.1.4 osei623a-sby.my-company.com 
Address 4: 11.11.1.6 osei511a-sby.my-company.com 
Address 5: 11.11.1.7 erpdbi02a-sbyold.my-company.com 

回答

1

使用DNS +簇IP是更簡單的方法,並且不需要將您的服務暴露給公共互聯網。除非你想要nginx的特定的負載平衡功能,否則我建議你用#2。

+0

感謝您的回覆。 –

+0

當我們有一個服務需要在集羣內部和外部都可用時,您的想法是什麼?請參閱編輯。 –

+0

如果您可以解析DNS並將羣集IP路由到羣集,#2仍然可以工作(這裏是[Google雲特定的答案](http://stackoverflow.com/questions/32618437/why-cant-i-access-my -kubernetes-service-via-its-ip/32619002#32619002)可能會有所幫助)。如果你的網絡設置很難/不可能,nginx提供的無頭服務將是一個不錯的選擇。 –