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

Kubernetes应用访问域名修改后无法解析,请求技术协助

问题排查与解决方案

你遇到的curl: (6) Could not resolve host错误本质是域名解析失败,和Kubernetes内部的Ingress重写规则、Service/Deployment配置无关,核心是applicationname.namespacename.myhost这个域名没有被正确映射到你的Ingress控制器的外部IP。以下是具体排查和解决步骤:

1. 先搞定域名解析(核心问题)

不管是生产环境还是本地测试,必须确保域名能被解析到Ingress控制器的IP:

  • 生产/云环境:登录你的域名服务商后台,添加一条A记录,将applicationname.namespacename.myhost指向Ingress控制器对应的负载均衡器IP或者集群节点的公网IP。
  • 本地测试环境:直接修改本地hosts文件:
    • Linux/macOS:编辑/etc/hosts,添加一行:[你的Ingress控制器IP] applicationname.namespacename.myhost
    • Windows:编辑C:\Windows\System32\drivers\etc\hosts(需要管理员权限),同样添加上述映射。

2. 验证Ingress配置的正确性

修改后的Ingress清单可以参考下面的内容(如果你的API本身就监听根路径/,rewrite-target注解其实可以省略,不会影响访问):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: applicationname
  namespace: namespacename
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /  # 仅当需要路径重写时保留
spec:
  rules:
  - host: applicationname.namespacename.myhost
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: applicationname-service
            port:
              number: 80

应用配置后,执行命令检查Ingress状态:

kubectl get ingress applicationname -n namespacename

确保输出的ADDRESS字段显示正确的Ingress控制器IP,状态为Ready。

3. 绕过DNS验证Ingress是否正常工作

如果暂时不想配置DNS,可以直接通过Host头模拟域名访问,验证Ingress和后端服务是否正常:

curl http://[Ingress控制器IP] -H "Host: applicationname.namespacename.myhost"

如果能正常返回你的Python API响应,说明K8s内部的Ingress、Service、Deployment配置都没问题,只需要搞定DNS解析即可。

4. 额外排查点

  • 如果你用的是云厂商的K8s集群,确认负载均衡器的安全组/防火墙规则允许80端口的流量进入。
  • 刷新本地DNS缓存,避免旧的解析记录干扰:
    • Linux:systemd-resolve --flush-caches
    • macOS:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    • Windows:ipconfig /flushdns

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:34:53