本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kubernet SageMaker es 的旧运算符
本节基于 Kubernetes SageMaker 操作
重要
我们将停止对 Kubernetes SageMaker 操作
如果您当前使用的是 Kubernetes SageMaker 操作员版本v1.2.2
或更
有关迁移步骤的信息,请参阅将资源迁移到最新 Operator。
有关终止对 Kubernetes SageMaker 操作员原始版本支持的常见问题解答,请参阅 宣布终止对 Kubernetes SageMaker 操作员原始版本的支持
内容
为 Kubernetes 安装 SageMaker 操作员
使用以下步骤安装和使用适用于 Kubernetes 的 SageMaker 操作员,以便通过 Amazon 训练、调整和部署机器学习模型。 SageMaker
基于 IAM 角色的设置和 Operator 部署
以下几节描述了设置和部署 Operator 原始版本的步骤。
警告
提醒:以下步骤不会安装最新版本的 Kubernet SageMaker es 操作员。要为 Kubernetes 安装新的基于 AC SageMaker K 的操作员,请参阅。Kubernet SageMaker es 的最新运算符
先决条件
本教程假设您已完成以下先决条件:
-
在用于访问 Kubernetes 集群的客户端计算机上安装以下工具:
-
拥有创建角色并将策略附加角色的 IAM 权限。
-
创建了一个用于运行 Operator 的 Kubernetes 集群。它应该是 Kubernetes 版本 1.13 或 1.14。有关使用
eksctl
自动创建集群的信息,请参阅 eksctl 入门。预置集群需要 20–30 分钟时间。
集群范围部署
请将 OpenID Connect (OIDC) 身份提供商 (IdP) 与您的角色关联,以便通过 IAM 服务进行身份验证,然后才能使用 IAM 角色部署 Operator。
为集群创建 OIDC 提供商
以下说明介绍如何创建 OIDC 提供商并将其与您的 Amazon EKS 集群关联。
-
按如下方式设置本地
CLUSTER_NAME
和AWS_REGION
环境变量:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
使用以下命令将 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 角色
-
创建一个名为
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" } } } ] } -
运行以下命令,以创建一个具有
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
要附加 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 的最简单方法。流程如下:
-
使用以下命令下载安装程序脚本:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
-
编辑
installer.yaml
文件以替换eks.amazonaws.com/role-arn
。将此处的 ARN 替换为您创建的基于 OIDC 的角色的 Amazon 资源名称 (ARN)。 -
使用以下命令部署集群:
kubectl apply -f installer.yaml
使用 Helm 图表部署 Operator
使用提供的 Helm 图表安装 Operator。
-
使用以下命令克隆 Helm 安装程序目录:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
导航到
amazon-sagemaker-operator-for-k8s/hack/charts/installer
文件夹。编辑rolebased/values.yaml
文件,其中包含图表的高级参数。将此处的角色 ARN 替换为您创建的基于 OIDC 的角色的 Amazon 资源名称 (ARN)。 -
使用以下命令安装 Helm 图表:
kubectl create namespace sagemaker-k8s-operator-system helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
如果您决定将 Operator 安装到指定的命名空间以外的命名空间,则需要调整 IAM 角色
trust.json
文件中定义的命名空间以使其匹配。 -
片刻之后,图表就会以随机生成的名称安装。运行以下命令验证安装是否成功:
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 部署
-
通过运行以下命令,您应该能够看到部署到集群的每个操作员的 SageMaker 自定义资源定义 (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
-
确保 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 集群关联。
-
按如下方式设置本地
CLUSTER_NAME
和AWS_REGION
环境变量:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
使用以下命令将 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 角色
-
创建一个名为
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" } } } ] } -
运行以下命令,以创建一个具有
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
要附加 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 安装到集群上,请执行以下操作:
-
使用以下命令下载 Operator 安装程序 YAML:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
-
使用以下命令更新安装程序 YAML,以将资源放入您指定的命名空间中:
sed -i -e 's/PLACEHOLDER-NAMESPACE/
<YOUR NAMESPACE>
/g' operator.yaml -
编辑
operator.yaml
文件以将资源放入您的eks.amazonaws.com/role-arn
中。将此处的 ARN 替换为您创建的基于 OIDC 的角色的 Amazon 资源名称 (ARN)。 -
使用以下命令部署集群:
kubectl apply -f operator.yaml
使用 Helm 图表将 Operator 部署到您的命名空间
在命名空间范围内部署 Operator 需要两个部分。第一部分是在集群级别安装的一组 CRD。每个 Kubernetes 集群只需安装一次这些资源定义。第二部分是 Operator 权限和部署本身。使用 Helm 图表时,必须先使用 kubectl
创建命名空间。
-
使用以下命令克隆 Helm 安装程序目录:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
导航到
amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced
文件夹。编辑rolebased/values.yaml
文件,其中包含图表的高级参数。将此处的角色 ARN 替换为您创建的基于 OIDC 的角色的 Amazon 资源名称 (ARN)。 -
使用以下命令安装 Helm 图表:
helm install crds crd_chart/
-
使用以下命令创建所需的命名空间并安装 Operator:
kubectl create namespace
<namespace>
helm install --n<namespace>
op operator_chart/ -
片刻之后,图表就会以名称
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 部署到您的命名空间
-
通过运行以下命令,您应该能够看到部署到集群的每个操作员的 SageMaker 自定义资源定义 (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
-
确保 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 日志kubectl
。 kubectl
必须安装到你的 PATHsagemaker-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 安装的 Operator
要从集群中卸载操作员,请确保已从集群中删除所有 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
要删除 Operator CRD,请先删除所有正在运行的作业。然后使用以下命令删除用于部署 Operator 的 Helm 图表:
# get the helm charts helm ls # delete the charts helm delete
<chart_name>
删除基于命名空间的 Operator
使用 YAML 安装的 Operator
要从集群中卸载操作员,请先确保已从集群中删除所有 SageMaker 资源。否则会导致 Operator 删除操作挂起。
注意
在删除集群之前,请务必从集群中删除所有 SageMaker 资源。请参阅清理资源了解更多信息。
删除所有 SageMaker 作业后,使用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,则可以使用以下命令来查看
STATUS
和SageMaker 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
删除 Operator CRD
如果删除作业失败,请检查 Operator 是否正在运行。如果 Operator 未运行,则必须使用以下步骤删除终结器:
-
在新终端中,使用
kubectl edit
在编辑器中打开作业,如下所示:kubectl edit
<crd type>
<job name>
-
编辑作业,通过从文件中删除以下两行来删除终结器。保存文件后,作业即被删除。
finalizers: - sagemaker-operator-finalizer
每个区域中的映像和 SMlog
下表列出了每个区域中可用的 Operator 映像和 SMLog。
区域 | 控制器映像 | 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-k8 -1/ /v1/linux.amd64.tar.gz s-us-east kubectl-smlogs-plugin |
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-k8 -2/ /v1/linux.amd64.tar.gz s-us-east kubectl-smlogs-plugin |
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-k8 -2/ /v1/linux.amd64.tar.gz s-us-west kubectl-smlogs-plugin |
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-k8 -1/ /v1/linux.amd64.tar.gz s-eu-west kubectl-smlogs-plugin |