选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

安装 Kubeflow Pipelines

聚焦模式
安装 Kubeflow Pipelines - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Kubeflow Pipelines (KFP) 是 Kubeflow 的管道编排组件。

您可以在现有 Amazon Elastic Kubernetes Service (Amazon EKS) 上部署 Kubeflow Pipelines (KFP),也可以创建新的 Amazon EKS 集群。使用网关节点与您的集群进行交互。网关节点可以是您的本地计算机或 Amazon EC2 实例。

以下部分将指导您完成设置和配置这些资源的步骤。

选择安装选项

Kubeflow Pipelines 可用作 Kubeflow 完整发行版的核心组件, AWS 也可以作为独立安装使用。

选择适用于您的使用案例的选项:

  1. 部署时已完成 Kubeflow AWS

    要使用 Kubeflow Pipelines 之外的其他 Kubeflow 组件,请选择完整的 Kubeflow on AWS 分发版部署。

  2. 独立 Kubeflow Pipelines 部署

    要在不使用 Kubeflow 其他组件的情况下使用 Kubeflow Pipelines,请独立安装 Kubeflow Pipelines。

要在上安装 Kubeflow 的完整版本 AWS,请从部署指南上的 Kubeflow 中选择普通 AWS 部署选项或任何其他支持与各种服务( AWS 亚马逊 S3、亚马逊 RDS、亚马逊 Cognito)集成的部署选项。

部署时已完成 Kubeflow AWS

要在上安装 Kubeflow 的完整版本 AWS,请从部署指南上的 Kubeflow 中选择普通 AWS 部署选项或任何其他支持与各种服务( AWS 亚马逊 S3、亚马逊 RDS、亚马逊 Cognito)集成的部署选项。

本节假设您的用户有权创建角色并为该角色定义策略。

设置网关节点

您可以使用本地计算机或 Amazon EC2 实例作为网关节点。网关节点用于创建 Amazon EKS 集群并访问 Kubeflow Pipelines UI。

完成以下步骤以设置节点。

  1. 创建网关节点。

    您可以使用启动和配置 DLAMI 中的 EC2 步骤,使用现有的 Amazon 实例,也可以使用最新 Ubuntu 18.04 DLAMI 版本创建新实例。

  2. 创建 IAM 角色来授予您的网关节点对 AWS 资源的访问权限。

    创建具有以下资源权限的 IAM 角色: CloudWatch、、IAM、Amazon AWS CloudFormation、Amazon S3 EC2、Amazon EKS。

    将以下策略附加到 IAM 角色:

    有关将 IAM 权限添加到 IAM 角色的信息,请参阅添加和删除 IAM 身份权限

  3. 安装以下工具和客户端

    在您的网关节点上安装和配置以下工具和资源,以访问 Amazon EKS 集群和 KFP 用户界面 (UI)。

    • AWS CLI:用于处理 AWS 服务的命令行工具。有关 AWS CLI 配置信息,请参阅配置 AWS CLI

    • aws-iam-authenticator0.1.31 及更高版本:一种使用 AWS IAM 凭证对 Kubernetes 集群进行身份验证的工具。

    • eksctl 0.15 以上的版本:用于处理 Amazon EKS 集群的命令行工具。

    • kubectl:用于与 Kubernetes 集群一起使用的命令行工具。该版本需要在一个次要版本中与您的 Kubernetes 版本相匹配。

    • AWS SDK for Python (Boto3).

      pip install boto3

设置 Amazon EKS 集群

  1. 如果您没有现有 Amazon EKS 集群,请在网关节点的命令行中运行以下步骤,否则请跳过此步骤。

    1. 运行以下命令创建 1.17 或更高版本的 Amazon EKS 集群。将 <clustername> 替换为您的任何集群名称。

      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
    2. 集群创建完成后,通过列出集群的节点来确保您可以访问集群。

      kubectl get nodes
  2. 使用以下命令确保当前 kubectl 上下文指向您的集群。当前上下文在输出中以星号 (*) 标记。

    kubectl config get-contexts CURRENT NAME CLUSTER * <username>@<clustername>.us-east-1.eksctl.io <clustername>.us-east-1.eksctl.io
  3. 如果所需的集群未配置为当前的默认集群,请使用以下命令更新默认集群。

    aws eks update-kubeconfig --name <clustername> --region us-east-1

安装 Kubeflow Pipelines

从网关节点的终端运行以下步骤,以在集群上安装 Kubeflow Pipelines。

  1. 安装所有 cert-manager 组件

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
  2. 安装 Kubeflow Pipelines。

    export PIPELINE_VERSION=2.0.0-alpha.5 kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION" kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
  3. 确保 Kubeflow Pipelines 服务和其他相关资源正在运行。

    kubectl -n kubeflow get all | grep pipeline

    您的输出应与以下内容类似。

    pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d deployment.apps/ml-pipeline                       1/1     1            1           2d deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d deployment.apps/ml-pipeline-ui                    1/1     1            1           2d deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d

本节假设您的用户有权创建角色并为该角色定义策略。

设置网关节点

您可以使用本地计算机或 Amazon EC2 实例作为网关节点。网关节点用于创建 Amazon EKS 集群并访问 Kubeflow Pipelines UI。

完成以下步骤以设置节点。

  1. 创建网关节点。

    您可以使用启动和配置 DLAMI 中的 EC2 步骤,使用现有的 Amazon 实例,也可以使用最新 Ubuntu 18.04 DLAMI 版本创建新实例。

  2. 创建 IAM 角色来授予您的网关节点对 AWS 资源的访问权限。

    创建具有以下资源权限的 IAM 角色: CloudWatch、、IAM、Amazon AWS CloudFormation、Amazon S3 EC2、Amazon EKS。

    将以下策略附加到 IAM 角色:

    有关将 IAM 权限添加到 IAM 角色的信息,请参阅添加和删除 IAM 身份权限

  3. 安装以下工具和客户端

    在您的网关节点上安装和配置以下工具和资源,以访问 Amazon EKS 集群和 KFP 用户界面 (UI)。

    • AWS CLI:用于处理 AWS 服务的命令行工具。有关 AWS CLI 配置信息,请参阅配置 AWS CLI

    • aws-iam-authenticator0.1.31 及更高版本:一种使用 AWS IAM 凭证对 Kubernetes 集群进行身份验证的工具。

    • eksctl 0.15 以上的版本:用于处理 Amazon EKS 集群的命令行工具。

    • kubectl:用于与 Kubernetes 集群一起使用的命令行工具。该版本需要在一个次要版本中与您的 Kubernetes 版本相匹配。

    • AWS SDK for Python (Boto3).

      pip install boto3

设置 Amazon EKS 集群

  1. 如果您没有现有 Amazon EKS 集群,请在网关节点的命令行中运行以下步骤,否则请跳过此步骤。

    1. 运行以下命令创建 1.17 或更高版本的 Amazon EKS 集群。将 <clustername> 替换为您的任何集群名称。

      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
    2. 集群创建完成后,通过列出集群的节点来确保您可以访问集群。

      kubectl get nodes
  2. 使用以下命令确保当前 kubectl 上下文指向您的集群。当前上下文在输出中以星号 (*) 标记。

    kubectl config get-contexts CURRENT NAME CLUSTER * <username>@<clustername>.us-east-1.eksctl.io <clustername>.us-east-1.eksctl.io
  3. 如果所需的集群未配置为当前的默认集群,请使用以下命令更新默认集群。

    aws eks update-kubeconfig --name <clustername> --region us-east-1

安装 Kubeflow Pipelines

从网关节点的终端运行以下步骤,以在集群上安装 Kubeflow Pipelines。

  1. 安装所有 cert-manager 组件

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
  2. 安装 Kubeflow Pipelines。

    export PIPELINE_VERSION=2.0.0-alpha.5 kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION" kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
  3. 确保 Kubeflow Pipelines 服务和其他相关资源正在运行。

    kubectl -n kubeflow get all | grep pipeline

    您的输出应与以下内容类似。

    pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d deployment.apps/ml-pipeline                       1/1     1            1           2d deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d deployment.apps/ml-pipeline-ui                    1/1     1            1           2d deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d

配置您的管道权限以访问 SageMaker AI

在本节中,您将创建一个 IAM 执行角色,授予 Kubeflow Pipeline 容器对 SageMaker AI 服务的访问权限。

SageMaker AI 组件版本 2 的配置

要运行适用于 Kubeflow Pipelines 的 SageMaker AI 组件版本 2,你需要安装适用于 K ubernetes 的 SageMaker AI Operator 并配置基于角色的访问控制 (RBAC),允许 Kubeflow Pipelines pod 在你的 Kubernetes 集群中创建 AI 自定义资源。 SageMaker

重要

如果您使用的是 Kubeflow Pipelines 独立部署,请按照本节进行操作。如果你使用的是 Kubeflow 版本 1.6.0-aws-b1.0.0 或更高版本的 AWS 发行版,那么人工智能组件版本 2 已经设置好了。 SageMaker

  1. 安装适用于 Kubernetes 的 SageMaker AI Operator 以使用 SageMaker 人工智能组件版本 2。

    按照使用 ACK SageMaker AI Controller 的 Machine Learning 教程中的设置部分进行

  2. 为 Kubeflow Pipelines Pod 使用的执行角色(服务账号)配置 RBAC 权限。在 Kubeflow Pipelines 独立部署中,使用 pipeline-runner 服务账号在命名空间 kubeflow 中执行管道运行。

    1. 创建一个 RoleBinding,向服务帐号授予管理 SageMaker AI 自定义资源的权限。

      cat > manage_sagemaker_cr.yaml <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: manage-sagemaker-cr namespace: kubeflow subjects: - kind: ServiceAccount name: pipeline-runner namespace: kubeflow roleRef: kind: ClusterRole name: ack-sagemaker-controller apiGroup: rbac.authorization.k8s.io EOF
      kubectl apply -f manage_sagemaker_cr.yaml
    2. 确保 RoleBinding 是通过运行以下命令创建:

      kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml

SageMaker AI 组件版本 1 的配置

要运行适用于 Kubeflow Pipelines 的 SageMaker AI 组件版本 1,Kubeflow Pipeline 容器需要访问人工智能。 SageMaker

重要

无论你是在 AWS 部署时使用完整的 Kubeflow 还是独立的 Kubeflow Pilepines,都要遵循本节。

要创建授予 Kubeflow 管道容器访问 A SageMaker I 的 IAM 执行角色,请按照以下步骤操作:

  1. 导出您的集群名称(例如 my-cluster-name)和集群区域(例如 us-ea st-1)。

    export CLUSTER_NAME=my-cluster-name export CLUSTER_REGION=us-east-1
  2. 根据您的安装导出命名空间和服务账户名称。

    • 要在 AWS 安装时获得完整的 Kubeflow,请将您的配置文件namespace(例如 kubeflow-user-example-com)和默认编辑器导出为服务账号。

      export NAMESPACE=kubeflow-user-example-com export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor
    • 要独立部署 Pipelines,请将 kubeflow 导出为 namespace,将 pipeline-runner 导出为服务账户。

      export NAMESPACE=kubeflow export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
  3. 使用以下命令创建适用于 Amazon EKS 集群的 IAM OIDC 提供商

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} --approve
  4. 为 KFP 容器创建一个 IAM 执行角色以访问 AWS 服务 (SageMaker AI、 CloudWatch)。

    eksctl create iamserviceaccount \ --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \ --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \ --override-existing-serviceaccounts \ --approve

将管道权限配置为访问 SageMaker AI 组件版本 1 后,请按照 Kubeflow 上的 Kubeflow 管道 SageMaker 人工智能组件指南中的文档进行操作。 AWS

访问 KFP UI(Kubeflow 控制面板)

Kubeflow Pipelines UI 用于管理和跟踪集群上的实验、作业和运行。有关如何从网关节点访问 Kubeflow Pipelines UI 的说明,请按照本节中适用于您的部署选项的步骤进行操作。

按照AWS 网站上 Kubeflow 上的说明连接到 Kubeflow 控制面板并导航到 “管道” 选项卡。

Kubeflow on AWS 完整部署

按照AWS 网站上 Kubeflow 上的说明连接到 Kubeflow 控制面板并导航到 “管道” 选项卡。

按照以下步骤使用端口转发从您的网关节点访问 Kubeflow Pipelines UI。

设置到 KFP UI 服务的端口转发

从网关节点的命令行运行以下命令。

  1. 请使用以下命令验证 KFP UI 服务是否正在运行。

    kubectl -n kubeflow get service ml-pipeline-ui NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
  2. 运行以下命令以设置到 KFP UI 服务的端口转发。这会将 KFP UI 转发到网关节点上的端口 8080,并允许您从浏览器访问 KFP UI。

    kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80

    如果没有活动,则远程计算机的端口转发就会停止。如果您的控制面板无法获取日志或更新,请再次运行此命令。如果命令返回错误,请确保您尝试使用的端口上没有正在运行的进程。

访问 KFP UI 服务

您访问 KFP UI 的方法取决于网关节点类型。

  • 本地计算机作为网关节点:

    1. 在浏览器中访问控制面板,如下所示:

      http://localhost:8080
    2. 选择管道以访问管道 UI。

  • 作为网关节点的 Amazon EC2 实例:

    1. 您需要在您的 Amazon EC2 实例上设置 SSH 隧道,才能从本地计算机的浏览器访问 Kubeflow 控制面板。

      在本地计算机上的新终端会话中,运行以下命令。<public-DNS-of-gateway-node>替换为在 Amazon EC2 控制台上找到的您的实例的 IP 地址。您也可以使用公有 DNS。将 <path_to_key> 替换为用于访问网关节点的 PEM 密钥的路径。

      public_DNS_address=<public-DNS-of-gateway-node> key=<path_to_key> on Ubuntu: ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address} or on Amazon Linux: ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
    2. 在浏览器中访问控制面板。

      http://localhost:9000
    3. 选择管道以访问 KFP UI。

(可选)授予 SageMaker AI 笔记本实例访问 Amazon EKS 的权限,并从您的笔记本运行 KFP 管道。

SageMaker 笔记本实例是运行 Jupyter 笔记本应用程序的完全托管的 Amazon EC2 计算实例。您可以使用笔记本实例来创建和管理 Jupyter 笔记本,然后使用 AWS SDK for Python (Boto3) 或 KFP CLI 定义、编译、部署和运行 KFP 管道。

  1. 按照创建 SageMaker 笔记本实例中的步骤创建您的笔记本实例,然后将S3FullAccess策略附加到其 IAM 执行角色。

  2. 在网关节点的命令行中,运行以下命令以检索您创建的笔记本实例的 IAM 角色 ARN。将 <instance-name> 替换为实例的名称。

    aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'

    此命令将输出采用 arn:aws:iam::<account-id>:role/<role-name> 格式的 IAM 角色 ARN。记下此 ARN。

  3. 运行此命令将以下策略(Amazon AmazonSageMakerFullAccess EKSWorker NodePolicy、AmazonS3FullAccess)附加到此 IAM 角色。将 <role-name> 替换为 ARN 中的 <role-name>

    aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
  4. Amazon EKS 集群使用 IAM 角色来控制对集群的访问权限。这些规则是在名为 aws-auth 的配置映射中实施。eksctl 提供了读取和编辑 aws-auth 配置映射的命令。只有有权访问集群的用户才能编辑此配置映射。

    system:masters 是具有集群超级用户权限的默认用户组之一。将您的用户添加到此组,或创建具有更严格权限的组。

  5. 运行以下命令以将角色绑定到您的集群。将 <IAM-Role-arn> 替换为 IAM 角色的 ARN。<your_username> 可以是任何唯一的用户名。

    eksctl create iamidentitymapping \ --cluster <cluster-name> \ --arn <IAM-Role-arn> \ --group system:masters \ --username <your-username> \ --region <region>
  6. 在你的 SageMaker AI 实例上打开 Jupyter 笔记本并运行以下命令以确保它可以访问集群。

    aws eks --region <region> update-kubeconfig --name <cluster-name> kubectl -n kubeflow get all | grep pipeline

按照以下步骤使用端口转发从您的网关节点访问 Kubeflow Pipelines UI。

设置到 KFP UI 服务的端口转发

从网关节点的命令行运行以下命令。

  1. 请使用以下命令验证 KFP UI 服务是否正在运行。

    kubectl -n kubeflow get service ml-pipeline-ui NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
  2. 运行以下命令以设置到 KFP UI 服务的端口转发。这会将 KFP UI 转发到网关节点上的端口 8080,并允许您从浏览器访问 KFP UI。

    kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80

    如果没有活动,则远程计算机的端口转发就会停止。如果您的控制面板无法获取日志或更新,请再次运行此命令。如果命令返回错误,请确保您尝试使用的端口上没有正在运行的进程。

访问 KFP UI 服务

您访问 KFP UI 的方法取决于网关节点类型。

  • 本地计算机作为网关节点:

    1. 在浏览器中访问控制面板,如下所示:

      http://localhost:8080
    2. 选择管道以访问管道 UI。

  • 作为网关节点的 Amazon EC2 实例:

    1. 您需要在您的 Amazon EC2 实例上设置 SSH 隧道,才能从本地计算机的浏览器访问 Kubeflow 控制面板。

      在本地计算机上的新终端会话中,运行以下命令。<public-DNS-of-gateway-node>替换为在 Amazon EC2 控制台上找到的您的实例的 IP 地址。您也可以使用公有 DNS。将 <path_to_key> 替换为用于访问网关节点的 PEM 密钥的路径。

      public_DNS_address=<public-DNS-of-gateway-node> key=<path_to_key> on Ubuntu: ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address} or on Amazon Linux: ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
    2. 在浏览器中访问控制面板。

      http://localhost:9000
    3. 选择管道以访问 KFP UI。

(可选)授予 SageMaker AI 笔记本实例访问 Amazon EKS 的权限,并从您的笔记本运行 KFP 管道。

SageMaker 笔记本实例是运行 Jupyter 笔记本应用程序的完全托管的 Amazon EC2 计算实例。您可以使用笔记本实例来创建和管理 Jupyter 笔记本,然后使用 AWS SDK for Python (Boto3) 或 KFP CLI 定义、编译、部署和运行 KFP 管道。

  1. 按照创建 SageMaker 笔记本实例中的步骤创建您的笔记本实例,然后将S3FullAccess策略附加到其 IAM 执行角色。

  2. 在网关节点的命令行中,运行以下命令以检索您创建的笔记本实例的 IAM 角色 ARN。将 <instance-name> 替换为实例的名称。

    aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'

    此命令将输出采用 arn:aws:iam::<account-id>:role/<role-name> 格式的 IAM 角色 ARN。记下此 ARN。

  3. 运行此命令将以下策略(Amazon AmazonSageMakerFullAccess EKSWorker NodePolicy、AmazonS3FullAccess)附加到此 IAM 角色。将 <role-name> 替换为 ARN 中的 <role-name>

    aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
  4. Amazon EKS 集群使用 IAM 角色来控制对集群的访问权限。这些规则是在名为 aws-auth 的配置映射中实施。eksctl 提供了读取和编辑 aws-auth 配置映射的命令。只有有权访问集群的用户才能编辑此配置映射。

    system:masters 是具有集群超级用户权限的默认用户组之一。将您的用户添加到此组,或创建具有更严格权限的组。

  5. 运行以下命令以将角色绑定到您的集群。将 <IAM-Role-arn> 替换为 IAM 角色的 ARN。<your_username> 可以是任何唯一的用户名。

    eksctl create iamidentitymapping \ --cluster <cluster-name> \ --arn <IAM-Role-arn> \ --group system:masters \ --username <your-username> \ --region <region>
  6. 在你的 SageMaker AI 实例上打开 Jupyter 笔记本并运行以下命令以确保它可以访问集群。

    aws eks --region <region> update-kubeconfig --name <cluster-name> kubectl -n kubeflow get all | grep pipeline
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。