如何为现有Kubernetes集群添加新子域名并解决Ingress访问故障
核心结论
你碰到的ERR_NAME_NOT_RESOLVED报错和Ingress规则配置无关,这个错误出在域名解析环节,你的请求根本没有发送到Kubernetes集群,改Ingress配置解决不了这个问题。
缺失的必要配置步骤
Ingress资源只负责「当入口流量已经到达集群、且请求头里的Host匹配对应规则时,把流量转发到哪个Service」的逻辑,它不会自动帮你完成公网域名的解析配置。
只在Ingress yaml里加host规则是不够的,你必须先完成DNS解析配置:
- 先查询现有正常可用的
www.changed-for-privacy.com对应的公网IP,也就是你集群Ingress Controller绑定的公网入口地址,本地执行nslookup www.changed-for-privacy.com就能拿到这个IP - 到你的域名托管服务商的解析控制台,给
www3.changed-for-privacy.com添加一条A记录,记录值填上面查到的Ingress入口公网IP,TTL和现有www域名保持一致即可 - 等待DNS传播生效(通常1~10分钟,和你设置的TTL时长有关)
验证&后续排查
- 本地执行
nslookup www3.changed-for-privacy.com,如果能正确返回Ingress入口的公网IP,说明解析配置生效,此时再访问就不会出现找不到IP的报错 - 你贴的Ingress配置片段语法没有问题,和原有正常运行的条目完全一致的话,解析生效后流量转发逻辑不会有问题
- 如果解析生效后仍然访问异常,再执行
kubectl describe ingress <你的Ingress资源名>,查看Events栏有没有规则同步报错,确认Ingress Controller已经正确加载了你新增的转发规则即可
内容的提问来源于stack exchange,提问作者Arron
相关产品推荐
相关产品推荐

