最近、Kubernetes でコンテナー、ポッド、サービスなどを管理するために fabric8 を使用するコード ベースの作業を開始しました。
特定のポッドのサービスを作成した後、エンド ユーザーに、そのサービスにアクセスできる外部 IP を通知する必要があります。
コマンド ライン (kubectl) から記述を実行すると、次のような出力が得られます。
kubectl describe service spark-master
Name: spark-master
Namespace: 5683616f16426028459a535c
Labels: group=krylov-dev,name=spark-master
Selector: name=spark-master
Type: LoadBalancer
IP: 10.0.0.103
Port: 7077 7077/TCP
NodePort: 7077 31988/TCP
Endpoints: 172.17.0.2:7077
Port: 7070 7070/TCP
NodePort: 7070 32539/TCP
Endpoints: 172.17.0.2:7070 <<- this is what i want!
Session Affinity: None
No events.
上記のコマンドの実行時に実行されていた REST API 呼び出しを追跡するために、wireshark を使用しました。生の Kubernetes REST API は、このような URL を介して上記の情報にアクセスしているようです。
GET /api/v1/namespaces/my_namespace_whatever/endpoints/spark-master
したがって、理論的には、未加工の Kubernetes REST API を介して必要な情報を取得できました。しかし、私たちはfabric8を使用しているので、彼らのAPIでこれを達成する方法があれば、それに固執したいと思います.
fabric8 (io.fabric8.kubernetes.api.model.Endpoints) のエンドポイントに関する情報を運ぶクラスがあることを確認しましたが、エンド
ポイント情報についてサービスをクエリする方法に関するドキュメントを検索しても見つかりませんでした。
また、fabric8 API を使用してイベントを監視する場合、service.getStatus.getLoadBalancer.getIngress() (サービスに関連付けられたイベントを取得するたびに) を確認しようとしましたが、これは常に空です ;^(
ヒントやガイダンスに最も感謝しています.... -chris