目前k8s部署的nebula集群,每个服务3节点。全部开启了graphd、metad、storaged 的nodeports,然后使用图计算nebula-algrothm做图计算,nebula-spark-connector 通过连接配置的nodeports连接集群。debug源码发现 nebula-java client底层对于metad和storaged有个检测是否leader代码,导致nodeports和从rsp中获取的leader不一致,报错UnknownHostException,因为从rsp里获取的集群中配置的headless形式域名,但是nodePorts十ip:port形式。有办法可以解决这个问题吗?目前我修改了nebula-java里的
while (retry-- >= 0) {
response = client.listSpaces(request);
if (response.getCode() == ErrorCode.E_LEADER_CHANGED) {
HostAddr hostAddr = new HostAddr(addresses.get(retry).getHost(),
addresses.get(retry).getPort());
freshClient(hostAddr);
} else {
break;
}
}
但是我发现storageClient也会报错,要改的话代码太多了。不知道是否有其他方式解决。