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