0

在部署在 Kubernetes 上的基于 Hazelcast 的系统中,使用自动发现 by service-label,我试图获取部署每个节点的Pod 名称。我得到的确实是第一个节点的 pod 名称,但第二个节点的服务名称。例如,octane-deployment-blue-123c44bfb-xyzab(pod)然后是10-20-30-100.my-service.svc.cluster.local(服务)。

我通过以下方式获取值

HazelcastInstance hazelcastInstance = getInstance();
Member localMember = hazelcastInstance.getCluster().getLocalMember();
String name = localMember.getSocketAddress().getAddress().getHostName();

似乎名称是由自动发现机制决定的。

有什么方法可以获得这个值吗?

4

1 回答 1

2

如何获取 Pod 名称的简单答案是跳过所有 Hazelcast 部分,只从 env 变量中获取 Pod 名称,HOSTAME或者使用如下所示的Downward API

env:
- name: MY_POD_NAME
  valueFrom:
    fieldRef:
      fieldPath: metadata.name

话虽如此,您通过执行接收服务名称非常奇怪localMember.getSocketAddress().getAddress().getHostName()。对我来说似乎是一个错误。您可以在此处提出重现步骤的问题:https ://github.com/hazelcast/hazelcast-kubernetes

于 2020-04-27T12:29:24.747 回答