Kubernetes の古い SageMaker 演算子 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Kubernetes の古い SageMaker 演算子

このセクションは、元のバージョンの SageMaker Operators for Kubernetes に基づいています。

重要

元のバージョンの SageMaker Operators for Kubernetes の開発とテクニカルサポートは停止しています。

現在 Operators for Kubernetes SageMaker のバージョン v1.2.2以下を使用している場合は、リソースを Amazon の ACK サービスコントローラー SageMakerに移行することをお勧めします。ACK サービスコントローラーは、 Controllers for Kubernetes (ACK) に基づく新世代の SageMaker Operators for Kubernetes です。 AWS

移行ステップについては、「リソースを最新のオペレータに移行する」を参照してください。

SageMaker Operators for Kubernetes のオリジナルバージョンのサポート終了に関するよくある質問への回答については、「」を参照してください。 元のバージョンの SageMaker Operators for Kubernetes のサポート終了を発表

SageMaker Operators for Kubernetes をインストールする

SageMaker Operators for Kubernetes をインストールして使用して、Amazon で機械学習モデルをトレーニング、調整、デプロイするには、次のステップに従います SageMaker。

IAM ロールベースの設定とオペレーターのデプロイ

以下のセクションでは、オペレーターの元のバージョンを設定、デプロイする手順について説明します。

警告

注意: 次の手順では、最新バージョンの SageMaker Operators for Kubernetes はインストールされません。新しい ACK ベースの SageMaker Operators for Kubernetes をインストールするには、「」を参照してくださいKubernetes の最新 SageMaker オペレーター

前提条件

このガイドでは、次の前提条件を満たしていることを前提としています。

  • Kubernetes クラスターへのアクセスに使用するクライアントマシンに次のツールをインストールします。

    • kubectl バージョン 1.13 以降。Amazon EKS クラスターコントロールプレーンとのマイナーバージョンの相違が 1 つ以内である kubectl バージョンを使用します。例えば、1.13 の kubectl クライアントは、Kubernetes 1.13 と 1.14 のクラスターで動作します。OpenID Connect (OIDC) は 1.13 より前のバージョンではサポートされていません。

    • eksctl バージョン 0.7.0 以降

    • AWS CLI バージョン 1.16.232 以降

    • (オプション) Helm バージョン 3.0 以降

    • aws-iam-authenticator

  • ロールを作成し、ポリシーをロールにアタッチする IAM 許可を持っていること。

  • オペレーターを実行する Kubernetes クラスターが作成されていること。Kubernetes バージョン 1.13 または 1.14 のいずれかである必要があります。eksctl を使用したクラスターの自動作成については、「Amazon EKS の開始方法 – eksctl」を参照してください。クラスターのプロビジョニングには 20~30 分かかります。

クラスターを対象範囲とするデプロイ

IAM ロールを使用してオペレーターをデプロイする前に、OpenID Connect (OIDC) ID プロバイダー(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 ID プロバイダーができたので、ロールを作成し、そのロールを引き受けるアクセス ServiceAccount 許可を Kubernetes に付与できます。

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 ロールを作成する
  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 チャートのいずれかを使用できます。

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 リソースネーム (ARN) に置き換えます。

  3. 以下のコマンドを使用してクラスターをデプロイします。

    kubectl apply -f installer.yaml
Helm チャートを使用してオペレーターをデプロイする

提供された Helm チャートを使用して、オペレーターをインストールします。

  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 リソースネーム (ARN) に置き換えます。

  3. 以下のコマンドを使用して、Helm チャートをインストールします。

    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. オペレーターポッドが正常に実行されていることを確認します。すべてのポッドを一覧表示するには、以下のコマンドを使用します。

    kubectl -n sagemaker-k8s-operator-system get pods

    以下のように、名前空間 sagemaker-k8s-operator-systemsagemaker-k8s-operator-controller-manager-***** という名前のポッドが表示されます。

    NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s

名前空間を対象範囲とするデプロイ

個々の Kubernetes 名前空間の範囲内にオペレーターをインストールするオプションもあります。このモードでは、リソースがその名前空間内に作成された SageMaker 場合にのみ、コントローラーはリソースをモニタリングして と調整します。これにより、リソースを管理するコントローラーはどのコントローラーか細かく制御できます。これは、複数の AWS アカウントにデプロイしたり、特定のジョブにアクセスできるユーザーを制御するのに役立ちます。

このガイドでは、オペレーターを特定の定義済み名前空間にインストールする方法を説明します。コントローラーを 2 番目の名前空間にデプロイするには、このガイドの手順を最初から最後まで実行し、各ステップで名前空間を変更します。

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 ID プロバイダーができたので、ロールを作成し、そのロールを引き受ける ServiceAccount アクセス許可を Kubernetes に付与します。

OIDC ID を取得する

を設定するには ServiceAccount、まず次のコマンドを使用して 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> のプレースホルダーはすべて、クラスターに対応する値に必ず置き換えてください。このガイドでは、<Namespace> の値に my-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 チャートのいずれかを使用できます。

YAML を使用してオペレーターを名前空間にデプロイする

名前空間の範囲内へのオペレーターのデプロイは、2 つの部分で構成されます。1 つ目は、クラスターレベルでインストールされる CRD のセットです。これらのリソース定義は、Kubernetes クラスターごとに 1 回だけインストールする必要があります。2 つ目の部分は、オペレーターのアクセス許可とデプロイそのものです。

クラスターに CRD をまだインストールしていない場合は、以下のコマンドを使用して CRD インストーラ YAML を適用します。

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 リソースネーム (ARN) に置き換えます。

  4. 以下のコマンドを使用してクラスターをデプロイします。

    kubectl apply -f operator.yaml
Helm チャートを使用してオペレーターを名前空間にデプロイする

名前空間の範囲内へのオペレーターのデプロイには、2 つの部分が必要です。1 つ目は、クラスターレベルでインストールされる CRD のセットです。これらのリソース定義は、Kubernetes クラスターごとに 1 回だけインストールする必要があります。2 つ目の部分は、オペレーターのアクセス許可とデプロイそのものです。Helm チャートを使用する場合は、最初に 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 リソースネーム (ARN) に置き換えます。

  3. 以下のコマンドを使用して、Helm チャートをインストールします。

    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. オペレーターポッドが正常に実行されていることを確認します。すべてのポッドを一覧表示するには、以下のコマンドを使用します。

    kubectl -n my-namespace get pods

    以下のように、名前空間 my-namespacesagemaker-k8s-operator-controller-manager-***** という名前のポッドが表示されます。

    NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s

SageMaker ログkubectlプラグインをインストールする

SageMaker Operators for Kubernetes の一部として、 用の smlogsプラグインを使用できますkubectl。これにより、 で SageMaker CloudWatch ログをストリーミングできますkubectl。 は PATH にインストールkubectlする必要があります。以下のコマンドは、ホームディレクトリの 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 チャートを使用してインストールしたオペレーター

オペレーター CRD を削除するには、最初に実行中のジョブをすべて削除します。次に、以下のコマンドを使用して、オペレーターのデプロイに使用した Helm チャートを削除します。

# 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 チャートを使用してインストールしたオペレーター

オペレーター CRD を削除するには、最初に実行中のジョブをすべて削除します。次に、以下のコマンドを使用して、オペレーターのデプロイに使用した 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 を削除する

ジョブの削除が機能しない場合は、オペレーターが実行中かどうかを確認します。オペレーターが実行中でない場合は、以下の手順を使用して、ファイナライザーを削除する必要があります。

  1. 新しいターミナルで、kubectl edit を以下のように使用してジョブをエディタで開きます。

    kubectl edit <crd type> <job name>
  2. ファイルから以下の 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