使用kops创建集群遇Route53域名解析错误求助
排查kops创建Kubernetes集群时的DNS解析错误
从你描述的情况来看,有个很关键的矛盾点:你使用的集群域名是megatest.com,但错误提示却在查找artistesemergents.com的NS记录,这说明kops在执行过程中读取到了错误的域名配置。下面是一步步的排查和解决思路:
1. 定位错误域名的来源
首先要搞清楚artistesemergents.com这个域名是哪里来的:
- 检查kops状态存储的旧记录:执行以下命令查看S3存储里的集群配置:
如果输出里有kops get clusters --state=s3://kops-state-megatest123artistesemergents.com的集群记录,说明之前可能创建过这个集群,残留的配置干扰了当前操作。可以用下面的命令删除旧集群:kops delete cluster --name=artistesemergents.com --state=s3://kops-state-megatest123 - 检查本地kops配置文件:查看
~/.kops/config文件,看看有没有defaultCluster字段被设置成了artistesemergents.com。如果有,直接修改或删除这个配置项。 - 检查环境变量:执行
echo $KOPS_CLUSTER_NAME,如果输出是artistesemergents.com,说明这个环境变量覆盖了你命令里指定的域名,执行unset KOPS_CLUSTER_NAME清除即可。
2. 验证megatest.com的DNS解析是否正常
确认错误域名的问题解决后,需要确保你的megatest.com托管区能被正确解析:
- 使用公共DNS服务器验证:执行以下命令,确认返回的NS记录和你Route53里的一致:
正常情况下应该返回你提供的那四个AWS DNS服务器地址。dig NS megatest.com @8.8.8.8 - 刷新本地DNS缓存:如果本地解析有问题(比如错误里用的是127.0.0.53,这是systemd-resolved的本地缓存),可以执行:
sudo systemd-resolve --flush-caches # Ubuntu/Debian系统 # Windows系统执行:ipconfig /flushdns
3. 重新执行kops集群创建命令
确保没有其他配置干扰后,重新运行你的创建命令:
kops create cluster --name=megatest.com --state=s3://kops-state-megatest123 --zones=us-east-1a --node-count=3 --node-size=t2.micro --master-size=t2.micro --dns-zone=megatest.com
如果还是有问题,可以加上--v=4参数开启详细日志,方便进一步排查:
kops create cluster --name=megatest.com --state=s3://kops-state-megatest123 --zones=us-east-1a --node-count=3 --node-size=t2.micro --master-size=t2.micro --dns-zone=megatest.com --v=4
4. 检查IAM权限(可选)
如果以上步骤都没问题,还要确认kops使用的IAM用户/角色有足够的Route53权限,比如route53:ListHostedZones、route53:GetHostedZone等,确保kops能正确访问你的megatest.com托管区。
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

