別の名前空間にあるサービス
別の名前空間で実行されているポッドにリンクするサービスを、1つの名前空間で定義する方法を探しています。で実行されているポッド内のコンテナは、クラスタDNSでとして参照することで定義されたにnamespaceAアクセスできることを知っていますが、コンテナ内のコードでの場所を知る必要はありません。つまり、コードでルックアップして、それにアクセスできるようにします。serviceXnamespaceBserviceX.namespaceB.svc.cluster.localserviceXserviceX Kubernetesのドキュメントでは、これが可能であることを示唆しています。セレクタなしでサービスを定義する理由の1つは、サービスを別の名前空間または別のクラスタのサービスにポイントしたいということです。 それは私に私がすべきことを示唆しています: セレクタなしでserviceXサービスをで定義しますnamespaceA(選択したいPODがにないためnamespaceA)。 でサービス(これもserviceX)を定義し、namespaceB次に でnamespaceA指すようserviceXにEndpointsオブジェクトを定義しnamespaceBます。 私が達成できなかったのは、この3番目のステップです。 まず、Endpointsオブジェクトを次のように定義してみました。 kind: Endpoints apiVersion: v1 metadata: name: serviceX namespace: namespaceA subsets: - addresses: - targetRef: kind: Service namespace: namespaceB name: serviceX apiVersion: v1 ports: - name: http port: 3000 それは論理的なアプローチのようであり、明らかにそれが何のtargetRefためにあるのか。しかし、これによりip、addresses配列内のフィールドは必須であるというエラーが発生しました。だから、私の次の試みが固定CLUSTERIPアドレスを割り当てることだったserviceX中namespaceB、およびIPフィールドにいることを置く(ことに注意してくださいservice_cluster_ip_rangeとして構成され192.168.0.0/16、そして192.168.1.1ためCLUSTERIPとして割り当てられたserviceX中にnamespaceB、serviceX中にnamespaceA自動で異なるCLUSTERIPを割り当てられた192.168.0.0/16サブネット) : kind: Endpoints apiVersion: v1 metadata: name: serviceX namespace: namespaceA subsets: - addresses: …