【问题标题】:What is the difference between Drivers and Container Runtimes in Kubernetes?Kubernetes 中的驱动程序和容器运行时有什么区别?
【发布时间】:2020-08-28 06:21:03
【问题描述】:

我正在阅读有关 Minikube 安装过程的信息,并且驱动程序和容器运行时的名称让我感到困惑。

驱动程序

当我不选择驱动程序时,Minikube 将默认使用 Docker 驱动程序,因此在 Minikube 本身内部使用 Docker 守护程序。当我选择无时,它将使用主机的 Docker 守护程序。其他可以选择,如 podman、KVM 等。

容器运行时

说到容器运行时,我可以再次选择 Docker 或其他类似 Containerd。

我的询问

我找不到关于驱动程序和容器运行时之间差异的更详细解释。实际上我知道运行时存在用于在 Pod 中运行容器,但是驱动程序呢? Container Runtime 是否运行在 Driver 之上?

【问题讨论】:

    标签: docker kubernetes minikube


    【解决方案1】:

    驱动程序

    • 您想在哪里运行 Kubernetes?
      • 虚拟机? -> Hyperkit、VirtualBox、Parallels、VMWare 等
      • 容器? -> Docker(具有讽刺意味的是,如果你在 Mac 或 Windows 上,它会在 VM 上运行,但不能在 Linux 上运行)、Podman 等。

    容器运行时

    • 创建集群后,您希望如何配置它?使用什么运行时或 shim 来实例化其容器(和 Pod)?
      • Containerd -> 这是一个 shim,它从 kubelet 中理解 CRI 并运行带有类似 runc 的可执行文件的容器(实际运行时,使用类似 cgcreatensenter 的东西)
      • CRI-O -> 这是另一个从 kubelet 中理解 CRI 的 shim,就像 Containerd 运行带有类似 runc 的可执行文件的容器
      • Docker -> kubelet 使用dockershim 直接与 Docker 守护进程对话,后者与 Containerd 对话,实例化您的容器(我知道这很复杂,历史原因...)

    ✌️

    【讨论】:

    • 那么,如果我使用 Docker Runtime,最终它会被用作连接另一个运行时的桥梁吗?
    • 是的,基本上会使用 Docker -> containerd -> runc
    • 如果想在“外部特权容器”中运行 nvidia-docker,需要扩展哪个选项才能实现?在此处查看部分答案:github.com/kubernetes/minikube/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2019-11-24
    相关资源
    最近更新 更多