我最近开始研究一个代码库,它使用fabric8 来管理kubernetes 中的容器、pod、服务等。
在为给定的 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 来实现这一点,我宁愿坚持下去。
我看到有一个类包含有关fabric8
(io.fabric8.kubernetes.api.model.Endpoints)中端点的信息,但我搜索并找不到有关如何查询服务以获取其端点信息的文档。
此外,当使用 fabric8 API 来观察事件时,我们尝试查看 service.getStatus.getLoadBalancer.getIngress() (每当我们得到与我们的服务关联的事件时),但这总是空的 ;^(
将不胜感激任何提示或指导.... -克里斯