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(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`
故障排除
- 运行 `minikube start --alsologtostderr -v=4` 以调试崩溃问题