在基于Hazelcast的系统中,该系统部署在Kubernetes上,使用service-label
的自动发现,我试图获取每个节点都部署在的Pod name。我得到的确实是第一个节点的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();
似乎名称是由自动发现机制确定的。
获得此值的任何方法吗?
如何获得Pod名称的简单答案是跳过所有的Hazelcast部分,而仅从env变量HOSTAME
或使用Downward API这样获得Pod名称:
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
说,您很奇怪地通过执行localMember.getSocketAddress().getAddress().getHostName()
来接收服务名称。对我来说似乎是个虫子。您可以在此处复制步骤提出问题:https://github.com/hazelcast/hazelcast-kubernetes