本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kubernet SageMaker es 的旧运算符
本节基于 Kubernetes SageMaker 操作
重要
我们将停止对 Kubernetes SageMaker 操作
如果您当前使用的是 Kubernetes SageMaker 操作v1.2.2
或更低版本,我们建议您将资源迁移到亚马逊的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.13kubectl
客户端使用 Kubernetes 1.13 和 1.14 集群。1.13 之前的版本不支持 OpenID Connect (OIDC)。 -
eksctl
版本 0.7.0 或更高版本 -
Amazon CLI版本 1.16.232 或更高版本
-
(可选)Helm
版本 3.0 或更高版本
-
-
拥有创建角色和为角色附加策略的IAM权限。
-
创建了一个用于运行 Operator 的 Kubernetes 集群。它应该是 Kubernetes 版本 1.13 或 1.14。有关使用
eksctl
自动创建集群的信息,请参阅 eksctl 入门。预置集群需要 20–30 分钟时间。
集群范围部署
在使用IAM角色部署操作员之前,请将 OpenID Connect (OIDC) 身份提供商 (IdP) 与您的角色关联,以便通过服务进行身份验证。IAM
为您的集群创建OIDC提供商
以下说明说明如何创建OIDC提供商并将其与您的 Amazon EKS 集群关联。
-
按如下方式设置本地
CLUSTER_NAME
和AWS_REGION
环境变量:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export Amazon_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身份证
要设置 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 角色
-
创建一个名为
trust.json
的文件,并在其中插入以下信任关系代码块。请务必将所有<OIDC ID>
、<Amazon account number>
和<EKS Cluster region>
占位符替换为与您的集群对应的值。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws-cn:iam::
<Amazon 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
附加以下策略:
aws iam attach-role-policy --region ${AWS_REGION} --role-name
<role name>
--policy-arn arn:aws-cn:iam::aws:policy/AmazonSageMakerFullAccess
Kubernetes ServiceAccount sagemaker-k8s-operator-default
应该拥有权限。AmazonSageMakerFullAccess
安装 Operator 时请确认这一点。
部署 Operator
部署操作员时,您可以使用YAML文件或 Helm 图表。
使用部署操作员 YAML
这是部署 Operator 的最简单方法。流程如下:
-
下载以下安装程序脚本。每当引用
installer.yaml
时,都用installer_china.yaml
代替。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/china/installer_china.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/
如果您决定将运算符安装到指定的命名空间以外的命名空间中,则需要调整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 自定义资源定义 (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
-
确保 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 控制器才会监控和协调资源。这样就能对哪个控制器管理哪个资源进行更精细的控制。这对于部署到多个 Amazon 账户或控制哪些用户有权访问特定作业非常有用。
本指南概述了如何将 Operator 安装到特定的预定义命名空间中。要将控制器部署到第二个命名空间中,请从头到尾按照指南进行操作,并在每个步骤中更改命名空间。
为您的 Amazon EKS 集群创建OIDC提供商
以下说明说明如何创建OIDC提供商并将其与您的 Amazon EKS 集群关联。
-
按如下方式设置本地
CLUSTER_NAME
和AWS_REGION
环境变量:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export Amazon_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身份证
要进行设置 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角色
-
创建一个名为
trust.json
的文件,并在其中插入以下信任关系代码块。请务必将所有<OIDC ID>
、<Amazon account number>
和<EKS Cluster region>
占位符替换为与您的集群对应的值。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws-cn:iam::<Amazon 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
附加以下策略:
aws iam attach-role-policy --region ${AWS_REGION} --role-name
<role name>
--policy-arn arn:aws-cn: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 安装到集群上,请执行以下操作:
-
下载以下 Operator 脚本。每当引用
operator.yaml
时,都用operator_china.yaml
代替。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/china/operator_china.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 需要两个部分。第一个是在集群CRDs级别安装的一组。每个 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 自定义资源定义 (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
-
确保 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
要从集群中卸载操作员,请确保已从集群中删除所有 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,则可以使用以下命令查看
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
删除运算符 CRD
如果删除作业失败,请检查 Operator 是否正在运行。如果 Operator 未运行,则必须使用以下步骤删除终结器:
-
在新终端中,使用
kubectl edit
在编辑器中打开作业,如下所示:kubectl edit
<crd type>
<job name>
-
编辑作业,通过从文件中删除以下两行来删除终结器。保存文件后,作业即被删除。
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 |