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
  • 容器可以完全访问您的文件系统。
  • 容器可以通过使用容器逃逸漏洞(如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 命令不支持,如: dashboardmountssh
  • 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 来调试异常。
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-06-12 22:18:31

results matching ""

    No results matching ""