vSphere#

本文档为使用 VMware vSphere 提供程序的 SkyPilot 用户提供,帮助他们在 VMware vSphere 上进行基本配置以满足运行 SkyPilot 任务的需求。

准备类别和标签#

使用 vSphere 提供程序时需要类别和标签,请按照以下步骤创建它们。

创建类别

  1. 打开网页浏览器并登录您的 vSphere Client。

  2. 导航至 菜单 -> 标签和自定义属性

vSphere Catagory Creation Navigate
  1. 点击 标签 -> 类别 -> 新建

vSphere Catagory Creation Navigate New
  1. 使用以下内容填写 创建类别 表单

Category Name: skypilot
Tags Per Object: Many tags
Associable Object Types: Datastore, Content Library, Library Item, VirtualMachine
vSphere Catagory Creation
  1. 点击 创建 完成创建。

创建标签

  1. 打开网页浏览器并登录您的 vSphere Client。

  2. 导航至 菜单 -> 标签和自定义属性

vSphere Catagory Creation Navigate
  1. 点击 标签 -> 标签 -> 新建

vSphere Catagory Creation Navigate
  1. 使用以下内容填写 创建标签 表单

Name: skypilot
Category: skypilot
vSphere Tags Creation
  1. 点击 创建 完成创建。

创建 VM 存储策略#

vSphere 提供程序依赖于 VM 存储策略来放置 VM。建议使用共享数据存储。

  1. 打开网页浏览器并登录您的 vSphere Client。

  2. 导航至 菜单 -> 清单

Datastore Add Tag
  1. 点击 数据存储图标

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

Datastore Add Tag
  1. 导航至 菜单 -> 策略和配置文件

Storage Policy Navigate
  1. 选择 VM 存储策略,然后点击 创建 按钮。

Storage Policy Navigate New
  1. 名称和描述 步骤中,将名称指定为 skypilot_policy

Policy Name
  1. 策略结构 步骤中,选择 启用基于标签的放置规则

Policy Rule
  1. 基于标签的放置 步骤中,选择标签 skypilot

Policy Tags
  1. 存储兼容性 步骤中,查看数据存储。

Policy Review
  1. 查看并点击 完成 创建策略。

准备 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 转换为模板.

  1. 关闭 VM 电源。

  2. 选择 VM 并右键点击 -> 克隆 -> 克隆为库中的模板

VM Clone To Temple
  1. 选择模板类型:OVF,提供模板名称并点击 下一步

VM Clone To Temple OVF
  1. 选择内容库位置并点击 下一步

    如果您尚未设置 本地 内容库,请创建一个。请参阅 创建库

VM Clone To Temple Content Lib
  1. 查看并点击 完成

步骤 7. 为 VM 模板添加标签.

按照以下步骤为 VM 模板添加标签

  1. 导航至 菜单 -> 内容库

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

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

Content Lib Item
  1. 为 VM 模板分配相关标签。

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

Content Lib Item Taging

参考#

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 模板。