java 如何在Kubernetes中向外部公开Elasticsearch StatefulSet的无头服务

moiiocjp  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(137)

问题摘要

目标是向外部公开Elasticsearch节点端点,这些端点在内部被寻址为:

elasticsearch-master-0.elastic.svc.cluster.local:9200
elasticsearch-master-1.elastic.svc.cluster.local:9200 
elasticsearch-master-2.elastic.svc.cluster.local:9200

这使用StatefulSet和headless服务在集群内进行服务发现。
约束是该外部服务能够具体地寻址代理。
正确的(或者一种可能的)方法是什么?是否可以通过elasticsearch-x.elastic.svc.cluster.local:9200公开一个外部服务?

xdnvmnnf

xdnvmnnf1#

我是这样解决我的问题的:
在正式的ElasticSearch helm chart中,创建了2个服务:
1.ElasticSearch主机- 9200/TCP、9300/TCP
1.ElasticSearch器
我使用nlb类创建了type: LoadBalancer的第一个服务,注解如下

annotations: {
    service.beta.kubernetes.io/aws-load-balancer-name: "es-nlb",
    service.beta.kubernetes.io/aws-load-balancer-type: "external",
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance",
    service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
}

这将在ELB端创建2个侦听器端口,即92009300,并与指向应用程序的目标组链接
<es-nlb-dns>:9200
<es-nlb-dns>:9300
现在我使用这些端点连接SpringBoot Data ElasticSearch客户端。

相关问题