尝试使用 minikube 运行示例微服务应用程序时如何解决 DNS 查找错误

问题描述

亲爱的 StackOverflow 社区!

我正在尝试在 minikube 上本地运行 https://github.com/GoogleCloudPlatform/microservices-demo,所以我遵循他们的开发指南:https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/docs/development-guide.md

在我成功设置minikube(使用virtualBox驱动,但我也尝试过hyperkit,但结果是一样的)并执行skaffold run后,一段时间后会出现以下错误

Building [shippingservice]...
Sending build context to Docker daemon    127kB
Step 1/14 : FROM golang:1.15-alpine as builder
 ---> 6466dd056dc2
Step 2/14 : RUN apk add --no-cache ca-certificates git
 ---> Running in 0e6d2ab2a615
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: DNS lookup error
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: DNS lookup error
ERROR: unable to select packages:
  git (no such package):
    required by: world[git]
Building [recommendationservice]...
Building [cartservice]...
Building [emailservice]...
Building [productcatalogservice]...
Building [loadgenerator]...
Building [checkoutservice]...
Building [currencyservice]...
Building [frontend]...
Building [adservice]...
unable to stream build output: The command '/bin/sh -c apk add --no-cache ca-certificates git' returned a non-zero code: 1. Please fix the Dockerfile and try again..

错误消息表明 DNS 不起作用。我尝试在 minikube VM 上将 8.8.8.8 添加/etc/resolv.conf,但没有帮助。我注意到在我重新运行 skaffold run 并再次失败后,内容 /etc/resolv.conf 返回到其原始状态,其中包含 10.0.2.3 作为唯一的 DNS 条目。访问外部互联网并在 minikube VM 中 ping 8.8.8.8 表单有效。

您能否指出我如何解决问题并了解 minikube/kubernetes 中的 DNS 是如何工作的方向?我听说 Kubernetes 集群内的 DNS 问题是您经常遇到的问题。

感谢您的回答!

最好的问候, 理查德

解决方法

使用 docker 驱动程序尝试过,即 minikube start --driver=docker,它可以工作。谢谢布赖恩!