GKE Kubernetes中Elasticsearch配置HTTP负载均衡并暴露服务咨询
GKE上配置HTTP负载均衡对外暴露Elasticsearch服务操作指南
前置检查
操作前先确认Elasticsearch工作负载运行正常,Pod无崩溃报错,集群内部可通过ClusterIP正常访问ES的9200服务端口。
操作步骤
- 第一步:创建ES对应的Service资源
优先选择ClusterIP类型,GKE官方Ingress默认支持直接对接ClusterIP服务,无需额外暴露NodePort。示例配置如下:
配置完成后执行apiVersion: v1 kind: Service metadata: name: es-internal-service namespace: default spec: selector: app: elasticsearch # 替换为你实际部署的ES工作负载标签 ports: - port: 9200 targetPort: 9200 # 替换为ES实际监听的端口,默认是9200 type: ClusterIPkubectl apply -f es-service.yaml创建服务,创建后先在集群内部访问该服务验证连通性正常。 - 第二步:创建Ingress资源对接GKE HTTP负载均衡
GKE会自动根据Ingress配置创建谷歌云HTTP(S)负载均衡实例,示例配置如下:
配置完成后执行apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: es-public-ingress annotations: kubernetes.io/ingress.class: "gce" # 指定使用GCE外置负载均衡 kubernetes.io/ingress.allow-http: "true" # 不需要HTTP访问可设置为false,强制走HTTPS spec: rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: es-internal-service port: number: 9200kubectl apply -f es-ingress.yaml创建Ingress,等待5-10分钟负载均衡配置生效,可通过kubectl get ingress查看分配的公网IP。 - 第三步:验证公网访问
拿到Ingress的公网IP后,执行curl http://<INGRESS_IP>,正常会返回Elasticsearch的节点基础信息响应。
注意事项
- 安全配置优先级最高:Elasticsearch默认没有开启身份认证,直接对外暴露会有数据泄露、被恶意删库的极高风险,必须先配置ES的基础身份认证,建议在Ingress层配置HTTPS(可对接谷歌云托管SSL证书)、谷歌云IAP身份验证,绝对禁止公网直接裸开未加认证的ES服务。
- 健康检查适配:GKE负载均衡默认会对后端服务做健康检查,要确保ES的
/路径返回200状态码,如果你修改了ES的根访问路径,需要在Ingress的annotation中自定义健康检查路径与响应码规则。 - 限流与熔断:ES对并发写入、大查询请求的承载能力有限,建议在负载均衡层配置QPS限流和熔断规则,避免被恶意请求或异常大查询打垮整个集群。
- 端口与标签对齐:确保Service的selector标签和你的ES工作负载标签完全匹配,targetPort和ES实际监听的端口一致,自定义端口要对应修改。
- 网络策略放行:如果你的集群开启了网络策略,需要主动放行GKE健康检查IP段、负载均衡IP段对ES Pod的访问权限,避免健康检查失败导致负载均衡判定服务不可用。
内容的提问来源于stack exchange,提问作者balaganesh
相关产品推荐
相关产品推荐

