本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Kubernetes 的舊 SageMaker AI Operator
本節以適用於 Kubernetes 的 SageMaker AI Operators
重要
我們正在停止對 SageMaker Operators for Kubernetes
如果您目前使用的是 SageMaker Operators for Kubernetesv1.2.2
或以下版本,我們建議您將資源遷移到 Amazon SageMaker 的 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 叢集的用戶端電腦上安裝下列工具:
-
擁有建立角色並將政策附加至角色的 IAM 許可。
-
已建立要在其上執行運算子的 Kubernetes 叢集。應該是 Kubernetes 版本 1.13 或 1.14。對於使用
eksctl
自動建立的叢集,請參閱eksctl 入門。佈建叢集需要 20–30 分鐘才能完成。
叢集範圍部署
使用 IAM 角色部署運算子之前,請先將 OpenID Connect (OIDC) 身分提供者 (IdP) 與您的角色建立關聯,以便透過 IAM 服務進行驗證。
為您的叢集建立 OIDC 身分提供者
下列指示展示如何建立 OIDC 提供者,並將其與您的 Amazon EKS 叢集相關聯。
-
設定本機
CLUSTER_NAME
和AWS_REGION
環境變數,如下所示:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
使用下列命令將 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 角色
-
建立一個名為
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" } } } ] } -
執行下列命令,以建立具有
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 部署運算子
這是部署運算子的最簡單方法。程序如下:
-
使用以下命令下載安裝程式指令碼:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
-
編輯
installer.yaml
檔案以取代eks.amazonaws.com/role-arn
。將此處的 ARN 取代為您建立的 OIDC 型角色的 Amazon Resource Name (ARN)。 -
使用下列命令部署叢集:
kubectl apply -f installer.yaml
使用 Helm Chart 部署運算子
使用提供的 Helm Chart 安裝運算子。
-
使用以下命令複製 Helm 安裝程式目錄:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
導覽至
amazon-sagemaker-operator-for-k8s/hack/charts/installer
資料夾。編輯rolebased/values.yaml
檔案,其中包含圖表的高階參數。將此處的角色 ARN 取代為您建立的 OIDC 型角色的 Amazon Resource Name (ARN)。 -
使用以下命令安裝 Helm Chart:
kubectl create namespace sagemaker-k8s-operator-system helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
如果您決定將運算子安裝到指定命名空間以外的其他命名空間,則需要調整 IAM 角色
trust.json
檔案中定義的命名空間,以確保命名空間相符。 -
片刻之後,圖表會以隨機產生的名稱安裝。執行下列命令來驗證是否安裝成功:
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
驗證運算子部署
-
您應該可以執行下列命令,查看部署到叢集的每個運算子的 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
-
確定運算子 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 叢集相關聯。
-
設定本機
CLUSTER_NAME
和AWS_REGION
環境變數,如下所示:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
使用下列命令將 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 角色
-
建立一個名為
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" } } } ] } -
執行下列命令,以建立具有
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
將運算子安裝到叢集:
-
使用以下命令下載運算子安裝程式:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
-
使用下列命令更新安裝程式 YAML,以將資源放入指定的命名空間中:
sed -i -e 's/PLACEHOLDER-NAMESPACE/
<YOUR NAMESPACE>
/g' operator.yaml -
編輯
operator.yaml
檔案以將資源放入您的eks.amazonaws.com/role-arn
。將此處的 ARN 取代為您建立的 OIDC 型角色的 Amazon Resource Name (ARN)。 -
使用下列命令部署叢集:
kubectl apply -f operator.yaml
使用 Helm Chart 將運算子部署到命名空間
在命名空間範圍內部署運算子需要分為兩個部分。第一部分是在叢集層級安裝的一組 CRD。每個 Kubernetes 叢集只需安裝一次這些資源定義。第二部分是運算子許可和部署本身。使用 Helm Chart 時,您必須首先使用 kubectl
建立命名空間。
-
使用以下命令複製 Helm 安裝程式目錄:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
導覽至
amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced
資料夾。編輯rolebased/values.yaml
檔案,其中包含圖表的高階參數。將此處的角色 ARN 取代為您建立的 OIDC 型角色的 Amazon Resource Name (ARN)。 -
使用以下命令安裝 Helm Chart:
helm install crds crd_chart/
-
建立必要的命名空間並使用下列命令安裝運算子:
kubectl create namespace
<namespace>
helm install --n<namespace>
op operator_chart/ -
片刻之後,系統會以
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
驗證運算子已部署到命名空間
-
您應該可以執行下列命令,查看部署到叢集的每個運算子的 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
-
確定運算子 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 日誌透過 串流kubectl
。 kubectl
必須安裝在 PATHsagemaker-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 中建立任務,您可以使用下列命令來查看
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 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
如果刪除工作失敗,請檢查運算子是否正在執行。如果運算子沒有執行,則您必須執行以下步驟刪除終結器:
-
在新的終端機中,使用
kubectl edit
在編輯器中打開工作,如下所示:kubectl edit
<crd type>
<job name>
-
透過從檔案中移除以下兩行來編輯工作,以刪除終結器。儲存檔案,該作業將被刪除。
finalizers: - sagemaker-operator-finalizer
每個區域的映像和 SMLog
下表列出每個區域中可用的運算子映像和 SMlog。