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