如何在GKE Nginx Ingress中配置Namecheap自有域名并排查DNS解析失败问题
GKE域名配置返回DNS_PROBE_FINISHED_NXDOMAIN错误排查方案
一、DNS链路核心配置错误(导致NXDOMAIN的首要原因)
- 操作顺序错误:你直接在Namecheap配置了谷歌域名NS,但未提前在GCP Cloud DNS创建对应域名的公共托管区,正确操作流程如下:
- 登录GCP控制台进入Cloud DNS服务,创建对应你的主域名
stagingmyappsrl.com(或根域名myappsrl.com)的公共托管区 - 创建完成后系统会自动分配4组NS服务器,将Namecheap后台的NS记录替换为GCP分配的这4组即可,Cloud DNS的NS前缀和集群可用区无关联,你自行选择带c后缀的NS本身无依据,且当前配置重复写入了两次
ns-cloud-c3.googledomains.com.,属于错误配置 - 在托管区中添加A记录,将你需要用到的
www.stagingmyappsrl.com、api.stagingmyappsrl.com都指向Nginx Ingress Controller的外部IP,该IP可通过命令kubectl get svc -n ingress-nginx ingress-nginx-controller获取EXTERNAL-IP字段值
- 登录GCP控制台进入Cloud DNS服务,创建对应你的主域名
- NS记录修改后最长需要48小时全球生效,可本地运行
nslookup 你的域名 8.8.8.8验证解析是否正常,能返回你配置的Ingress IP即代表DNS链路正常。
二、Ingress配置多处错误
你的Ingress配置存在拼写不匹配、转义错误问题,即使DNS正常也无法正常路由:
- tls配置段声明的域名是
www.stagingmyappsrl.com、api.stagingmyappsrl.com,但rules规则里的host分别写的是wwwstaging.myappsrl.com、apistaging.stagingmyappsrl.com,两者完全不匹配,需要统一为你实际要使用的域名 - annotations中的
"是HTML转义字符,需要替换为普通双引号"letsencrypt-prod" - 修复完成后重新apply Ingress配置,运行
kubectl describe ingress -n staging ingress检查是否存在配置报错。
三、证书前置检查
cert-manager的ClusterIssuer配置中apiVersion为v1alpha2,需要确认已安装对应版本的cert-manager,版本不匹配会导致证书签发失败,即使DNS解析正常也会出现HTTPS访问错误,可运行kubectl get clusterissuer检查STATUS是否为Ready。
内容的提问来源于stack exchange,提问作者agusgambina
相关产品推荐
相关产品推荐

