Azure ML评分脚本部署至Azure Arc K8s集群失败求助
解决思路
1. 排查部署操作的状态与日志
- 捕获
ml_client.begin_create_or_update(deployment).result()的完整返回信息,提取错误码、状态详情等内容 - 用Azure CLI命令查询部署状态:
az ml online-deployment show --name mnist-deployment-v1 --endpoint-name mnist-test-endpoint --resource-group <你的资源组名> --workspace-name <你的工作区名> - 登录Azure门户,进入对应机器学习工作区→在线端点→目标部署→日志页面,检查是否存在镜像拉取失败、脚本格式错误、权限不足等具体报错
2. 验证Azure Arc与K8s集群的连接有效性
- 在本地K8s集群执行
kubectl get pods -n azure-arc,确认所有Arc代理pod处于Running状态 - 检查ML工作区与Arc集群的关联状态:在Azure门户的机器学习工作区→计算→附加计算→
onpremk8scompute,确认状态为"就绪" - 确认资源查找的命名空间:Azure ML部署默认使用
azureml-<工作区名称>命名空间,而非自定义命名空间,执行kubectl get all -n azureml-<你的工作区名>排查资源
3. 检查部署配置的正确性
- 验证环境配置:确认
08_conda_env.yml路径正确,文件内依赖无冲突;若本地集群无外网,需确保基础镜像mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04已同步到本地镜像仓库 - 检查代码配置:确认
./inference_script路径正确,score.py存在且符合Azure ML规范(包含init()初始化函数和run()推理函数) - 核对资源请求:执行
kubectl describe node查看本地K8s节点剩余资源,确认能满足cpu="100m"、memory="0.5Gi"的资源请求
4. 验证权限与网络配置
- 检查Azure ML服务主体权限:确保工作区使用的服务主体拥有Arc集群的
Microsoft.Kubernetes/connectedClusters/user权限 - 排查K8s网络策略:确认集群未限制Azure ML控制平面的访问,且允许拉取Azure容器注册表(ACR)中的模型/环境镜像
- 确认集群出站网络:若为离线环境,需配置私有链接或离线镜像同步方案;若有外网,检查是否能访问Azure ML管理API、ACR等必要端点
内容的提问来源于stack exchange,提问作者JakeUT
相关产品推荐
相关产品推荐

