是否有 fabric8 API(对于 kubernetes)来观察与服务相关的事件并找到它的 public IP?

is there a fabric8 API (for kubernetes) to watch events associated w/ a service and find its public IP?

我最近开始研究使用 fabric8 管理容器的代码库,pods, kubernetes 中的服务等。

为给定的 pod 创建服务后,我需要通知我们的最终用户外部 他们可以通过其访问所述服务的 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.

我使用 wireshark 来跟踪 REST API 调用,这些调用是在上述情况下进行的 命令运行,原始 Kubernetes REST API 似乎通过 URL 访问上述信息 像这样

GET /api/v1/namespaces/my_namespace_whatever/endpoints/spark-master 

因此,理论上我可以通过原始 Kubernetes REST API 获得我想要的信息。但自从我们 正在使用 fabric8,如果有任何方法可以做到这一点,我宁愿坚持下去 与他们 API。

我看到 class 携带有关 fabric8 端点的信息
( io.fabric8.kubernetes.api.model.Endpoints),但我搜索过但找不到文档 关于如何查询服务的端点信息。

此外,当使用 fabric8 API 来观察我们已经尝试过的事件时 查看 service.getStatus.getLoadBalancer.getIngress() (每当我们得到 a 与我们的服务相关的事件),但这总是空的 ;^(

如有任何提示或指导,我们将不胜感激.... -克里斯

Fabric8 客户端有以下 API 调用:

client.endpoints().get();

这将为您提供所有端点的列表。现在有一些方法可以将您收到的列表限制为特定的 namespace/labels 使用:

client.endpoints().inNamespace("5683616f16426028459a535c").withLabel("name", "spark-master").list();