同じプロジェクト内の別の Kubernetes クラスターから Kubernetes クラスターによって公開されているサービスを呼び出す方法に関連して います。
Kubernetes は 7 月から大幅に変更されているため、もう一度お尋ねします。
環境:
私は、さまざまな目的を果たす複数のクラスターを備えたインフラストラクチャに取り組んでいます。
- クラスター A は、消費用のデータを作成するサービス/アプリを実行します
- クラスター B は、クラスター A のアプリによって作成されたデータを使用するサービス/アプリを実行します
- クラスター C は、Redis、Memcache などのデータ サービスを実行します。
すべてのクラスターはdefault
名前空間にあります。
問題:
Kubernetes では、各クラスターは、異なる IP を持つ独自の kubernetes (default
名前空間内) および kube-dns (名前空間内) サービスを取得します。kube-system
このセットアップで何が起こるかというと、上記のクラスター A と B のサービスは (サービス検出の用語で) 検出できません。たとえば、クラスター C の Redis を検出できません。したがって、nslookup redis.default.svc.cluster.local
クラスター A/B のサービスの 1 つからの a が返され** server can't find redis.default.svc.cluster.local: NXDOMAIN
ます。注:これはクラスター C 内から機能します。
kube-dns について見つけた限り多くのドキュメントを読みましたが、ほぼすべてが 1 つのクラスター セットアップを前提としています。
クラスター情報:
以下は/etc/resolv.conf
、共通の kube-dns 祖先を持たない DNS ネームサーバーを示す 2 つの異なるクラスターからのものです。
クラスタ A:
nameserver 10.67.240.10
nameserver 169.254.169.254
nameserver 10.240.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.project-name.internal. 1025230764914.google.internal. google.internal.
クラスタ C:
nameserver 10.91.240.10
nameserver 169.254.169.254
nameserver 10.240.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.project-name.internal. google.internal.
options ndots:5
kube-system
両方のクラスターには、名前空間内のクラスターのそれぞれの IP で実行されているこれらのサービスがあります。
NAME LABELS SELECTOR
kube-dns k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeDNS k8s-app=kube-dns
kube-ui k8s-app=kube-ui,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeUI k8s-app=kube-ui
monitoring-heapster kubernetes.io/cluster-service=true,kubernetes.io/name=Heapster k8s-app=heapster
GCE 環境のすべての Kubernetes クラスターで共有サービスを検出できる、この設定に対する理想的な修正/更新は何ですか?