1. minikube none 驱动
Linux none (bare-metal) 驱动。即 Minikube 不使用任何类型的驱动,直接使用当前操作系统来运行 Minikube,也称为裸金属(bare-metal)。
1.1. 概述
[!NOTE|style:flat] 使用这个
none
驱动的大多数用户应该考虑 Docker 驱动,因为它配置起来非常容易,而且不需要 root 访问权限。 这个none
驱动程序只推荐高级用户使用。
本文档是为希望在独立定制的 VM 环境中运行 minikube 的系统用户编写的。none
驱动允许高级的 minikube 用户跳过创建虚拟机,允许 minikube 直接运行在用户提供的虚拟机上。
1.2. 依赖
一个 Linux 的 VM 虚拟机,并有以下要求:
- 系统 init 服务,例如 systemd 或 OpenRC
- 有容器运行时, 例如 Docker 或 CRI-O。
这个虚拟机的要求详见 kubeadm requirements, 例如:
- 2 CPU's
- 2GB RAM
- iptables (in legacy mode)
- conntrack
- crictl
- SELinux permissive
- cgroups v1 (v2 is not yet supported by Kubernetes)
1.3. 使用
这个 none
驱动要求 minikube 使用 root 来运行,直到问题 #3760 能够被解决.
sudo -E minikube start --driver=none
设置 none
为默认驱动:
sudo minikube config set driver none
1.4. none 驱动的一些已知问题
1.4.1. 降低了安全性
- minikube 启动的服务可能暴露在 Internet 公网上。请确保您有防火墙来保护您的主机免受意外访问。例如:
- apiserver 监听 TCP
*:8443
- kubelet 监听 TCP
*:10250
and*:10255
- kube-scheduler 监听 TCP
*:10259
- kube-controller 监听 TCP
*:10257
- apiserver 监听 TCP
- 容器可以完全访问您的文件系统。
- 容器可以通过使用容器逃逸漏洞(如CVE-2019-5736)在您的主机上执行任意代码。请保持您发布的 minikube 最新。
1.4.2. 降低了易用性
带有
none
驱动程序的 minikube 在一开始可能很难配置正确,因为在系统上有很多本地服务会干扰,如 dnsmasq。当在
none
模式下运行时,minikube 没有内置的资源限制机制,这意味着你部署的服务 pods 可以消耗所有主机资源。minikube 和它启动的 Kubernetes 服务可能会干扰系统上其他正在运行的软件。例如,minikube 将通过 systemd 启动和停止容器运行时,如 docker, containerd, crio。
1.4.3. 持久存储
minikube 期望一些用于卷的挂载点是绑定挂载或符号链接到一个持久的位置:
/data
/tmp/hostpath_pv
/tmp/hostpath-provisioner
如果你没有一个专用的磁盘来使用这些,你可以使用 /var
分区,它是 习惯上 的存储路径
1.4.4. 数据丢失
使用 none
驱动,minikube 将会覆盖一下的系统路径:
- /etc/kubernetes - 配置文件
这些路径将会被删除,当执行 minikube delete
时:
- /data/minikube
- /etc/kubernetes/manifests
- /var/lib/minikube
由于 Kubernetes 可以完全访问您的文件系统和 docker 镜像,因此可能会出现其他意想不到的数据丢失问题。
1.4.5. 其他
-p
(profiles) 选项不支持: 不能运行多个--driver=none
实例(只支持运行一个 Kubernetes 集群)。- 许多
minikube
命令不支持,如:dashboard
,mount
,ssh
- minikube 的
none
驱动程序有一个令人困惑的权限模型,因为一些命令需要以 root 用户的身份运行(“start”),而其他命令则需要由普通用户运行(“dashboard”)。 - CoreDNS 陷入循环解析,使服务异常 CrashLoopBackOff - #3511
- 一些 Linux 版本 的docker 版本比 Kubernetes 所期望的更新。要覆盖这个,使用以下参数运行m inikube:
sudo -E minikube start --driver=none --kubernetes-version v1.11.8 --extra-config kubeadm.ignore-preflight-errors=SystemVerification
- 'none' 驱动所有问题列表
1.5. Troubleshooting
- 运行
minikube start --alsologtostderr -v=4
来调试异常。