none

Linux none(裸机)驱动

概述

大多数此驱动的用户应考虑使用新的 Docker 驱动,因为它配置起来要容易得多,并且不需要 root 访问权限。'none' 驱动仅推荐给高级用户使用。

本文档面向希望在自定义 VM 环境中运行 minikube 的系统集成商。`none` 驱动允许高级 minikube 用户跳过 VM 创建,从而使 minikube 可以在用户提供的 VM 上运行。

要求

一个满足以下条件的 Linux VM:

此 VM 还必须满足 kubeadm 要求,例如:

  • 2 个 CPU
  • 2GB 内存
  • iptables(在旧版模式下)
  • conntrack
  • crictl
  • cni-plugins
  • SELinux 宽容模式
  • cgroups v1(v2 尚不受 Kubernetes 支持)

用法

minikube start --driver=none

要将 `none` 设为默认驱动

sudo minikube config set driver none

问题

安全性降低

  • minikube 启动的服务可能在互联网上可用。请确保您有防火墙以保护您的主机免受意外访问。例如:
    • apiserver 监听 TCP *:8443
    • kubelet 监听 TCP *:10250 和 *:10255
    • kube-scheduler 监听 TCP *:10259
    • kube-controller 监听 TCP *:10257
  • 容器可能对您的文件系统拥有完全访问权限。
  • 容器可能能够通过利用容器逃逸漏洞(例如 CVE-2019-5736)在您的主机上执行任意代码。请保持您的 minikube 版本最新。

可靠性降低

  • 使用 none 驱动的 minikube 最初可能难以正确配置,因为它与其它本地运行的服务(例如 dnsmasq)产生冲突的可能性更大。

  • 当以 `none` 模式运行时,minikube 没有内置的资源限制机制,这意味着您可能会部署消耗主机所有资源的 Pod。

  • minikube 及其启动的 Kubernetes 服务可能会干扰系统上运行的其他软件。例如,minikube 将通过 systemd 启动和停止容器运行时,例如 docker、containerd、cri-o。

持久存储

  • minikube 期望用于卷的一些挂载点是绑定挂载或符号链接到持久位置的

    • /data
    • /tmp/hostpath_pv
    • /tmp/hostpath-provisioner

如果您没有专用磁盘用于这些,您可以使用通常是持久化的 `/var` 分区。

数据丢失

使用 `none` 驱动,minikube 将覆盖以下系统路径

  • /etc/kubernetes - 配置文件

运行 `minikube delete` 时,这些路径将被擦除

  • /data/minikube
  • /etc/kubernetes/manifests
  • /var/lib/minikube

由于 Kubernetes 对您的文件系统和 docker 镜像都拥有完全访问权限,因此可能会出现其他意外的数据丢失问题。

其他

  • `-p`(配置文件)不受支持:无法运行多个 `--driver=none` 实例

  • 许多 `minikube` 命令不受支持,例如:`dashboard`、`mount`、`ssh`

  • 使用 `none` 驱动的 minikube 具有令人困惑的权限模型,因为某些命令需要以 root 身份运行(“start”),而另一些则由普通用户运行(“dashboard”)

  • CoreDNS 检测到解析器循环,进入 CrashLoopBackOff 状态 - #3511

  • 某些 Linux 版本中的 docker 版本比 Kubernetes 预期的要新。要覆盖此设置,请使用以下参数运行 minikube:`minikube start --driver=none --kubernetes-version v1.11.8 --extra-config kubeadm.ignore-preflight-errors=SystemVerification`

  • 所有已知的 'none' 驱动问题列表

故障排除

  • 运行 `minikube start --alsologtostderr -v=4` 以调试崩溃问题

最后修改于 2023 年 4 月 28 日:从 none 驱动中移除 sudo -E (fa9388fc9)