Kubernetes 的舊 SageMaker AI Operator - Amazon SageMaker AI

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

Kubernetes 的舊 SageMaker AI Operator

本節以適用於 Kubernetes 的 SageMaker AI Operators 原始版本為基礎。

重要

我們正在停止對 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 原始版本的支援結束

為 Kubernetes 安裝 SageMaker AI Operators

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

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

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

警告

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

必要條件

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

  • 在用來存取 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> 預留位置。

    { "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 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 自訂資源定義 (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 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> 的值。

    { "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 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 自訂資源定義 (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 AI 日誌kubectl外掛程式

作為 Kubernetes 的 SageMaker AI Operators 的一部分,您可以使用 的smlogs外掛程式kubectl。這可讓 SageMaker AI 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 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先從命名空間刪除運算子,然後從叢集刪除 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 安裝的運算子

若要刪除運算子 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