You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSearch集群无法通过Nginx Ingress访问,请求协助排查

排查OpenSearch集群Nginx Ingress无法工作的问题

核心问题梳理

你的OpenSearch集群通过端口转发可正常访问,但部署Nginx Ingress后无法通过Ingress访问,结合提供的信息,从以下几个方向排查:

1. Ingress资源与目标Service的命名空间/名称不匹配

注意到你提供的Ingress定义中:

  • 名称为osc-nginx-ingress,命名空间为osc
    但kubectl get ingress和kubectl describe ingress显示的Ingress是os-nginx-ingress,命名空间为os

这说明你可能创建了错误的Ingress资源,或者执行kubectl apply时指定了错误的命名空间。执行以下命令确认:

# 检查osc命名空间下的Ingress和Service
kubectl get ingress -n osc
kubectl get service opensearch-cluster-master -n osc

如果osc-nginx-ingress存在且指向正确的Service,那你之前查看的是另一个错误的Ingress资源,后续操作请以osc命名空间下的Ingress为准。

2. Ingress未正确处理后端的HTTPS协议

你的端口转发命令使用https://<host_ip>:9200,说明OpenSearch的9200端口是HTTPS协议,但当前Ingress配置中没有指定后端协议,Nginx会默认用HTTP去连接后端的HTTPS端口,导致握手失败。

修改Ingress资源,添加以下注解:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: osc-nginx-ingress
  namespace: osc
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "75s"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300s"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300s"
    # 添加以下HTTPS相关注解
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/proxy-ssl-verify: "off" # 忽略OpenSearch自签证书验证
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: opensearch-cluster-master
                port: 
                  number: 9200

然后重新应用Ingress:

kubectl apply -f ingress.yaml -n osc

3. Ingress Address为空,未分配访问入口

Ingress的Address字段为空,说明Ingress Controller未成功为其分配访问地址:

  • 如果是NodePort模式:查看Ingress Controller的Service端口
    kubectl get service -n <ingress-controller-namespace> # 通常是ingress-nginx
    
    用http://<node-ip>:<node-port>测试访问,确认端口是否可通。
  • 如果是LoadBalancer模式:检查云提供商的负载均衡器是否已创建完成,Ingress的Address会同步负载均衡器的IP。

4. 检查Ingress Controller日志

查看Ingress Controller的日志,获取具体错误信息:

kubectl logs nginx-ingress-controller-sjtw6 -n <ingress-controller-namespace>

重点关注是否有SSL握手错误、后端连接超时等日志,这些会直接指向问题原因。

5. 测试Ingress Controller到后端Pod的连通性

进入Ingress Controller Pod内部,直接访问OpenSearch Pod的IP,确认网络连通性:

kubectl exec -it nginx-ingress-controller-sjtw6 -n <ingress-controller-namespace> -- /bin/sh
# 在Pod内执行curl测试
curl -s -XGET https://10.24.1.106:9200/ -u admin:admin --insecure

如果测试失败,说明集群内部网络存在问题;如果成功,说明Ingress的配置仍有疏漏。

内容的提问来源于stack exchange,提问作者svw1105

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:16:00