minikube 0.30.0 DNS 在 Docker 18.06.1-ce 和 vm-driver=none 的 CentOS 7 上不工作

minikube 0.30.0 DNS not working on CentOS 7 with Docker 18.06.1-ce and vm-driver=none

出于学习目的,我正在 CentOS 7 Linux 机器上试验 minikube Docker 18.06.010ce 安装

我使用

安装了 minikube
minikube start --vm-driver=none"

我部署了一些应用程序,但发现它们无法使用主机名相互通信。

我使用

删除了 minikube
minikube delete

我使用

重新安装了 minikube
minikube start --vm-driver=none

然后我按照 "Debugging DNS Resolution" 下的说明进行操作 (https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/) 但才发现 DNS 系统无法正常工作

更准确地说,我 运行:

1.

kubectl create -f https://k8s.io/examples/admin/dns/busybox.yaml

2.

# kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10

nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1

3.

# kubectl exec busybox cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local contabo.host
options ndots:5

4.

# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME                        READY   STATUS    RESTARTS   AGE
coredns-c4cffd6dc-dqtbt     1/1     Running   1          4m
kube-dns-86f4d74b45-tr8vc   2/3     Running   5          4m

令人惊讶的是,kube-dns 和 coredns 都是 运行ning 这应该是一个问题吗?

我到处寻找解决方案但没有成功 第 2 步总是 returns 错误

我简直无法接受这么简单的事情却成了我的大麻烦 请协助

我的正在启用 coredns 并禁用 kube-dns。

C02W84XMHTD5:ucp iahmad$ minikube addons list
- addon-manager: enabled
- coredns: enabled
- dashboard: enabled
- default-storageclass: enabled
- efk: disabled
- freshpod: disabled
- heapster: disabled
- ingress: disabled
- kube-dns: disabled
- metrics-server: disabled
- nvidia-driver-installer: disabled
- nvidia-gpu-device-plugin: disabled
- registry: disabled
- registry-creds: disabled
- storage-provisioner: enabled

您可以禁用 kube-dns:

minikube addons disable kube-dns

请注意下面 kube-dns pod 的输出,它只有 3 个容器中的 2 个 运行。

kube-dns-86f4d74b45-tr8vc 2/3 Running 5 4m

我最后一次遇到这种情况是在 Docker 的默认 FORWARD 策略是 DROP 时。使用下面将其更改为 ACCEPT 解决了我的问题。

iptables -P FORWARD ACCEPT

也可能是其他原因,请查看 pod 日志。

删除/etc/kubernetes和/var/lib/kubelet和/var/lig/kubeadm.yaml并重新启动minikube后,我现在可以成功重现DNS解析调试步骤(https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/)

我敢打赌,一些过时的设置在 minikube start/top 迭代中持续存在,导致配置不一致。

值得一提的是重启iptables后DNS解析丢失

我怀疑这与 iptables 规则相关,一些规则即由 minikube 放置,并且当它作为 iptables 的一部分重新启动时丢失,问题再次出现

删除/etc和/var/lib下的所有状态文件后,我通过重新安装Minikube设法解决了问题,但忘记更新了。

现在可以关闭了。