You need to enable JavaScript to run this app. 使用minikube运行微服务示例时出现DNS解析错误该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用minikube运行微服务示例时出现DNS解析错误该如何解决

原因说明
  • 本次报错不属于Kubernetes集群内部的DNS异常,是minikube内置Docker daemon执行镜像构建阶段的DNS解析失败:你手动修改minikube节点的/etc/resolv.conf会被重置,是因为minikube默认每次启动时都会从宿主机同步DNS配置,且Docker daemon的DNS配置是独立管理的,不会直接读取节点的resolv.conf文件。
  • 报错中的10.0.2.3是VirtualBox/Hyperkit NAT网络的默认网关DNS地址,Docker构建时用该地址无法正常解析alpine软件源的公网域名,导致apk无法拉取git安装包。
解决方案
  • 方案一(推荐,永久生效):重建minikube实例时直接指定Docker的DNS配置
    先删除现有实例:minikube delete
    重新启动时添加DNS参数:minikube start --docker-opt dns=8.8.8.8 --docker-opt dns=114.114.114.114
    启动完成后重新执行skaffold run即可。
  • 方案二(无需重建实例):直接修改minikube内Docker的配置
    进入minikube节点终端:minikube ssh
    编辑Docker daemon配置文件:sudo vi /etc/docker/daemon.json
    写入如下配置:
    {
      "dns": ["8.8.8.8", "114.114.114.114"]
    }
    
    重启Docker服务生效:sudo systemctl restart docker
    退出节点终端后重新执行skaffold run即可。
  • 方案三(临时生效):执行skaffold时指定构建用的DNS参数
    直接运行命令:skaffold run --docker-build-opt="dns=8.8.8.8"
minikube/Kubernetes DNS运行机制
  • minikube节点层DNS:minikube启动时默认会读取宿主机的DNS配置写入节点的/etc/resolv.conf,如果使用NAT网络会默认添加NAT网关DNS地址10.0.2.3,每次重启minikube都会重写该文件,因此手动修改会失效。
  • Docker构建层DNS:minikube内置的Docker daemon默认继承节点的DNS配置,也可通过启动参数单独指定,Docker构建镜像过程中的所有网络请求都使用该DNS配置解析,和后续Pod运行时的DNS配置无关。
  • Kubernetes集群内部DNS:集群运行Pod时默认使用CoreDNS作为服务发现的DNS组件,Pod的/etc/resolv.conf默认指向CoreDNS的Service地址,CoreDNS负责解析集群内部的服务域名,公网域名则会转发给上游DNS(即minikube节点配置的DNS地址)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 12:06:00