none
概述
大多数使用此驱动的用户应考虑使用更新的 Docker 驱动,因为它配置起来明显更容易,并且不需要 root 访问权限。建议仅高级用户使用“none”驱动。
本文档是为希望在自定义 VM 环境中运行 minikube 的系统集成商编写的。none
驱动允许高级 minikube 用户跳过 VM 创建,从而允许 minikube 在用户提供的 VM 上运行。
要求
具有以下条件的 Linux VM:
- systemd 或 OpenRC
- 容器运行时接口 (CRI),例如 Docker 或 CRI-O
- containernetworking-plugins
- cri-dockerd (仅在使用 Docker CRI 时)
此 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
命令不受支持,例如: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
问题排查
- 运行
minikube start --alsologtostderr -v=4
来调试崩溃