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

How to resolve DNS lookup error when trying to run example microservice application using minikube

亲爱的 Whosebug 社区!

我正在尝试 运行 https://github.com/GoogleCloudPlatform/microservices-demo locally on minikube, so I am following their development guide: 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 returns 恢复为包含 10.0.2.3 作为唯一 DNS 的原始状态入口。访问外部互联网并在 minikube VM 中 ping 8.8.8.8 表单。

你能给我指出一个方向吗?我怎样才能解决问题并了解 minikube/kubernetes 中的 DNS 是如何工作的?我听说 Kubernetes 集群中的 DNS 问题是您 运行 遇到的常见问题。

感谢您的回答!

此致, 理查德

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

听起来 OP 的问题已解决,但如果有人在 minikube 中使用 docker,那么下面的建议对我有用。

参考:https://github.com/kubernetes/minikube/issues/10830

minikube ssh
$>sudo vi /etc/docker/daemon.json
# Add "dns": ["8.8.8.8"]
# save and exit
$>sudo systemctl restart docker