通过Kubernetes自动发现在Hazelcast上获取节点的“吊舱名称”值

时间:2020-04-27 10:43:44

标签: kubernetes hazelcast kubernetes-pod autodiscovery

在基于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();

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

有什么办法获得这个价值?

1 个答案:

答案 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