阿里云首页 集成开发最佳实践

在阿里云容器服务上部署Kubeflow Pipelines服务

本教程介绍如何在阿里云容器服务上部署Kubeflow Pipelines服务。

可体验到

  • 部署Kubeflow Pipelines

  • kustomize的使用

  • sed命令的使用

前置知识

  • 编写YAML格式文件

  • 了解kubeflow pipelines

前提条件

在教程开始之前:

  • 您需要一个Kubernetes集群。在阿里云上创建Kubernetes GPU集群请参见 Kubernetes GPU集群支持GPU调度

    说明

    为了保障集群安全,

  • 您需要安装Arena

    执行以下命令安装:

    curl -s https://raw.githubusercontent.com/AliyunContainerService/ai-starter/master/scripts/install_arena.sh | \
    bash -s -- \
    --prometheus

  • 您需要安装kustomize

    • 在Linux和Mac OS环境,可以执行:

      curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\
        grep browser_download |\
        grep linux |\
        cut -d '"' -f 4 |\
        xargs curl -O -L
      mv kustomize /usr/bin/kustomize
      chmod u+x /usr/bin/kustomize
    • 在Windows环境,可以下载kustomize_2.0.3_windows_amd64.exe

背景信息

Kubeflow Pipelines是一个面向机器学习的工作流解决方案,通过定义一个有向无环图描述流水线系统,将机器学习中的应用代码按照流水线的方式编排,形成可重复的工作流。并提供平台,帮助编排,部署,管理,这些端到端机器学习工作流。本教程将介绍如何在阿里云容器服务中部署一个kubeflow pipelines环境。

说明

Kubeflow Pipelines需要依赖于MySQL和minio这些有状态服务,也就需要持久化和备份数据,本教程中的部署YAML将会在集群所在可用区创建一块按量付费SSD云盘,阿里云的SSD云盘可以设置定期的自动备份,保证pipeline中的元数据不会丢失。

操作步骤

  1. 下载源代码。

    git clone --recursive https://github.com/aliyunContainerService/kubeflow-aliyun
  2. 安全配置。

    1. 配置TLS证书。如果没有TLS证书,可以通过下列命令生成:

      yum install -y openssl
      domain="pipelines.kubeflow.org"
      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key -out kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt -subj "/CN=$domain/O=$domain"
    2. 配置admin的登录密码:

      yum install -y httpd-tools
      htpasswd -c kubeflow-aliyun/overlays/ack-auto-clouddisk/auth admin
  3. 使用kustomize生成部署yaml。

    cd kubeflow-aliyun/
    kustomize build overlays/ack-auto-clouddisk > /tmp/ack-auto-clouddisk.yaml
  4. 修改yaml文件默认配置。

    • 查看所在的Kubernetes集群节点所在的地域和可用区,并且根据其所在节点替换可用区,假设您的集群所在可用区为cn-hangzhou-g,可以执行下列命令:

      sed -i.bak 's/regionid: cn-beijing/regionid: cn-hangzhou/g' \
          /tmp/ack-auto-clouddisk.yaml
      sed -i.bak 's/zoneid: cn-beijing-e/zoneid: cn-hangzhou-g/g' \
          /tmp/ack-auto-clouddisk.yaml
    • 将容器镜像地址由gcr.io替换为registry.aliyuncs.com:

      sed -i.bak 's/gcr.io/registry.aliyuncs.com/g' \
          /tmp/ack-auto-clouddisk.yaml
    • 调整使用磁盘空间大小,例如需要调整磁盘空间为200G:

      sed -i.bak 's/storage: 100Gi/storage: 200Gi/g' \
          /tmp/ack-auto-clouddisk.yaml
      说明

      建议您检查一下/tmp/ack-auto-clouddisk.yaml修改是否已经设置。

  5. 验证pipelines的yaml文件。

    kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml
  6. 利用kubectl部署pipelines。

    kubectl create -f /tmp/ack-auto-clouddisk.yaml
    说明

    清理pipelines命令:kubectl delete -f /tmp/ack-auto-clouddisk.yaml

  7. 查看访问pipeline的方式。

    kubectl get ing -n kubeflow
    NAME             HOSTS   ADDRESS           PORTS     AGE
    ml-pipeline-ui   *       192.168.193.271   80, 443   11m
  8. 输入步骤2中的用户名admin和设定的密码访问pipeline服务https://192.168.193.271/pipeline/pipelines

首页 集成开发最佳实践 深度学习最佳实践 在阿里云容器服务上部署Kubeflow Pipelines服务