拓冰建站拓冰建站
首页 / 资讯中心 / 正文

minikube 的 Parallels 驱动:在 macOS 上无需 VT-x 运行本地 Kubernetes 集群

minikube 的 Parallels 驱动在 macOS 上无需 VT-x 运行本地 Kubernetes 集群【免费下载链接】minikubeRun Kubernetes locally项目地址: https://gitcode.com/gh_mirrors/mi/minikube本指南围绕 minikube 官方文档 parallels.md 展开深入讲解 Parallels 驱动的适用场景、环境要求、启动配置与底层实现原理。读完本文你将掌握如何在装有 Parallels Desktop 的 Mac 上通过--driverparallels启动本地 Kubernetes 集群、如何将其设为默认驱动、如何调优虚拟机资源参数以及在启动失败时如何利用源码定位问题。Overview为什么选择 Parallels 驱动在 macOS 上运行 minikube 有多种驱动可选docker、hyperkit、vfkit、parallels、virtualbox 等完整清单见 driver.go 中的Parallels常量及其兄弟驱动。Parallels 驱动的核心价值在于无需 VT-x 硬件支持对于在 Mac 上使用 Parallels Desktop 的用户而言这是最省事的选择之一尤其适合那些硬件虚拟化支持受限的环境。与 Docker Machine 生态一脉相承该驱动的实现源自 Parallels IP Holdings 对 Docker Machine 的官方移植源码保留其版权声明代码结构清晰、生命周期管理完善。需要特别注意的是从源码可以明确推断该驱动是macOS 专属在非 darwin 平台parallels.go 的NewDriver直接返回drivers.NewDriverNotSupported(parallels, ...)而 darwin 版本 parallels_darwin.go 中的PreCreateCheck也会首先校验runtime.GOOS ! darwin并直接报错。因此在 Linux 或 Windows 上无法使用该驱动。Requirements环境要求根据官方文档 parallels_usage.inc 的要求Parallels Desktop 11.0.0且必须为 Pro 或 Business 版本这一要求并非空谈它对应源码中的PreCreateCheck三重校验见 parallels_darwin.go平台校验仅允许darwinmacOS。版本校验通过prlctl --version解析版本号低于11.0.0源码中的v11常量直接拒绝源码注释还提到一个历史兼容性细节——Parallels Desktop 13.0.* 需要特殊的初始磁盘尺寸处理见 parallels_darwin.go 中 13.0.0, 13.1.0的版本约束。版本类型校验通过prlsrvctl info --license解析edition...仅接受pro与business标准版Standard会被拒绝错误信息明确提示只能使用 Parallels Desktop Pro 或 Business 版本。此外驱动的正常运作依赖三个 Parallels 官方命令行工具若缺失会在对应调用处报错见 prlctl.go二进制用途prlctlVM 的创建、配置、启停与查询prlsrvctl获取许可证信息、查询 Shared 网络prl_disk_tool磁盘镜像的扩容与格式转换Usage启动集群并设为默认驱动方式一命令行临时指定驱动minikube start --driverparallels该命令会调用minikube start的驱动注册机制驱动注册表见 pkg/minikube/registry将parallels作为本次启动的 VM 驱动创建一台 Parallels 虚拟机并在其中初始化 Kubernetes 集群。方式二设为默认驱动推荐minikube config set driver parallels设置后后续所有minikube start都会默认使用 Parallels 驱动无需再重复指定。可通过以下命令验证当前默认配置minikube config view如需撤销使用minikube config unset driver恢复自动探测行为。常用管理命令集群启动后minikube 的标准管理命令对 Parallels 驱动同样适用minikube status # 查看集群与驱动状态 minikube stop # 优雅关闭 VM minikube start # 再次启动 minikube delete # 删除集群与 VM其中stop会调用驱动的Stop()见 parallels_darwin.go先执行prlctl stop再轮询等待 VM 真正退出运行态避免假停止。驱动核心参数与默认值Parallels 驱动通过GetCreateFlags注册了一组专属参数见 parallels_darwin.go可在minikube start时通过--flag传入也可用环境变量控制。下表整理了完整参数、默认值与说明命令行参数环境变量默认值说明--parallels-memoryPARALLELS_MEMORY_SIZE1024MBVM 内存大小--parallels-cpu-countPARALLELS_CPU_COUNT1CPU 核数传-1表示使用宿主机全部可用 CPU--parallels-video-sizePARALLELS_VIDEO_SIZE64MB显存大小小于 2 时回退到默认值--parallels-disk-sizePARALLELS_DISK_SIZE20000MB磁盘容量创建时最终会按该值扩容--parallels-boot2docker-urlPARALLELS_BOOT2DOCKER_URL空使用最新可用版本boot2docker ISO 的下载地址--parallels-no-share无false禁用共享文件夹挂载--parallels-share-folder无/Users需要共享给 VM 的主机目录路径--parallels-nested-virtualization无false开启嵌套虚拟化对应实现中SetConfigFromFlags见 parallels_darwin.go会将以上参数写入Driver结构体。值得注意的是 CPU 上限约束创建 VM 时若 CPU 数小于 1 则取runtime.NumCPU()若大于 32 则截断为 32见 parallels_darwin.go。例如创建一个 4 核 8GB 内存的集群minikube start --driverparallels \ --parallels-cpu-count4 \ --parallels-memory8192底层创建流程从 prlctl 到集群就绪理解驱动的Create()实现见 parallels_darwin.go有助于在排查启动问题时定位环节。整体流程如下准备镜像与密钥将 boot2docker ISO 复制到机器目录生成 SSH 密钥对。创建 VMprlctl create name --distribution linux --dst storePath --no-hdd随后通过prlctl set依次配置 CPU、内存、显存并关闭 CPU 热插拔、开启合上窗口保持运行与省电模式。挂载引导盘将 ISO 挂载为 SATA CD-ROM 并设为唯一引导设备--device-bootorder cdrom0。创建与扩容磁盘先创建一个小型 plain 磁盘默认 32MBParallels 13.0.* 特殊处理为 1891MB然后写入 boot2docker 磁盘镜像的 tar 数据最后用prl_disk_tool convert --expanding --merge转为动态扩展盘并按--parallels-disk-size扩容见generateDiskImageparallels_darwin.go。头less 模式设置--startup-view headlessVM 在后台运行。共享文件夹配置关闭主机自定义共享与 iCloud/Profile 共享按需通过--shf-host-add添加用户指定目录。串口 socket添加parallels-serial-machineName串口设备用于调试输出。启动与等待就绪prlctl start后循环最多 60 次、每次间隔 2 秒合计最长 120 秒等待 VM 上线先通过解析 DHCP 租约文件拿到 IP再探测 SSH 22 端口是否可达。其中IP 获取机制值得一提驱动读取 Parallels 的 DHCP 租约文件/Library/Preferences/Parallels/parallels_dhcp_leases通过prlctl list -i查询 VM 网卡 MAC 地址再在租约文件中匹配该 MAC 对应的最近有效 IP见getIPfromDHCPLeaseparallels_darwin.go。这也是为什么 Parallels 的Shared Network共享网络必须开启且 Mac 必须连接checkSharedNetworkConnectedparallels_darwin.go会校验宿主机网卡上是否存在 Shared 网络适配器的 IPv4 地址否则直接拒绝创建/启动。集群就绪后minikube 通过 SSH用户docker、端口 22见 parallels_darwin.go 中的defaultSSHUser/defaultSSHPort与 VM 内节点通信执行 kubeadm 等引导逻辑。共享文件夹机制Parallels 驱动默认共享/Users目录可通过--parallels-share-folder覆盖其名称以docker_machine_share_为前缀shareFolderNamePrefix常量。挂载流程mountShareFolderparallels_darwin.go检查主机目录是否存在不存在则跳过并记录日志在 guest 内sudo modprobe prl_fs加载 Parallels 文件系统内核模块并确认共享出现在/proc/fs/prl_fs/sf_list通过sudo mount -t prl_fs shareName mountPoint挂载到 guest 相同路径。若不需要共享例如追求更干净的运行环境可用--parallels-no-share关闭。Troubleshooting故障排查官方文档给出的通用调试手段是minikube start --alsologtostderr -v7-v7会输出全量调试日志包括驱动内部log.Debugf级别的执行细节同时设置环境变量MACHINE_DEBUG1可以额外让prlctl、prlsrvctl、prl_disk_tool等子进程的标准输出直接透传见 prlctl.go非常适合定位底层命令失败的原因。结合源码常见失败场景与对策如下现象根因源码依据对策报错 works only on macOS在非 macOS 平台使用换用 docker 等支持当前平台的驱动报错 supports only Parallels Desktop 11 and higherParallels 版本低于 11.0.0升级 Parallels Desktop 至 11报错 only with Parallels Desktop Pro or Business edition使用了 Standard 版本升级到 Pro/Business 版本报错 not connected to Shared networkShared 网络未开启或 Mac 未连接打开 Parallels Desktop 偏好设置 → 网络 → Shared → 勾选 Connect Mac to this network报错 Could not detectprlctlbinaryParallels 命令行工具不在 PATH确认已安装 Parallels Desktop Pro/Business 且工具路径可用创建后长时间无 IPDHCP 租约文件缺失或 Shared 网络异常检查parallels_dhcp_leases与网络偏好设置关于 Issues官方文档维护了 Parallels 驱动的问题标签co/parallels-driver。若遇到驱动相关异常建议在提交 Issue 时附带上述-v7的完整日志与 minikube 版本信息便于维护者定位是驱动层问题还是环境问题。延伸阅读驱动官方文档site/content/en/docs/drivers/parallels.md使用说明Requirements 与 Usage 来源site/content/en/docs/drivers/includes/parallels_usage.incdarwin 平台驱动实现pkg/drivers/parallels/parallels_darwin.go非 macOS 平台占位实现pkg/drivers/parallels/parallels.goParallels 命令行封装pkg/drivers/parallels/prlctl.go驱动注册与Parallels常量定义pkg/minikube/driver/driver.go如果你想了解 minikube 在其他平台上的驱动方案如 Linux 的 KVM2、Windows 的 Hyper-V、macOS 的 vfkit/docker可以继续阅读 site/content/en/docs/drivers 下的对应驱动文档。【免费下载链接】minikubeRun Kubernetes locally项目地址: https://gitcode.com/gh_mirrors/mi/minikube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门