Minikube Kubernetes 不允许进入 Mac 尽管 运行 作为虚拟机

Minikube Kubernetes won't allow ingress on Mac despite running as a VM

I 运行 minikube start --vm=true 输出:

  minikube v1.12.2 on Darwin 10.15.5
✨  Using the docker driver based on existing profile
❗  Your system has 16384MB memory but Docker has only 1991MB. For a better performance increase to at least 3GB.

    Docker for Desktop  > Settings > Resources > Memory


  Starting control plane node minikube in cluster minikube
  Restarting existing docker container for "minikube" ...
  Preparing Kubernetes v1.18.3 on Docker 19.03.8 ...
  Verifying Kubernetes components...
  Enabled addons: dashboard, default-storageclass, storage-provisioner
  Done! kubectl is now configured to use "minikube"

然后这个 minikube addons enable ingress 给我带来了这个错误:

  Due to docker networking limitations on darwin, ingress addon is not supported for this driver.
Alternatively to use this addon you can use a vm-based driver:

    'minikube start --vm=true'

To track the update on this work in progress feature please check:
https://github.com/kubernetes/minikube/issues/7332

但是我 运行 带有那个特定标志的 minikube - 有什么建议吗?

看起来您的 Minikube 不是 运行ning 作为虚拟机。实际上它仍然使用 Docker 驱动程序。仔细看一下输出,其中 Docker 被提到了几次:

✨  Using the docker driver based on existing profile
❗  Your system has 16384MB memory but Docker has only 1991MB. For a better performance increase to at least 3GB.

    Docker for Desktop  > Settings > Resources > Memory

重点是“基于现有配置文件”

这里:

  Restarting existing docker container for "minikube" ...
  Preparing Kubernetes v1.18.3 on Docker 19.03.8 ...

虽然您尝试使用 --vm=true 选项启动您的 Minikube,但它显然被忽略并使用您的默认设置。

很可能是因为你第一次 运行 它带有 --driver=docker 选项(显式或隐式)并且它已保存在你的 Minikube轮廓。要解决此问题,您可能需要删除 Minikube 实例,然后使用 --vm=true 选项重新启动它。您可以更加具体,并通过提供 --driver=hyperkit 选项来选择确切的管理程序。

所以,只需尝试以这种方式启动您的 Minikube

minikube start --vm=true --driver=hyperkit

如果这没有帮助,你会再次看到相同的输出,提到它一直在使用 docker 驱动程序,运行:

minikube stop && minikube delete && minikube start --vm=true --driver=hyperkit

这应该可以解决您的问题。一旦它开始使用 HyperKit 管理程序,您应该能够 运行 minikube addons enable ingress 而不会出现任何错误。