View a markdown version of this page

适用于 Kubernetes 的老式 SageMaker AI 运算符 - 亚马逊 SageMaker AI

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

适用于 Kubernetes 的老式 SageMaker AI 运算符

本节基于适用于 Kubernetes SageMaker 的人工智能运算符的原始版本。

重要

我们将停止对 Kubernetes SageMaker 操作员的原始版本的开发和技术支持。

如果您当前使用的是 Kubernetes SageMaker 操作员版本v1.2.2或更低版本,我们建议您将资源迁移到适用于 Amazon 的 ACK 服务控制器。 SageMakerACK 服务控制器是基于 Kubernetes 控制AWS 器 (ACK) 的新一代 Kuber netes SageMaker 操作员。

有关迁移步骤的信息,请参阅将资源迁移到最新 Operator

有关终止对 Kubernetes SageMaker 操作员原始版本支持的常见问题解答,请参阅 宣布终止对 Kubernetes SageMaker 人工智能运算符原始版本的支持

为 Kubernetes 安装 SageMaker 人工智能运算符

使用以下步骤安装和使用适用于 Kubernetes 的 SageMaker AI 运算符,通过 Amazon AI 训练、调整和部署机器学习模型。 SageMaker

基于 IAM 角色的设置和 Operator 部署

以下几节描述了设置和部署 Operator 原始版本的步骤。

警告

提醒:以下步骤不会安装最新版本的 Kubernet SageMaker es 人工智能操作员。要安装适用于 Kubernetes 的全新 ACK-based SageMaker AI 运算符,请参阅。适用于 Kubernetes 的最新 SageMaker 人工智能运算符

先决条件

本教程假设您已完成以下先决条件:

  • 在用于访问 Kubernetes 集群的客户端计算机上安装以下工具:

    • kubectl 版本 1.13 或更高版本。使用您的 Amazon EKS 集群控制面板的一个次要版本内的 kubectl 版本。例如,1.13 kubectl 客户端使用 Kubernetes 1.13 和 1.14 集群。1.13 之前的版本不支持 OpenID Connect (OIDC)。

    • eksctl 版本 0.7.0 或更高版本

    • AWS CLI 版本 1.16.232 或更高版本

    • (可选)Helm 版本 3.0 或更高版本

    • aws-iam-authenticator

  • 拥有创建角色并将策略附加角色的 IAM 权限。

  • 创建了一个用于运行 Operator 的 Kubernetes 集群。它应该是 Kubernetes 版本 1.13 或 1.14。有关使用 eksctl 自动创建集群的信息,请参阅 eksctl 入门。预置集群需要 20–30 分钟时间。

Cluster-scoped 部署

请将 OpenID Connect (OIDC) 身份提供商 (IdP) 与您的角色关联,以便通过 IAM 服务进行身份验证,然后才能使用 IAM 角色部署 Operator。

为集群创建 OIDC 提供商

以下说明介绍如何创建 OIDC 提供商并将其与您的 Amazon EKS 集群关联。

  1. 按如下方式设置本地 CLUSTER_NAMEAWS_REGION 环境变量:

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 使用以下命令将 OIDC 提供商与您的集群关联。有关更多信息,请参阅为集群上的服务账户启用 IAM 角色

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve

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

    [_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"

现在,集群已拥有 OIDC 身份提供商,您可以创建一个角色并授予 Kubernetes 代入该角色的 ServiceAccount 权限。

获取 OIDC ID

要设置 ServiceAccount,请使用以下命令获取 OIDC 颁发者 URL:

aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text

该命令会返回类似以下内容的 URL:

https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID

在此 URL 中,值 D48675832CA65BD10A532F597OIDCID 是 OIDC ID。您集群的 OIDC ID 不同。您需要使用此 OIDC ID 值来创建角色。

如果输出为 None,则表示您的客户端版本过旧。要解决此问题,请运行以下命令:

aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC

返回的 OIDC URL 如下所示:

OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
创建一个 IAM 角色
  1. 创建一个名为 trust.json 的文件,并在其中插入以下信任关系代码块。请务必将所有 <OIDC ID><AWS account number><EKS Cluster region> 占位符替换为与您的集群对应的值。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com", "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default" } } } ] }
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com", "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default" } } } ] }
  2. 运行以下命令,以创建一个具有 trust.json 中定义的信任关系的角色。此角色允许 Amazon EKS 集群从 IAM 获取和刷新凭证。

    aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text

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

    ROLE arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z / ABCDEFSFODNN7EXAMPLE my-role ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS sts.amazonaws.com system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default PRINCIPAL arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/

    请记下 ROLE ARN;您将此值传递给您的 Operator。

将 AmazonSageMakerFullAccess 策略附加到角色

要向角色授予对 SageMaker AI 的访问权限,请附加AmazonSageMakerFullAccess策略。如果您想限制 Operator 的权限,可以创建自己的自定义策略并附加该策略。

要附加 AmazonSageMakerFullAccess,请运行以下命令:

aws iam attach-role-policy --role-name <role name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

Kubernetes ServiceAccount sagemaker-k8s-operator-default 应该拥有权限。AmazonSageMakerFullAccess安装 Operator 时请确认这一点。

部署 Operator

部署 Operator 时,您可以使用 YAML 文件或 Helm 图表。

使用 YAML 部署 Operator

这是部署 Operator 的最简单方法。流程如下:

  1. 使用以下命令下载安装程序脚本:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
  2. 编辑 installer.yaml 文件以替换 eks.amazonaws.com/role-arn。将此处的 ARN 替换为您创建的 OIDC-based 角色的亚马逊资源名称 (ARN)。

  3. 使用以下命令部署集群:

    kubectl apply -f installer.yaml
使用 Helm 图表部署 Operator

使用提供的 Helm 图表安装 Operator。

  1. 使用以下命令克隆 Helm 安装程序目录:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 导航到 amazon-sagemaker-operator-for-k8s/hack/charts/installer文件夹。编辑 rolebased/values.yaml 文件,其中包含图表的高级参数。将此处的角色 ARN 替换为您创建的 OIDC-based 角色的 Amazon 资源名称 (ARN)。

  3. 使用以下命令安装 Helm 图表:

    kubectl create namespace sagemaker-k8s-operator-system helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/

    如果您决定将 Operator 安装到指定的命名空间以外的命名空间,则需要调整 IAM 角色 trust.json 文件中定义的命名空间以使其匹配。

  4. 片刻之后,图表就会以随机生成的名称安装。运行以下命令验证安装是否成功:

    helm ls

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

    NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION sagemaker-operator sagemaker-k8s-operator-system 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
验证 Operator 部署
  1. 通过运行以下命令,您应该能够查看部署到集群的每个操作员的 SageMaker AI 自定义资源定义 (CRD):

    kubectl get crd | grep sagemaker

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

    batchtransformjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z endpointconfigs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z hostingdeployments.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z hyperparametertuningjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z models.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z trainingjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z
  2. 确保 Operator Pod 成功运行。使用以下命令列出所有 Pod:

    kubectl -n sagemaker-k8s-operator-system get pods

    您应该会在命名空间 sagemaker-k8s-operator-system 中看到一个名为 sagemaker-k8s-operator-controller-manager-***** 的 Pod,如下所示:

    NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s

Namespace-scoped 部署

您可以选择在单个 Kubernetes 命名空间的范围内安装 Operator。在此模式下,如果资源是在该命名空间内创建的,则控制器仅监视和协调与 SageMaker AI 的资源。这样就能对哪个控制器管理哪个资源进行更精细的控制。这对于部署到多个 AWS 账户或控制哪些用户有权访问特定作业非常有用。

本指南概述了如何将 Operator 安装到特定的预定义命名空间中。要将控制器部署到第二个命名空间中,请从头到尾按照指南进行操作,并在每个步骤中更改命名空间。

为 Amazon EKS 集群创建 OIDC 提供商

以下说明介绍如何创建 OIDC 提供商并将其与您的 Amazon EKS 集群关联。

  1. 按如下方式设置本地 CLUSTER_NAMEAWS_REGION 环境变量:

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 使用以下命令将 OIDC 提供商与您的集群关联。有关更多信息,请参阅为集群上的服务账户启用 IAM 角色

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve

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

    [_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"

现在,集群已有一个 OIDC 身份提供商,请创建一个角色并授予 Kubernetes 代入该角色的 ServiceAccount 权限。

获取您的 OIDC ID

要进行设置 ServiceAccount,请先使用以下命令获取 OpenID Connect 颁发者网址:

aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text

该命令会返回类似以下内容的 URL:

https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID

在此 URL 中,值 D48675832CA65BD10A532F597OIDCID 是 OIDC ID。您集群的 OIDC ID 不同。您需要使用此 OIDC ID 值来创建角色。

如果输出为 None,则表示您的客户端版本过旧。要解决此问题,请运行以下命令:

aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC

返回的 OIDC URL 如下所示:

OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
创建您的 IAM 角色
  1. 创建一个名为 trust.json 的文件,并在其中插入以下信任关系代码块。请务必将所有 <OIDC ID><AWS account number><EKS Cluster region><Namespace> 占位符替换为与您的集群对应的值。就本指南而言,my-namespace 用于 <Namespace> 值。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com", "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default" } } } ] }
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com", "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default" } } } ] }
  2. 运行以下命令,以创建一个具有 trust.json 中定义的信任关系的角色。此角色允许 Amazon EKS 集群从 IAM 获取和刷新凭证。

    aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text

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

    ROLE arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z / ABCDEFSFODNN7EXAMPLE my-role ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS sts.amazonaws.com system:serviceaccount:my-namespace:sagemaker-k8s-operator-default PRINCIPAL arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/

请记下 ROLE ARN。您将此值传递给您的 Operator。

将 AmazonSageMakerFullAccess 策略附加到您的角色

要向角色授予对 SageMaker AI 的访问权限,请附加AmazonSageMakerFullAccess策略。如果您想限制 Operator 的权限,可以创建自己的自定义策略并附加该策略。

要附加 AmazonSageMakerFullAccess,请运行以下命令:

aws iam attach-role-policy --role-name <role name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

Kubernetes ServiceAccount sagemaker-k8s-operator-default 应该拥有权限。AmazonSageMakerFullAccess安装 Operator 时请确认这一点。

将 Operator 部署到您的命名空间

部署 Operator 时,您可以使用 YAML 文件或 Helm 图表。

使用 YAML 将 Operator 部署到您的命名空间

在命名空间范围内部署 Operator 分为两个部分。第一部分是在集群级别安装的一组 CRD。每个 Kubernetes 集群只需安装一次这些资源定义。第二部分是 Operator 权限和部署本身。

如果您尚未将 CRD 安装到集群中,请使用以下命令应用 CRD 安装程序 YAML:

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml

要将 Operator 安装到集群上,请执行以下操作:

  1. 使用以下命令下载 Operator 安装程序 YAML:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
  2. 使用以下命令更新安装程序 YAML,以将资源放入您指定的命名空间中:

    sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
  3. 编辑 operator.yaml 文件以将资源放入您的 eks.amazonaws.com/role-arn 中。将此处的 ARN 替换为您创建的 OIDC-based 角色的亚马逊资源名称 (ARN)。

  4. 使用以下命令部署集群:

    kubectl apply -f operator.yaml
使用 Helm 图表将 Operator 部署到您的命名空间

在命名空间范围内部署 Operator 需要两个部分。第一部分是在集群级别安装的一组 CRD。每个 Kubernetes 集群只需安装一次这些资源定义。第二部分是 Operator 权限和部署本身。使用 Helm 图表时,必须先使用 kubectl 创建命名空间。

  1. 使用以下命令克隆 Helm 安装程序目录:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 导航到 amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced文件夹。编辑 rolebased/values.yaml 文件,其中包含图表的高级参数。将此处的角色 ARN 替换为您创建的 OIDC-based 角色的 Amazon 资源名称 (ARN)。

  3. 使用以下命令安装 Helm 图表:

    helm install crds crd_chart/
  4. 使用以下命令创建所需的命名空间并安装 Operator:

    kubectl create namespace <namespace> helm install --n <namespace> op operator_chart/
  5. 片刻之后,图表就会以名称 sagemaker-operator 安装。运行以下命令验证安装是否成功:

    helm ls

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

    NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION sagemaker-operator my-namespace 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
验证 Operator 部署到您的命名空间
  1. 通过运行以下命令,您应该能够查看部署到集群的每个操作员的 SageMaker AI 自定义资源定义 (CRD):

    kubectl get crd | grep sagemaker

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

    batchtransformjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z endpointconfigs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z hostingdeployments.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z hyperparametertuningjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z models.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z trainingjobs.sagemaker.aws.amazon.com 2019-11-20T17:12:34Z
  2. 确保 Operator Pod 成功运行。使用以下命令列出所有 Pod:

    kubectl -n my-namespace get pods

    您应该会在命名空间 my-namespace 中看到一个名为 sagemaker-k8s-operator-controller-manager-***** 的 Pod,如下所示:

    NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s

安装 SageMaker AI 日志 kubect l 插件

作为 Kubernetes SageMaker 人工智能运算符的一部分,你可以将该smlogs插件用于。 kubectl这允许使用 SageMaker AI CloudWatch 日志进行流式传输kubectlkubectl必须安装到你的 PATH 上。以下命令将二进制文件放入主目录的 sagemaker-k8s-bin 目录,然后将该目录添加到您的 PATH

export os="linux" wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz tar xvzf ${os}.amd64.tar.gz # Move binaries to a directory in your homedir. mkdir ~/sagemaker-k8s-bin cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/. # This line adds the binaries to your PATH in your .bashrc. echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc # Source your .bashrc to update environment variables: source ~/.bashrc

使用以下命令验证是否已正确安装 kubectl 插件:

kubectl smlogs

如果 kubectl 插件安装正确,则输出应如下所示:

View SageMaker AI logs via Kubernetes Usage: smlogs [command] Aliases: smlogs, SMLogs, Smlogs Available Commands: BatchTransformJob View BatchTransformJob logs via Kubernetes TrainingJob View TrainingJob logs via Kubernetes help Help about any command Flags: -h, --help help for smlogs Use "smlogs [command] --help" for more information about a command.

清理资源

要从集群中卸载操作员,必须先确保从集群中删除所有 SageMaker AI 资源。否则会导致 Operator 删除操作挂起。运行以下命令以停止所有作业:

# Delete all SageMaker AI jobs from Kubernetes kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com

您应该可以看到类似于如下所示的输出内容:

$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted $ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted $ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted $ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted

删除所有 SageMaker AI 作业后,请参阅删除 Operator从集群中删除操作员。

删除 Operator

删除基于集群的 Operator

使用 YAML 安装的 Operator

要从集群中卸载操作员,请确保已从集群中删除所有 SageMaker AI 资源。否则会导致 Operator 删除操作挂起。

注意

在删除集群之前,请务必从集群中删除所有 SageMaker AI 资源。请参阅清理资源了解更多信息。

删除所有 SageMaker AI 作业后,使用kubectl从集群中删除操作员:

# Delete the operator and its resources kubectl delete -f /installer.yaml

您应该可以看到类似于如下所示的输出内容:

$ kubectl delete -f raw-yaml/installer.yaml namespace "sagemaker-k8s-operator-system" deleted customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted deployment.apps "sagemaker-k8s-operator-controller-manager" deleted secrets "sagemaker-k8s-operator-abcde" deleted
使用 Helm 图表安装的 Operator

要删除 Operator CRD,请先删除所有正在运行的作业。然后使用以下命令删除用于部署 Operator 的 Helm 图表:

# get the helm charts helm ls # delete the charts helm delete <chart_name>

删除基于命名空间的 Operator

使用 YAML 安装的 Operator

要从集群中卸载操作员,请先确保已从集群中删除所有 SageMaker AI 资源。否则会导致 Operator 删除操作挂起。

注意

在删除集群之前,请务必从集群中删除所有 SageMaker AI 资源。请参阅清理资源了解更多信息。

删除所有 SageMaker AI 作业后,使用kubectl先从命名空间中删除操作员,然后从集群中删除 CRD。运行以下命令以从集群中删除 Operator:

# Delete the operator using the same yaml file that was used to install the operator kubectl delete -f operator.yaml # Now delete the CRDs using the CRD installer yaml kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml # Now you can delete the namespace if you want kubectl delete namespace <namespace>
使用 Helm 图表安装的 Operator

要删除 Operator CRD,请先删除所有正在运行的作业。然后使用以下命令删除用于部署 Operator 的 Helm 图表:

# Delete the operator helm delete <chart_name> # delete the crds helm delete crds # optionally delete the namespace kubectl delete namespace <namespace>

问题排查

调试失败的作业

使用以下步骤调试失败的作业。

  • 可以通过运行以下命令来检查作业状态:

    kubectl get <CRD Type> <job name>
  • 如果任务是在 SageMaker AI 中创建的,则可以使用以下命令查看STATUSSageMaker Job Name

    kubectl get <crd type> <job name>
  • 您可以使用以下命令通过 smlogs 查找问题原因:

    kubectl smlogs <crd type> <job name>
  • 还可以使用以下命令通过 describe 命令获取有关作业的更多详细信息。输出中有一个 additional 字段,其中包含有关作业状态的更多信息。

    kubectl describe <crd type> <job name>
  • 如果任务不是在 SageMaker AI 中创建的,则使用操作员的 pod 的日志来查找问题的原因,如下所示:

    $ kubectl get pods -A | grep sagemaker # Output: sagemaker-k8s-operator-system sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z 2/2 Running 0 3h33m $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system

删除 Operator CRD

如果删除作业失败,请检查 Operator 是否正在运行。如果 Operator 未运行,则必须使用以下步骤删除终结器:

  1. 在新终端中,使用 kubectl edit 在编辑器中打开作业,如下所示:

    kubectl edit <crd type> <job name>
  2. 编辑作业,通过从文件中删除以下两行来删除终结器。保存文件后,作业即被删除。

    finalizers: - sagemaker-operator-finalizer

每个区域中的映像和 SMlog

下表列出了每个区域中可用的 Operator 映像和 SMLog。

Region 控制器映像 Linux SMLog
us-east-1 957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1 https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz
us-east-2 922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1 https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz
us-west-2 640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1 https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz
eu-west-1 613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1 https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz