在ACS上部署社区版Kubeflow

更新时间:
复制为 MD 格式

ACS集群中,针对分布式深度学习训练需求,通过部署社区版 Kubeflow 并将训练算子镜像替换为 ACR 国内镜像,实现 PyTorchJob 任务的快速交付与稳定运行。

连接集群

  1. 确定待安装kubectl的客户端机器,根据运行环境和集群版本安装kubectl

  2. 登录容器计算服务控制台,在左侧导航栏选择集群列表

  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  4. 集群信息页面,单击连接信息页签,选择临时或长期KubeConfig。对于临时KubeConfig,需合理设置其有效期。

  5. 选择公网访问内网访问页签,单击复制,将复制的KubeConfig内容粘贴至客户端的$HOME/.kube/config文件中,保存并退出。

    如果$HOME/.kube/config 文件不存在,可通过mkdir -p $HOME/.kubetouch $HOME/.kube/config来创建。
  6. 配置完成后,执行kubectl命令以验证集群连通性。

    以查询命名空间为例。

    kubectl get namespaces

    预期输出:

    NAME              STATUS   AGE
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

部署社区Kubeflow

  1. 部署Kubeflow步骤如下,运行命令前请依实际情况修改相关参数。

    # 安装kustomize
    curl -LO "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.0.0/kustomize_v5.0.0_linux_amd64.tar.gz"
    tar -xzvf kustomize_v5.0.0_linux_amd64.tar.gz
    chmod 755 kustomize
    mv kustomize /usr/bin/
    
    # 部署Kubeflow
    git clone https://github.com/kubeflow/manifests.git && cd manifests && git checkout tags/v1.9.1-rc.2 -b v1.9.1-rc.2
    # 可使用 Git 拉取其他版本的 manifests,但为了避免 manifests 更新后与本文提供的镜像版本不兼容,建议下载并解压附件 manifests.zip 后使用
    kustomize build common/kubeflow-namespace/base | kubectl apply -f -
    kustomize build apps/training-operator/upstream/overlays/kubeflow | kubectl apply -f -

  2. Kubeflow部署成功后,在控制台创建自定义资源类型工作负载时可以看到Kubeflow提供的众多分布式任务CRD,本文重点关注PyTorchJob CRD。

  3. 由于网络限制,社区原生的Kubeflow中的部分镜像无法拉取,因此需要在部署之后对系统添加补丁,步骤如下。

    1. 修改镜像字段。

      # 替换training-operatordocker.io仓库镜像为ACR镜像
      kubectl edit deployment training-operator -n kubeflow
      # 在 spec.template.spec.containers[0].command 字段的 - /manager 下方添加如下参数
      - -pytorch-init-container-image=cnp-image-center-registry.cn-wulanchabu.cr.aliyuncs.com/library/alpine:3.10
      # 将 spec.template.spec.containers[0].image 字段替换为
      cnp-image-center-registry.cn-wulanchabu.cr.aliyuncs.com/kubeflow/training-operator:v1-4485b0a
      重要

      修改时缩进不能用Tab键,需要用空格键。

    2. 修改完成后,在 vi/vim 编辑模式下输入:wq并回车保存。如果 YAML 格式存在错误,系统将停留在编辑界面并在上方提示错误原因。

      image

    3. 修改OperatorYAML并提交后,检查PyTorchJob CRDtraining-operator状态是否正常。

      # 检查CRD
      kubectl get crd
      # 检查training-operator是否处于Running状态
      kubectl get pods -n kubeflow
    4. 补丁部署成功的效果如下图所示。至此,您可以正常使用Kubeflow。

      image

      image