Kubernet SageMaker es 的旧运算符 - Amazon SageMaker

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

Kubernet SageMaker es 的旧运算符

本节基于 Kubernetes SageMaker 操作员的原始版本。

重要

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

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

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

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

为 Kubernetes 安装 SageMaker 操作员

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

IAM基于角色的设置和操作员部署

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

警告

提醒:以下步骤不会安装最新版本的 Kubernet SageMaker es 操作员。要安装ACK基于 Kubernetes 的新 SageMaker 操作符,请参阅。Kubernet SageMaker es 的最新运算符

先决条件

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

  • 在用于访问 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 分钟时间。

集群范围部署

在使用IAM角色部署操作员之前,请将 OpenID Connect (OIDC) 身份提供商 (IdP) 与您的角色关联,以便通过服务进行身份验证。IAM

为您的集群创建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身份证

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

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

按如下方式返回:OIDCURL

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<AWS account number>: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,请附加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

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

使用部署操作员 YAML

这是部署 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基于角色的 Amazon 资源名称 (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基于角色的 Amazon 资源名称 (ARN)。

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

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

    如果您决定将运算符安装到指定的命名空间以外的命名空间中,则需要调整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 自定义资源定义 (CRDs):

    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

命名空间范围部署

您可以选择在单个 Kubernetes 命名空间的范围内安装 Operator。在此模式下,只有在该命名空间中创建资源时, SageMaker 控制器才会监控和协调资源。这样就能对哪个控制器管理哪个资源进行更精细的控制。这对于部署到多个 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身份证

要进行设置 ServiceAccount,请先URL使用以下命令获取 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,值 D48675832 CA65BD1 0A532F597 OIDCID 是 OIDC ID。您的集群的 OIDC ID 不同。您需要此 OIDC ID 值才能创建角色。

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

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

按如下方式返回:OIDCURL

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> 值。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<AWS account number>: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,请附加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 部署到您的命名空间

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

使用将操作员部署到您的命名空间 YAML

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

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

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

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

  1. 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基于角色的 Amazon 资源名称 (ARN)。

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

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

在命名空间范围内部署 Operator 需要两个部分。第一个是在集群CRDs级别安装的一组。每个 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基于角色的 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 自定义资源定义 (CRDs):

    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 日志kubectl插件

作为 Kubernetes SageMaker 操作员的一部分,你可以将该smlogs插件用于。 kubectl这允许使用流式传输 SageMaker 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 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资源。否则会导致 Operator 删除操作挂起。运行以下命令以停止所有作业:

# Delete all SageMaker 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 任务后,请参阅删除 Operator从集群中删除操作员。

删除 Operator

删除基于集群的 Operator

使用安装的操作员 YAML

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

注意

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

删除所有 SageMaker 任务后,使用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

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

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

删除基于命名空间的 Operator

操作员安装了 YAML

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

注意

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

删除所有 SageMaker 作业后,使用kubectl先从命名空间中删除运算符,然后再CRDs从集群中删除。运行以下命令以从集群中删除 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

要删除操作员CRDs,请先删除所有正在运行的作业。然后使用以下命令删除用于部署 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,则可以使用以下命令查看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,则使用操作员窗格的日志来查找问题的原因,如下所示:

    $ 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

删除运算符 CRD

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

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

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

    finalizers: - sagemaker-operator-finalizer

图片SMlogs和每个区域

下表列出了每个区域SMLogs中可用的操作员图像。

区域 控制器映像 Linu SMLogs
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