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(Kubernetes 尚不支持 v2)

用法

minikube start --driver=none

none 设置为默认驱动程序

sudo minikube config set driver none

问题

安全性降低

  • minikube 启动的服务可能在 Internet 上可用。请确保您有防火墙来保护您的主机免受意外访问。例如
    • 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 命令不受支持,例如:dashboardmountssh

  • 使用 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)