驱动程序

如何创建新的虚拟机驱动程序

本文档面向熟悉 minikube 并希望添加对新虚拟机驱动程序支持的贡献者。

本文档讨论了如何修改 minikube,以便可以使用 minikube start --driver=<new_driver> 来使用该驱动程序。

内置驱动程序 vs 外部驱动程序

大多数驱动程序都是内置的:它们作为代码依赖项包含在 minikube 中,因此无需进一步安装。您可能希望使用外部驱动程序的两种主要情况是:

  • 该驱动程序存在代码依赖项,由于平台不兼容性(kvm2)或许可原因,minikube 不应依赖该依赖项。
  • 该驱动程序需要以提升的权限运行(hyperkit)。

外部驱动程序是通过执行命令 docker-machine-driver-<name> 来实例化的,该命令会启动一个 RPC 服务器,minikube 将与之通信。

集成驱动程序

集成过程基本上是 3 个步骤。

  1. k8s.io/minikube/pkg/minikube/drivers 中创建一个驱动程序代理
    • 为支持的操作系统添加 Go 构建标签
    • 定义要在 DriverDef 中注册的驱动程序元数据
  2. pkg/minikube/cluster/default_drivers.go 中添加导入,以便该驱动程序可以包含在 minikube 构建过程中。

驱动程序代理

驱动程序代理的主要职责是向 minikube 注册 VM 驱动程序,并将 minikube VM 硬件配置转换为驱动程序可以理解的格式。

注册您的驱动程序

注册表上的文档可在此处找到:https://pkg.go.dev/k8s.io/minikube/pkg/minikube/registry

DriverDef 是定义驱动程序元数据的主要结构。基本上,您最多需要定义 4 项内容,一旦您充分了解您的驱动程序,这将非常简单。

  • Name:驱动程序的唯一名称,它将用作注册表中的唯一 ID,以及 minikube 命令中的 --driver 选项。

  • Builtin:如果驱动程序应内置到 minikube 中(首选),则为 true。否则为 false

  • ConfigCreator:如何将 minikube 配置转换为驱动程序配置。驱动程序配置将持久保存在您的 $USER/.minikube 目录中。驱动程序配置很可能就是驱动程序本身。

  • DriverCreator:仅当驱动程序是内置的时才需要,用于实例化驱动程序实例。

有任何问题吗:请联系您的朋友 @anfernee 或 #minikube Slack 频道。


最后修改日期 2025 年 9 月 25 日:不带 docker machine 更新文档 (94f5b15ad)