Kubernetes の古い SageMaker 演算子 - Amazon SageMaker

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

Kubernetes の古い SageMaker 演算子

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

重要

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

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

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

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

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

次の手順を使用して、Amazon で機械学習モデルをトレーニング、調整、デプロイするための SageMaker Operators for Kubernetes をインストールして使用します 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) 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 ID プロバイダーができたので、ロールを作成し、そのロールを引き受けるアクセス ServiceAccount 許可を Kubernetes に付与できます。

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、値は OIDC ID D48675832CA65BD10A532F597OIDCIDです。クラスターの 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 を置き換えます。ここで を、作成した OIDCベースのロールの Amazon リソースネーム (ARN) 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、まず次のコマンド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> のプレースホルダーはすべて、クラスターに対応する値に必ず置き換えてください。このガイドでは、<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 つ目は、クラスターレベルでインストールCRDsされる のセットです。これらのリソース定義は、Kubernetes クラスターごとに 1 回だけインストールする必要があります。2 つ目の部分は、オペレーターのアクセス許可とデプロイそのものです。

クラスター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 にリソースを配置します。ここで、 を、作成した OIDCベースのロールの Amazon リソースネーム (ARN) ARNに置き換えます。

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

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

名前空間の範囲内へのオペレーターのデプロイには、2 つの部分が必要です。1 つ目は、クラスターレベルでインストールCRDsされる のセットです。これらのリソース定義は、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。 は にインストール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 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 チャートを使用してインストールしたオペレーター

演算子 を削除するにはCRDs、まず実行中のすべてのジョブを削除します。次に、以下のコマンドを使用して、オペレーターのデプロイに使用した 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 チャートを使用してインストールしたオペレーター

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

各リージョン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