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

Kubernetes中搭配MetalLB的Ingress DNS配置不生效问题求助

问题根因及排查步骤

1. 优先验证后端服务可用性

你Ingress规则绑定的是dev命名空间下的hello-service,但你只提供了hello-node-service的配置,首先确认hello-service是否配置正确:

  • 执行以下命令验证hello-service本身可访问:
kubectl run -it --rm --image=curlimages/curl testcurl -- curl http://hello-service.dev.svc.cluster.local

如果该命令返回异常,说明hello-service未正确配置selector关联app:hello标签的Pod,或端口映射配置错误,优先修复服务配置。
如果该命令返回正常,继续排查以下问题。

2. 路径匹配规则问题

你当前Ingress配置cluster.local的/hello路径转发到hello-service,默认Nginx Ingress会将原始路径完整透传给后端服务,如果你的后端服务仅提供根路径/的接口,未实现/hello路径的接口,就会返回404。
解决方法:给Ingress添加路径重写注解,修改Ingress配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-hello
  namespace: dev
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: cluster.local
    http:
      paths:
      - backend:
          service:
            name: hello-service
            port:
              number: 80
        path: /hello/?(.*)
        pathType: Prefix

该配置会将/hello路径下的所有请求重写到后端服务的根路径,比如访问/hello会转发到后端的/,/hello/abc会转发到后端的/abc。

3. 验证Ingress资源是否被控制器正常加载

执行以下命令查看Ingress资源的状态:

kubectl get ingress -n dev ingress-hello

正常情况下ADDRESS列会显示Ingress控制器的对外IP10.0.57.28,如果为空说明Ingress控制器未正常识别该规则:

  • 执行kubectl describe ingress -n dev ingress-hello查看事件输出,确认是否有找不到服务、端口不匹配等报错。

4. 日志无输出问题说明

你看到的控制器无日志属于正常情况,默认Nginx Ingress v1.x版本未开启访问日志,仅输出错误日志,你可以修改Ingress控制器的配置开启访问日志,方便后续排查。

关于DNS配置的说明

你在本地工作机配置/etc/hosts解析到Ingress对外IP10.0.57.28的方案是正确的,不需要额外配置集群内的DNS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:21:00