在本文中,你将部署在 Azure Kubernetes 服务 (AKS) 上使用 Kueue 运行 Ray AI 工作负载所需的基础结构。 Terraform 模块使用 GPU 节点池预配 AKS 群集,通过 Helm 安装 KubeRay 操作员和 Kueue 控制器,使用预暂存数据集创建Azure Blob 存储,并为安全访问配置工作负荷标识。
Important
AKS 文档和示例中都提到了开源软件。 您部署的软件被排除在 AKS 服务级别协议、有限保修和 Azure 支持之外。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。
Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括拥有构建、扫描、签名、验证和快速修复流程的完整所有权,并掌控容器镜像中的二进制文件。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。
先决条件
- 一份 Azure 订阅。 如果没有订阅,请创建一个试用帐户。
-
Azure CLI 2.70 或更高版本,已使用
az login完成身份验证。 如果有多个订阅,请使用az account set --subscription <subscription-id>设置正确的订阅。 - Terraform 版本 1.6 或更高版本。
-
kubectl 版本 1.28 或更高版本。 使用
az aks install-cli安装。 - Python版本 3.10 或更高版本(极光数据生成需要)。
- 目标Azure区域中的 GPU 配额。 默认配置预配
Standard_ND96amsr_A100_v4节点(8×A100 80 GB GPU)。
克隆存储库
克隆Azure/AKS 存储库并导航到基础结构模块:
git clone https://github.com/Azure/AKS
cd AKS/examples/kueue-and-ray-on-aks/1-infrastructure
安装 Python 依赖项
极光数据上传步骤需要Python包。 在部署之前安装它们:
pip install -r terraform/requirements-generator.txt
检查 GPU 配额
验证订阅是否具有目标区域中 GPU SKU 的配额。 将 chinanorth3 替换为您的首选地区:
LOCATION=<your-azure-region>
az vm list-usage --location "$LOCATION" --output table | grep -i "NDAMSv4_A100"
注释
如果没有 GPU 配额或想要在没有 GPU 的情况下验证基础结构,请使用 gpu_enabled=false以下命令进行部署:
terraform apply -var="subscription_id=<your-subscription-id>" -var="gpu_enabled=false"
纯 CPU 路径对于验证基础设施和队列配置很有用。 请求 GPU 的工作负载始终处于 Pending 状态。
使用 Terraform 进行部署
初始化并应用 Terraform 模块:
cd terraform
terraform init
terraform apply -var="subscription_id=<your-subscription-id>"
Terraform 模块会创建:
- 启用了 OIDC 颁发者和工作负荷标识的 AKS 群集
- 系统节点池和 GPU 节点池(在
gpu_enabled=true时) - KubeRay 运算符和 Kueue 控制器(来自 MCR 的 Helm 发行版)
- GPU 监控 DaemonSet(当
gpu_enabled=true时) - 包含
aurora和llm-pipeline容器的 Azure Blob 存储 帐户 - 具有存储 Blob 数据参与者角色的用户分配的托管标识
- 用于
ray-workloadServiceAccount 的联合身份凭据 - 预置数据集(Aurora WeatherBench2 数据和 viggo NLG 数据集)
有关完整的 Terraform 模块配置,请参阅存储库中的 1 基础结构目录 。
连接至群集
获取你的新 AKS 群集的凭据:
eval "$(terraform output -raw get_credentials_command)"
验证部署
确认运算符正在运行并且节点可用:
验证 KubeRay 运算符:
kubectl -n kuberay-system get pods预期输出:
NAME READY STATUS RESTARTS AGE kuberay-operator-xxxxxxxxxx-xxxxx 1/1 Running 0 5m验证 Kueue 控制器:
kubectl -n kueue-system get pods预期输出:
NAME READY STATUS RESTARTS AGE kueue-controller-manager-xxxxxxxxxx-xxxxx 1/1 Running 0 5m验证节点:
kubectl get nodes预期输出(含
gpu_enabled=true):NAME STATUS ROLES AGE VERSION aks-gpupool-xxxxxxxx-vmssxxxxxx Ready <none> 5m v1.35.x aks-system-xxxxxxxx-vmssxxxxxx Ready <none> 10m v1.35.x aks-system-xxxxxxxx-vmssxxxxxx Ready <none> 10m v1.35.x验证 GPU 监控(仅当
gpu_enabled=true时):kubectl -n gpu-monitoring get daemonsets预期输出:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE gpu-monitoring-a100 1 1 1 1 1 <none> 5m
清理资源
若要删除使用此模块创建的所有Azure资源:
terraform destroy -var="subscription_id=<your-subscription-id>"