vSphere#
本文档为使用 VMware vSphere 提供程序的 SkyPilot 用户提供,帮助他们在 VMware vSphere 上进行基本配置以满足运行 SkyPilot 任务的需求。
准备类别和标签#
使用 vSphere 提供程序时需要类别和标签,请按照以下步骤创建它们。
创建类别
打开网页浏览器并登录您的 vSphere Client。
导航至 菜单 -> 标签和自定义属性。

点击 标签 -> 类别 -> 新建。

使用以下内容填写 创建类别 表单
Category Name: skypilot
Tags Per Object: Many tags
Associable Object Types: Datastore, Content Library, Library Item, VirtualMachine

点击 创建 完成创建。
创建标签
打开网页浏览器并登录您的 vSphere Client。
导航至 菜单 -> 标签和自定义属性。

点击 标签 -> 标签 -> 新建。

使用以下内容填写 创建标签 表单
Name: skypilot
Category: skypilot

点击 创建 完成创建。
创建 VM 存储策略#
vSphere 提供程序依赖于 VM 存储策略来放置 VM。建议使用共享数据存储。
打开网页浏览器并登录您的 vSphere Client。
导航至 菜单 -> 清单。

点击 数据存储图标。
选择符合 VM 创建条件的数据存储,并为其分配之前创建的
skypilot
标签。

导航至 菜单 -> 策略和配置文件。

选择 VM 存储策略,然后点击 创建 按钮。

在 名称和描述 步骤中,将名称指定为
skypilot_policy
。

在 策略结构 步骤中,选择 启用基于标签的放置规则。

在 基于标签的放置 步骤中,选择标签 skypilot。

在 存储兼容性 步骤中,查看数据存储。

查看并点击 完成 创建策略。
准备 VM 镜像#
VM 必须基于 Linux;本文档中我们以 Ubuntu 20.04 作为基础操作系统。其他 Linux 发行版也可能工作,但不保证。
步骤 1. 准备一个基于 Linux 的 VM.
打开网页浏览器并登录您的 vSphere Client,创建一个基于 Linux 的虚拟机。
如果您不熟悉创建虚拟机的过程,请参阅本指南获取帮助:部署虚拟机
步骤 2. 创建用户并启用无密码 sudo.
登录您准备好的 VM,创建一个名为 ubuntu
的用户,并将其添加到 sudo 组。
sudo adduser ubuntu
sudo usermod -aG sudo ubuntu
编辑 sudoer 文件以启用无密码 sudo。
sudo visudo
添加以下行
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
步骤 3. 检查 VMtools 版本.
执行以下命令检查 VMtools 版本,要求版本 10.1.0 或更高。
vmware-toolbox-cmd -v
步骤 4. 在 VMtools 中启用自定义脚本.
执行以下命令检查是否启用了 enable-custom-scripts 选项
sudo vmware-toolbox-cmd config get deployPkg enable-custom-scripts
如果禁用了 enable-custom-scripts 选项,请执行以下命令启用它
sudo vmware-toolbox-cmd config set deployPkg enable-custom-scripts true
步骤 5. 安装 GPU 驱动程序.
不同的 GPU 需要不同的驱动程序;请根据您的 GPU 型号和操作系统版本选择正确的驱动程序。以 Ubuntu 和 Nvidia GPU 为例,以下驱动程序适用于大多数情况
sudo apt install nvidia-headless-535-server --no-install-recommends
步骤 6. 将 VM 转换为模板.
关闭 VM 电源。
选择 VM 并右键点击 -> 克隆 -> 克隆为库中的模板。

选择模板类型:OVF,提供模板名称并点击 下一步。

选择内容库位置并点击 下一步。
如果您尚未设置 本地 内容库,请创建一个。请参阅 创建库

查看并点击 完成。
步骤 7. 为 VM 模板添加标签.
按照以下步骤为 VM 模板添加标签
导航至 菜单 -> 内容库。

查看内容库并点击包含您的目标 VM 模板的那个。

查看内容库项目并点击您的目标 VM 模板。

为 VM 模板分配相关标签。
如果您不确定如何分配标签,请参阅 VM 模板标签规则

参考#
VM 模板标签规则
SkyPilot 的 vSphere 驱动程序使用标签来识别用于 GPU 的 VM 镜像。VI 管理员需要在内容库中相应地为 VM 模板添加标签。以下是一些为模板添加标签的规则
所有不需要加速器的工作负载将使用标记为
skypilot-cpu
的 VM 镜像。如果您有多个 VM 模板(内容项)标记为skypilot-cpu
,则只会使用第一个,因此最佳实践是只为一个镜像标记skypilot-cpu
。VI 管理员应为每个加速器供应商创建一个默认 VM 镜像,并使用格式
skypilot-vendorname
添加标签,例如skypilot-nvidia
。回退逻辑是:如果用户需要特定的 Nvidia GPU(例如 k1200),而 vSphere 驱动程序找不到标记为skypilot-K1200
的镜像,它将使用标记为skypilot-nvidia
的 VM 镜像。所有标签都应选择标签类别为:
skypilot
。
支持新的 GPU
vSphere 云提供程序有一个默认支持的 GPU 列表。您可以先执行 sky check
命令来检查默认列表。然后可以在文件 ~/.sky/catalogs/v5/vsphere/accelerators.csv
中找到 GPU 列表。如果您想支持新的 GPU,例如 Nvidia K1200
,可以在文件末尾添加一行
Model,Type,MemoryMB,vCPUs,fullNames
...
K1200,GPU,4096,4,['GM107GL [Quadro K1200]']
如果 GPU 需要特定的驱动程序,请让 VI 管理员创建一个新的 VM 模板并将其上传到内容库,然后为 VM 模板添加标签,例如 GPU-k1200
。如果新的默认 VM 模板的驱动程序支持新的 GPU,则无需创建新的模板。例如,如果标记为 skypilot-nvidia
的 VM 模板支持新的 GPU,则无需创建新的 VM 模板。