2016-08-23 8 views
0

私は2つのアトミックサービスS.aとS.bを消費するコンポジットサービスS.cを持っています.3つのサービスすべてがクーベルネットクラスターで実行されています。何がより良いパターンkubernetesイントラクラスターサービス通信

1になります)ヘッドレスサービスとしてSA、SBを作成し、Scが更新され、バックエンドのポッドを維持するために、DNSリゾルバを使用していますnginxの+()

2のような外部のロードバランサーを経由して、それらと統合しましょう)土を作成します。 、SbにclusterIPを指定して、ScがクラスタDNS(skyDNS addon)を介してアクセス/解決するようにします。 IP-Tableベースのロードバランシングをポッドに内部的に活用します。

注:私のk8sクラスタは、カスタムソリューション(オンプレミスVM)で動作しています 1から多くのアトミックサービス(上記の例のような)を消費する多くの複合サービスがあります。

編集:いくつかのシナリオでは、SbがScと外部の両方からアクセスする必要があるように、外部ネットワーク にサービスを公開する必要があります。このようにすると、ヘッドレスサービスとしてSbを作成する方が理にかなっています。そうしないと、DNSリゾルバは常にclusterIPアドレスのみを返し、すべての外部リクエストもclusterIPアドレスにルーティングされます。 マイチャレンジは、両方のシナリオ(インター対イントラ)が互いに

例と競合されている:nginxのサービス(CLUSTERIPを有する)とnginxの-ヘッドレス・サービス(ヘッドレス)

DNS +クラスタを使用
/# 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

IPはより簡単なアプローチであり、公共のインターネットにサービスを公開する必要はありません。 nginxの特定のロードバランシング機能が必要な場合を除いて、#2に進むことをお勧めします。

+0

ご返信ありがとうございます。 –

+0

クラスタ内と外部の両方から利用できるサービスが必要な場合はどう思いますか?編集をご覧ください。 –

+0

DNSを解決してクラスタIPをクラスタにルーティングできる場合でも、#2は引き続き機能します(ここでは[Google Cloud固有の回答](http://stackoverflow.com/questions/32618437/why-cant-i-access-my -kubernetes-service-via-its-ip/32619002#32619002)を参考にしてください。それがあなたのネットワーク設定では難しい/不可能な場合、nginxに面したヘッドレスサービスはまともな選択肢になります。 –