【问题标题】:Minikube vs Kubernetes in Docker for WindowsDocker for Windows 中的 Minikube 与 Kubernetes
【发布时间】:2018-12-15 00:45:45
【问题描述】:

我见过的大多数使用 Kubernetes 在本地进行开发的教程都使用 Minikube。在 Docker for Windows 的最新 Edge 版本中,您还可以启用 Kubernetes。我正在尝试了解两者之间的区别以及我应该使用的区别。

  1. Minikube 让你选择你想要的 Kubernetes 版本,Docker for Windows 能做到吗?我没有看到配置它的方法。
  2. Minikube 有 CLI 命令来启用仪表板、堆、入口和其他插件。我不知道为什么,因为我的理解是这些只是在执行kubectl apply -f http://...
  3. 使用 Minikube,我可以通过 minikube ip 获取入口的集群 IP 地址,如何使用适用于 Windows 的 Docker 执行此操作?
  4. 还有什么不同的地方需要我关心。

【问题讨论】:

  • 我在 Docker Desktop 上使用 Minikube 的一个重要原因是 Minikube 的资源限制完全可以从命令行进行配置,而 Docker Desktop 需要您进入 GUI 来配置 CPU、内存和磁盘使用等内容.很多这些东西(尤其是磁盘使用,如果您知道您的图像将超过默认的 64 GB)与您的源代码紧密耦合,因此应该通过自动化脚本进行源代码控制,以便整个项目可以进入运行状态互动最少。

标签: docker kubernetes minikube docker-for-windows


【解决方案1】:

我觉得您在很大程度上了解该领域,并且大多已经回答了您的问题。您可能会发现 Docker for Mac vs. Docker Toolbox 是一本内容丰富的读物,即使它是关于 Mac 等价物而不是 Windows,以及关于打包为 VM 而不是 Kubernetes 的 Docker。

  1. 事实上,您被 Docker Edge 桌面发行版发布的特定 Kubernetes 版本所困。

  2. 已在问题中回答。

  3. 我相信 NodePort 类型的服务发布在您主机的 IP 地址上;没有像 Docker Toolbox 那样的中间 VM 地址。

  4. Docker Toolbox 和 minikube 始终使用成熟的虚拟机和现成的管理程序。如果可用,Docker 桌面应用程序可能会使用更轻量级的虚拟化引擎。

  5. Kubernetes 可能涉及一些重要的后台工作。如果您使用的是 Kubernetes-in-Docker,那么很难“关闭”Kubernetes 并且仍然可以使用 Docker;但如果你有一个单独的 minikube VM,你可以停止它。

【讨论】:

  • 好吧,您可以在 Kubernetes 选项卡上的 Docker Edge 设置/首选项中取消选中“启用 Kubernetes”复选框以停止 docker-for-desktop VM。
【解决方案2】:

这是来自 Docker documentation 的一部分:

Kubernetes 仅适用于 Windows 18.02 CE Edge 的 Docker。 Docker for Windows 18.02 CE 中不包含 Kubernetes 支持 稳定的。了解更多关于稳定和边缘通道以及如何 在它们之间切换,请参阅常规配置。

Docker for Windows 18.02 CE Edge 包含一个独立的 Kubernetes 服务器和客户端,以及 Docker CLI 集成。 Kubernetes 服务器在您的 Docker 实例中本地运行,不可配置, 并且是一个单节点集群。

Kubernetes 服务器在您本地的 Docker 容器中运行 系统,并且仅用于本地测试。当 Kubernetes 支持是 启用后,您可以在 Kubernetes 上并行部署工作负载, Swarm,并作为独立容器。启用或禁用 Kubernetes 服务器不会影响您的其他工作负载。

请参阅Docker for Windows > Getting started 以启用 Kubernetes 和 开始在 Kubernetes 上测试您的工作负载部署。

如果您有足够的 CPU 和 RAM 资源,您可以轻松地在同一台机器上同时拥有 minikubedocker-for-desktop,并通过选择上下文在它们之间切换,例如:

> kubectl config get-contexts
> kubectl config use-context docker-for-desktop

docker-for-desktop 目前没有地方可以选择 Kubernetes 版本。它是 Docker 分发包中的preselected

不幸的是,minikube 中的 docker 版本比 docker 网站上的版本落后了一步,一些功能可能是missing,但如果你对 Kubernetes 环境感兴趣,在大多数情况下并不重要.

Kubernetes 的某些功能依赖于外部资源,在本地安装的情况下您可能无法使用。例如,您需要能够创建 Cloud Load Balancer 以使用某些类型的 IngressService 对象。

但其他资源可以在minikube内轻松启动,或者使用kubectl create/applydocker-for-desktop

要在外部公开您的集群资源,您可以使用Webhook Relay Ingress controller
这是安装手册的link

【讨论】:

  • 知道如何在 Windows 的 Docker 中实现 minikube ip 的等效项吗?
  • $( kubectl describe node docker-for-desktop ) 或 $( docker run --net=host codenvy/che-ip )。您还可以运行特权容器并运行 ifconfig: $( docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh )
猜你喜欢
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 2019-12-05
  • 2019-02-01
  • 2019-08-26
相关资源
最近更新 更多