View a markdown version of this page

舊版 SageMaker AI Operators for Kubernetes - Amazon SageMaker AI

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

舊版 SageMaker AI Operators for Kubernetes

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

重要

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

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

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

如需與終止支援 SageMaker Operators for Kubernetes 原始版本相關的常見問題的答案,請參閱宣布終止支援 SageMaker AI Operators for Kubernetes 原始版本

安裝 SageMaker AI Operators for Kubernetes

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

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

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

警告

提醒:下列步驟不會安裝 SageMaker AI Operators for Kubernetes 的最新版本。若要安裝新 ACK 型 SageMaker AI Operators for Kubernetes,請參閱最新 SageMaker AI Operators for Kubernetes

先決條件

本指南假設已完成下列先決條件:

  • 在用來存取 Kubernetes 叢集的用戶端電腦上安裝下列工具:

    • kubectl 1.13 版本或更新版本。使用 kubectl 版本,必須與 Amazon EKS 叢集控制平面的版本差距在一個版本以內。例如,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) 身分提供者 (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 服務帳戶許可來擔任該角色。

取得 OIDC ID

若要設定服務帳戶,請使用下列命令取得 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;您會將此值傳遞給運算子。

將 AmazonSageMakerFullAccess 政策附加到此角色

若要授予角色 SageMaker AI 的存取權,請附加 AmazonSageMakerFullAccess 政策。如果想要限制運算子的權限,您可以建立並附加自訂政策。

若要附加 AmazonSageMakerFullAccess,請執行下列命令:

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

Kubernetes 服務帳戶 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 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. 確定運算子 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 AI 命名空間內建立時,控制器才會監視並協調資源。這樣可以更好地控制由哪個控制器管理哪些資源。這對於部署到多個 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 服務帳戶許可來擔任該角色。

取得 OIDC ID

若要設定服務帳戶,首先請使用下列命令取得 OpenID Connect 發行者 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><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。您會將此值傳遞給運算子。

將 AmazonSageMakerFullAccess 政策附加到您的角色

若要授予角色 SageMaker AI 的存取權,請附加 AmazonSageMakerFullAccess 政策。如果想要限制運算子的權限,您可以建立並附加自訂政策。

若要附加 AmazonSageMakerFullAccess,請執行下列命令:

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

Kubernetes 服務帳戶 sagemaker-k8s-operator-default 應該具有 AmazonSageMakerFullAccess 許可。當您安裝運算子時,請確認這一點。

將運算子部署到命名空間

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

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

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

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

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

將運算子安裝到叢集:

  1. 使用以下命令下載運算子安裝程式:

    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 將運算子部署到命名空間

在命名空間範圍內部署運算子需要分為兩個部分。第一部分是在叢集層級安裝的一組 CRD。每個 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 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. 確定運算子 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 日誌 kubectl 外掛程式

作為 SageMaker AI Operators for Kubernetes 的一部分,您可以針對 kubectl 使用 smlogs 外掛程式。這允許使用 kubectl 串流 SageMaker AI CloudWatch 日誌。kubectl 必須安裝到您的 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 資源。不這樣做會導致運算子刪除操作掛起。執行下列命令來停止所有工作:

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

刪除運算子

刪除叢集型運算子

使用 YAML 安裝的運算子

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

注意

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

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

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

刪除命名空間型運算子

使用 YAML 安裝的運算子

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

注意

刪除叢集之前,請務必刪除叢集中的所有 SageMaker AI 資源。如需詳細資訊,請參閱清除資源

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

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

若要刪除運算子 CRD,請先刪除所有執行中的工作。然後使用以下命令刪除用於部署運算子的 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 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

刪除運算子 CRD

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

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

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

    finalizers: - sagemaker-operator-finalizer

每個區域的映像和 SMLog

下表列出每個區域中可用的運算子映像和 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-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