1

2 つのアトミック サービス Sa と Sb を消費する複合サービス Sc があり、3 つのサービスすべてが Kubernetes クラスターで実行されています。どんなパターンがいいだろう

1) ヘッドレス サービスとして Sa、Sb を作成し、Sc が NGINX+ などの外部ロードバランサーを介してそれらと統合できるようにします (DNS リゾルバーを使用して更新されたバックエンド ポッドを維持します)。

2) clusterIP で Sa、Sb を作成し、Sc がクラスター DNS (skyDNS アドオン) を介してそれらにアクセス/解決できるようにします。これは、IP テーブル ベースの負荷分散をポッドに内部的に活用します。

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

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

例: nginx-service (clusterIP を持つ) および nginx-headless-service (ヘッドレス)

 / # 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
4

1 に答える 1

1

DNS + クラスター IP を使用する方が簡単な方法であり、サービスをパブリック インターネットに公開する必要はありません。nginx の特定の負荷分散機能が必要でない限り、#2 を使用することをお勧めします。

于 2016-08-23T20:57:38.657 に答える