Kubernetes 的舊 SageMaker 運算子 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Kubernetes 的舊 SageMaker 運算子

本節以 SageMaker Kubernetes 的 Operators 原始版本為基礎。

重要

我們正在停止 Kubernetes 的 SageMaker Operators 原始版本的開發和技術支援。

如果您目前正在使用 版本 v1.2.2或以下的 SageMaker Operators for Kubernetes,建議您將資源遷移至 ACK Amazon 的服務控制器 SageMaker。ACK 服務控制器是以 Kubernetes 的 控制器 () 為基礎的新一代 SageMaker Operators for Kubernetes。 AWS ACK

如需與移轉步驟相關的資訊,請參閱將資源遷移到最新的運算子

如需 Kubernetes 原始版本 SageMaker Operators 支援結束時常見問題的解答,請參閱 宣佈 Kubernetes 運算子原始版本 SageMaker支援結束

為 Kubernetes 安裝 SageMaker 運算子

使用下列步驟安裝和使用 SageMaker Operators for Kubernetes,以使用 Amazon 訓練、調校和部署機器學習模型 SageMaker。

IAM 角色型設定和運算子部署

以下各節說明設定和部署原始版本運算子的步驟。

警告

提醒:下列步驟不會安裝最新版本的 SageMaker Operators for Kubernetes。若要為 Kubernetes 安裝新的 ACK型 SageMaker 運算子,請參閱 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許可。

  • 已建立要在其上執行運算子的 Kubernetes 叢集。應該是 Kubernetes 版本 1.13 或 1.14。對於使用 eksctl 自動建立的叢集,請參閱eksctl 入門。佈建叢集需要 20–30 分鐘才能完成。

叢集範圍部署

在您使用 IAM角色部署 運算子之前,請將 OpenID Connect (OIDC) Identity Provider 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 ID

若要設定 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

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> 預留位置。

    { "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;您會將此值傳遞給運算子。

將 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許可。當您安裝運算子時,請確認這一點。

部署運算子

部署運算子時,您可以使用YAML檔案或 Helm Chart。

使用 部署運算子 YAML

這是部署運算子的最簡單方法。程序如下:

  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 Resource Name (ARN)。

  3. 使用下列命令部署叢集:

    kubectl apply -f installer.yaml
使用 Helm Chart 部署運算子

使用提供的 Helm Chart 安裝運算子。

  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 Resource Name (ARN)。

  3. 使用以下命令安裝 Helm Chart:

    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
驗證運算子部署
  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. 確定運算子 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 命名空間的範圍內安裝操作員。在此模式中, SageMaker 如果資源是在該命名空間內建立,控制器只會監控和調節資源。這樣可以更好地控制由哪個控制器管理哪些資源。這對於部署到多個 AWS 帳戶或控制哪些使用者有權存取特定任務非常有用。

本指南概述如何將運算子安裝到預先定義的特定命名空間。若要將控制器部署到第二個命名空間,請從頭到尾遵循指南進行操作,並在每個步驟中變更命名空間。

為您的 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,請先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,值 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> 的值。

    { "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。您會將此值傳遞給運算子。

將 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許可。當您安裝運算子時,請確認這一點。

將運算子部署到命名空間

部署運算子時,您可以使用YAML檔案或 Helm Chart。

使用 將運算子部署到您的命名空間 YAML

在命名空間範圍內部署運算子分為兩個部分。第一個是在叢集層級安裝CRDs的 集合。每個 Kubernetes 叢集只需安裝一次這些資源定義。第二部分是運算子許可和部署本身。

如果您尚未在叢集CRDs中安裝 ,YAML請使用下列命令套用CRD安裝程式:

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

將運算子安裝到叢集:

  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 Resource Name (ARN)。

  4. 使用下列命令部署叢集:

    kubectl apply -f operator.yaml
使用 Helm Chart 將運算子部署到命名空間

在命名空間範圍內部署運算子需要分為兩個部分。第一個是在叢集層級安裝CRDs的 集合。每個 Kubernetes 叢集只需安裝一次這些資源定義。第二部分是運算子許可和部署本身。使用 Helm Chart 時,您必須首先使用 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 Resource Name (ARN)。

  3. 使用以下命令安裝 Helm Chart:

    helm install crds crd_chart/
  4. 建立必要的命名空間並使用下列命令安裝運算子:

    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
驗證運算子已部署到命名空間
  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. 確定運算子 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 Operators 的一部分,您可以使用 的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資源。不這樣做會導致運算子刪除操作掛起。執行下列命令來停止所有工作:

# 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 任務後,請參閱 刪除運算子 以從叢集中刪除運算子。

刪除運算子

刪除叢集型運算子

使用 安裝的運算子 YAML

若要從您的叢集解除安裝運算子,請確定已從叢集中刪除所有 SageMaker 資源。不這樣做會導致運算子刪除操作掛起。

注意

刪除叢集之前,請務必從叢集中刪除所有 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 Chart 安裝的運算子

若要刪除運算子 CRDs,請先刪除所有執行中的任務。然後使用以下命令刪除用於部署運算子的 Helm Chart:

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

刪除命名空間型運算子

安裝 的運算子 YAML

若要從叢集解除安裝運算子,請先確定已從叢集中刪除所有 SageMaker 資源。不這樣做會導致運算子刪除操作掛起。

注意

刪除叢集之前,請務必從叢集中刪除所有 SageMaker 資源。如需更多資訊,請參閱清除資源

刪除所有 SageMaker 任務後,請使用 kubectl先從命名空間刪除運算子,然後從叢集CRDs刪除 。執行下列命令以從叢集中刪除運算子:

# 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 Chart 安裝的運算子

若要刪除運算子 CRDs,請先刪除所有執行中的任務。然後使用以下命令刪除用於部署運算子的 Helm Chart:

# 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,請使用運算子 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

刪除運算子 CRD

如果刪除工作失敗,請檢查運算子是否正在執行。如果運算子沒有執行,則您必須執行以下步驟刪除終結器:

  1. 在新的終端機中,使用 kubectl edit 在編輯器中打開工作,如下所示:

    kubectl edit <crd type> <job name>
  2. 透過從檔案中移除以下兩行來編輯工作,以刪除終結器。儲存檔案,該作業將被刪除。

    finalizers: - sagemaker-operator-finalizer

SMlogs 每個區域中的影像和

下表列出SMLogs每個區域中可用的運算子映像和 。

區域 控制器映像 Linux 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