Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Alte SageMaker Operatoren für Kubernetes
Dieser Abschnitt basiert auf der Originalversion von SageMaker Operators for
Wichtig
Wir stellen die Entwicklung und den technischen Support der Originalversion von SageMaker Operators for
Wenn Sie derzeit eine Version v1.2.2
oder eine niedrigere Version von SageMaker Operators for Kubernetes
Informationen zu den Migrationsschritten finden Sie unter Migrieren Sie Ressourcen zu den neuesten Operatoren.
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter Ankündigung des Endes der Support der Originalversion von SageMaker Operators for Kubernetes
Inhalt
Installieren Sie SageMaker Operators for Kubernetes
Gehen Sie wie folgt vor, um SageMaker Operators for Kubernetes zu installieren und zu verwenden, um Modelle für maschinelles Lernen mit Amazon zu trainieren, zu optimieren und bereitzustellen. SageMaker
Inhalt
IAMRollenbasierte Einrichtung und Bereitstellung durch Bediener
In den folgenden Abschnitten werden die Schritte zum Einrichten und Bereitstellen der Originalversion des Operators beschrieben.
Warnung
Erinnerung: Mit den folgenden Schritten wird nicht die neueste Version von SageMaker Operators for Kubernetes installiert. Informationen zur Installation der neuen ACK basierten SageMaker Operatoren für Kubernetes finden Sie unter. Aktuelle SageMaker Operatoren für Kubernetes
Voraussetzungen
In diesem Leitfaden wird davon ausgegangen, dass Sie die folgenden Voraussetzungen erfüllt haben:
-
Installieren Sie die folgenden Tools auf dem Client-Computer, der für den Zugriff auf Ihren Kubernetes-Cluster verwendet wird:
-
kubectl
, Version 1.13 oder höher. Verwenden Sie einekubectl
Version, die sich in einer Nebenversion Ihrer EKS Amazon-Cluster-Steuerebene befindet. Ein 1.13kubectl
-Client funktioniert zum Beispiel mit Kubernetes 1.13- und 1.14-Clustern. OpenID Connect (OIDC) wird in Versionen vor 1.13 nicht unterstützt. -
eksctl
-Version 0.7.0 oder höher -
AWS CLIVersion 1.16.232 oder höher
-
(optional) Helm
-Version 3.0 oder höher
-
-
Sie sind IAM berechtigt, Rollen zu erstellen und Rollen Richtlinien zuzuweisen.
-
Es wurde ein Kubernetes-Cluster erstellt, auf dem die Operatoren ausgeführt werden sollen. Es sollte entweder Kubernetes Version 1.13 oder 1.14 sein. Informationen zur automatisierten Clustererstellung mithilfe von finden Sie unter Starten mit eksctl
eksctl
. Die Bereitstellung eines Clusters dauert 20-30 Minuten.
Bereitstellung im Clusterbereich
Bevor Sie Ihren Operator mithilfe einer IAM Rolle einsetzen können, ordnen Sie Ihrer Rolle einen OpenID Connect (OIDC) Identity Provider (IdP) zu, um sich beim Dienst zu authentifizieren. IAM
Erstellen Sie einen OIDC Anbieter für Ihren Cluster
Die folgenden Anweisungen zeigen, wie Sie einen OIDC Anbieter erstellen und mit Ihrem EKS Amazon-Cluster verknüpfen.
-
Legen Sie die lokalen Variablen
CLUSTER_NAME
und dieAWS_REGION
-Umgebungsvariablen wie folgt fest:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
Verwenden Sie den folgenden Befehl, um den OIDC Anbieter Ihrem Cluster zuzuordnen. Weitere Informationen finden Sie unter IAMRollen für Dienstkonten auf Ihrem Cluster aktivieren.
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve
Die Ausgabe sollte folgendermaßen aussehen:
[_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
Da der Cluster nun über einen OIDC Identitätsanbieter verfügt, können Sie eine Rolle erstellen und Kubernetes die ServiceAccount Erlaubnis erteilen, die Rolle zu übernehmen.
Holen Sie sich die ID OIDC
Um das einzurichten ServiceAccount, rufen Sie den OIDC Aussteller URL mit dem folgenden Befehl ab:
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text
Der Befehl gibt einen Wert URL wie den folgenden zurück:
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
In diesem URL Fall D48675832CA65BD10A532F597OIDCID
ist der Wert die OIDC ID. Die OIDC ID für Ihren Cluster ist unterschiedlich. Sie benötigen diesen OIDC ID-Wert, um eine Rolle zu erstellen.
Wenn Ihre Ausgabe None
ist, bedeutet das, dass Ihre Client-Version alt ist. Führen Sie zum Umgehen des Problems den folgenden Befehl aus:
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
Der OIDC URL wird wie folgt zurückgegeben:
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
Erstellen Sie eine IAM-Rolle
-
Erstellen Sie eine Datei mit dem Namen
trust.json
und fügen Sie den folgenden Vertrauensstellungs-Codeblock ein. Achten Sie darauf, alle<OIDC ID>
,<AWS account number>
, und<EKS Cluster region>
-Platzhalter durch Werte zu ersetzen, die Ihrem Cluster entsprechen.{ "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" } } } ] } -
Führen Sie den folgenden Befehl aus, um eine Rolle mit der unter
trust.json
definierten Vertrauensstellung zu erstellen. Diese Rolle ermöglicht es dem EKS Amazon-Cluster, Anmeldeinformationen von abzurufen und zu aktualisierenIAM.aws iam create-role --region ${AWS_REGION} --role-name
<role name>
--assume-role-policy-document file://trust.json --output=textDie Ausgabe sollte folgendermaßen aussehen:
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/
Achten Sie auf
ROLE ARN
; Sie übergeben diesen Wert an Ihren Operator.
Hängen Sie die AmazonSageMakerFullAccess Richtlinie an die Rolle an
Um der Rolle Zugriff zu gewähren SageMaker, hängen Sie die AmazonSageMakerFullAccess
Um AmazonSageMakerFullAccess
anzuhängen, führen Sie den folgenden Befehl aus:
aws iam attach-role-policy --role-name
<role name>
--policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
Die Kubernetes ServiceAccount sagemaker-k8s-operator-default
sollten über Berechtigungen verfügenAmazonSageMakerFullAccess
. Bestätigen Sie dies, wenn Sie den Operator installieren.
Bereitstellen des Operators
Bei der Bereitstellung Ihres Operators können Sie entweder eine YAML Datei oder Helm-Diagramme verwenden.
Stellen Sie den Operator bereit mit YAML
Dies ist die einfachste Möglichkeit, Ihre Operatoren bereitzustellen. Der Prozess läuft folgendermaßen ab:
-
Laden Sie das Installationsskript mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
-
Bearbeiten Sie die zu ersetzende
installer.yaml
Dateieks.amazonaws.com/role-arn
. Ersetzen Sie ARN hier durch den Amazon-Ressourcennamen (ARN) für die von Ihnen erstellte OIDC basierte Rolle. -
Verwenden Sie den folgenden Befehl, um den Cluster bereitzustellen:
kubectl apply -f installer.yaml
Stellen Sie den Operator mithilfe von Helm Charts bereit
Verwenden Sie das mitgelieferte Helm-Diagramm, um den Operator zu installieren.
-
Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
Navigieren Sie zum Verzeichnis
amazon-sagemaker-operator-for-k8s/hack/charts/installer
. Bearbeiten Sie dierolebased/values.yaml
Datei, die allgemeine Parameter für das Diagramm enthält. Ersetzen Sie die Rolle ARN hier durch den Amazon-Ressourcennamen (ARN) für die von Ihnen erstellte OIDC basierte Rolle. -
Installieren Sie das Helm Chart mit dem folgenden Befehl:
kubectl create namespace sagemaker-k8s-operator-system helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
Wenn Sie den Operator in einem anderen als dem angegebenen Namespace installieren möchten, müssen Sie den in der IAM
trust.json
Rollendatei definierten Namespace entsprechend anpassen. -
Nach einem Moment wird das Diagramm mit einem zufällig generierten Namen installiert. Überprüfen Sie, ob die Installation erfolgreich war, indem Sie den folgenden Befehl ausführen:
helm ls
Die Ausgabe sollte folgendermaßen aussehen:
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
Überprüfen Sie den Einsatz des Operators
-
Sie sollten in der Lage sein, die SageMaker benutzerdefinierten Ressourcendefinitionen (CRDs) für jeden in Ihrem Cluster bereitgestellten Operator zu sehen, indem Sie den folgenden Befehl ausführen:
kubectl get crd | grep sagemaker
Die Ausgabe sollte folgendermaßen aussehen:
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
-
Stellen Sie sicher, dass der Operator-Pod erfolgreich ausgeführt wird. Verwenden Sie den folgenden Befehl, um alle Pods aufzulisten:
kubectl -n sagemaker-k8s-operator-system get pods
Sie sollten einen Pod mit dem Namen
sagemaker-k8s-operator-controller-manager-*****
im Namespacesagemaker-k8s-operator-system
wie folgt sehen:NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s
Bereitstellung im Namespace-Bereich
Sie haben die Möglichkeit, Ihren Operator im Rahmen eines individuellen Kubernetes-Namespace zu installieren. In diesem Modus überwacht der Controller nur Ressourcen und gleicht sie ab, SageMaker wenn die Ressourcen in diesem Namespace erstellt wurden. Dies ermöglicht eine genauere Kontrolle darüber, welcher Controller welche Ressourcen verwaltet. Dies ist nützlich, wenn Sie die Bereitstellung für mehrere AWS Konten durchführen oder kontrollieren möchten, welche Benutzer Zugriff auf bestimmte Jobs haben.
In dieser Anleitung wird beschrieben, wie ein Operator in einem bestimmten, vordefinierten Namespace installiert wird. Um einen Controller in einem zweiten Namespace bereitzustellen, folgen Sie der Anleitung von Anfang bis Ende und ändern Sie den Namespace in jedem Schritt.
Erstellen Sie einen OIDC Anbieter für Ihren EKS Amazon-Cluster
Die folgenden Anweisungen zeigen, wie Sie einen OIDC Anbieter erstellen und mit Ihrem EKS Amazon-Cluster verknüpfen.
-
Legen Sie die lokalen Variablen
CLUSTER_NAME
und dieAWS_REGION
-Umgebungsvariablen wie folgt fest:# Set the Region and cluster export CLUSTER_NAME="
<your cluster name>
" export AWS_REGION="<your region>
" -
Verwenden Sie den folgenden Befehl, um den OIDC Anbieter Ihrem Cluster zuzuordnen. Weitere Informationen finden Sie unter IAMRollen für Dienstkonten auf Ihrem Cluster aktivieren.
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve
Die Ausgabe sollte folgendermaßen aussehen:
[_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
Da der Cluster nun über einen OIDC Identitätsanbieter verfügt, erstellen Sie eine Rolle und erteilen Sie Kubernetes die ServiceAccount Erlaubnis, die Rolle zu übernehmen.
Holen Sie sich Ihre ID OIDC
Um das einzurichten ServiceAccount, rufen Sie zunächst den OpenID Connect-Aussteller URL mit dem folgenden Befehl ab:
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text
Der Befehl gibt ein Ergebnis URL wie das Folgende zurück:
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
In diesem Fall ist URL der Wert D48675832 CA65BD1 0A532F597 die ID. OIDCID OIDC Die ID für Ihren Cluster ist unterschiedlich. OIDC Sie benötigen diesen OIDC ID-Wert, um eine Rolle zu erstellen.
Wenn Ihre Ausgabe None
ist, bedeutet das, dass Ihre Client-Version alt ist. Führen Sie zum Umgehen des Problems den folgenden Befehl aus:
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
Der OIDC URL wird wie folgt zurückgegeben:
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
Erstelle deine IAM Rolle
-
Erstellen Sie eine Datei mit dem Namen
trust.json
und fügen Sie den folgenden Codeblock für Vertrauensbeziehungen ein. Achten Sie darauf, alle<OIDC ID>
,<AWS account number>
,<EKS Cluster region>
, und<Namespace>
und Platzhalter durch Werte zu ersetzen, die Ihrem Cluster entsprechen. Für die Zwecke dieses Handbuchsmy-namespace
wird für den<Namespace>
Wert verwendet.{ "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" } } } ] } -
Führen Sie den folgenden Befehl aus, um eine Rolle mit der unter
trust.json
definierten Vertrauensstellung zu erstellen. Diese Rolle ermöglicht es dem EKS Amazon-Cluster, Anmeldeinformationen von abzurufen und zu aktualisierenIAM.aws iam create-role --region ${AWS_REGION} --role-name
<role name>
--assume-role-policy-document file://trust.json --output=textDie Ausgabe sollte folgendermaßen aussehen:
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/
Beachten Sie ROLE ARN
. Sie geben diesen Wert an Ihren Operator weiter.
Hängen Sie die AmazonSageMakerFullAccess Richtlinie an Ihre Rolle an
Um der Rolle Zugriff zu gewähren SageMaker, fügen Sie die AmazonSageMakerFullAccess
Um AmazonSageMakerFullAccess
anzuhängen, führen Sie den folgenden Befehl aus:
aws iam attach-role-policy --role-name
<role name>
--policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
Die Kubernetes ServiceAccount sagemaker-k8s-operator-default
sollten über Berechtigungen verfügenAmazonSageMakerFullAccess
. Bestätigen Sie dies, wenn Sie den Operator installieren.
Stellen Sie den Operator in Ihrem Namespace bereit
Bei der Bereitstellung Ihres Operators können Sie entweder eine YAML Datei oder Helm-Diagramme verwenden.
Stellen Sie den Operator in Ihrem Namespace bereit mit YAML
Die Bereitstellung eines Operators innerhalb eines Namespaces besteht aus zwei Teilen. Der erste ist der SatzCRDs, der auf Clusterebene installiert ist. Diese Ressourcendefinitionen müssen nur einmal pro Kubernetes-Cluster installiert werden. Der zweite Teil betrifft die Bedienerberechtigungen und die Bereitstellung selbst.
Wenn Sie das noch nicht im CRDs Cluster installiert haben, wenden Sie das CRD Installationsprogramm YAML mit dem folgenden Befehl an:
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
Um den Operator auf dem Cluster zu installieren:
-
Laden Sie das Operator-Installationsprogramm YAML mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
-
Aktualisieren Sie das Installationsprogramm YAML mit dem folgenden Befehl, sodass es die Ressourcen in Ihrem angegebenen Namespace platziert:
sed -i -e 's/PLACEHOLDER-NAMESPACE/
<YOUR NAMESPACE>
/g' operator.yaml -
Bearbeiten Sie die
operator.yaml
Datei, um Ressourcen in Ihremeks.amazonaws.com/role-arn
zu platzieren. Ersetzen Sie ARN hier durch den Amazon-Ressourcennamen (ARN) für die von Ihnen erstellte OIDC basierte Rolle. -
Verwenden Sie den folgenden Befehl, um den Cluster bereitzustellen:
kubectl apply -f operator.yaml
Stellen Sie den Operator mithilfe von Helm Charts in Ihrem Namespace bereit
Für die Bereitstellung eines Operators im Rahmen eines Namespaces sind zwei Teile erforderlich. Bei der ersten handelt es sich um CRDs die Gruppe, die auf Clusterebene installiert sind. Diese Ressourcendefinitionen müssen nur einmal pro Kubernetes-Cluster installiert werden. Der zweite Teil betrifft die Bedienerberechtigungen und die Bereitstellung selbst. Wenn Sie Helm Charts verwenden, müssen Sie zuerst den Namespace mit kubectl
erstellen.
-
Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
Navigieren Sie zum Verzeichnis
amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced
. Bearbeiten Sie dierolebased/values.yaml
Datei, die allgemeine Parameter für das Diagramm enthält. Ersetzen Sie die Rolle ARN hier durch den Amazon-Ressourcennamen (ARN) für die von Ihnen erstellte OIDC basierte Rolle. -
Installieren Sie das Helm Chart mit dem folgenden Befehl:
helm install crds crd_chart/
-
Erstellen Sie den erforderlichen Namespace und installieren Sie den Operator mit dem folgenden Befehl:
kubectl create namespace
<namespace>
helm install --n<namespace>
op operator_chart/ -
Nach einem Moment wird das Diagramm mit dem Namen
sagemaker-operator
installiert. Überprüfen Sie, ob die Installation erfolgreich war, indem Sie den folgenden Befehl ausführen:helm ls
Die Ausgabe sollte folgendermaßen aussehen:
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
Überprüfen Sie die Operator-Bereitstellung in Ihrem Namespace
-
Sie sollten in der Lage sein, die SageMaker benutzerdefinierten Ressourcendefinitionen (CRDs) für jeden Operator zu sehen, der in Ihrem Cluster bereitgestellt wird, indem Sie den folgenden Befehl ausführen:
kubectl get crd | grep sagemaker
Die Ausgabe sollte folgendermaßen aussehen:
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
-
Stellen Sie sicher, dass der Operator-Pod erfolgreich ausgeführt wird. Verwenden Sie den folgenden Befehl, um alle Pods aufzulisten:
kubectl -n my-namespace get pods
Sie sollten einen Pod mit dem Namen
sagemaker-k8s-operator-controller-manager-*****
im Namespacemy-namespace
wie folgt sehen:NAME READY STATUS RESTARTS AGE sagemaker-k8s-operator-controller-manager-12345678-r8abc 2/2 Running 0 23s
Installieren Sie das SageMaker kubectl
Logs-Plugin
Als Teil der SageMaker Operators for Kubernetes können Sie das smlogs
Pluginkubectl
Dadurch können SageMaker CloudWatch Logs mit gestreamt werden. kubectl
kubectl
muss auf Ihrem PATHsagemaker-k8s-bin
Verzeichnis in Ihrem Home-Verzeichnis und fügen dieses Verzeichnis Ihrem PATH
hinzu.
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
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob daskubectl
-Plugin korrekt installiert ist:
kubectl smlogs
Wenn das kubectl
-Plugin korrekt installiert ist, sollte Ihre Ausgabe wie folgt aussehen:
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.
Bereinigen von -Ressourcen
Um den Operator von Ihrem Cluster zu deinstallieren, müssen Sie zunächst sicherstellen, dass Sie alle SageMaker Ressourcen aus dem Cluster löschen. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab. Führen Sie die folgenden Befehle aus, um alle Aufträge zu stoppen:
# 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
Die Ausgabe sollte folgendermaßen oder ähnlich aussehen:
$ 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
Nachdem Sie alle SageMaker Jobs gelöscht haben, finden Sie weitere Informationen Operatoren löschen zum Löschen des Operators aus Ihrem Cluster.
Operatoren löschen
Löschen Sie clusterbasierte Operatoren
Operatoren, die installiert wurden mit YAML
Um den Operator aus Ihrem Cluster zu deinstallieren, stellen Sie sicher, dass alle SageMaker Ressourcen aus dem Cluster gelöscht wurden. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab.
Anmerkung
Stellen Sie vor dem Löschen Ihres Clusters sicher, dass Sie alle SageMaker Ressourcen aus dem Cluster löschen. Weitere Informationen finden Sie unter Bereinigen von -Ressourcen.
Nachdem Sie alle SageMaker Jobs gelöscht haben, verwenden Sie, kubectl
um den Operator aus dem Cluster zu löschen:
# Delete the operator and its resources kubectl delete -f /installer.yaml
Die Ausgabe sollte folgendermaßen oder ähnlich aussehen:
$ 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
Mithilfe von Helm Charts installierte Operatoren
Um den Operator zu löschenCRDs, löschen Sie zunächst alle laufenden Jobs. Löschen Sie dann das Helm-Diagramm, das für die Bereitstellung der Operatoren verwendet wurde, mithilfe der folgenden Befehle:
# get the helm charts helm ls # delete the charts helm delete
<chart_name>
Löschen Sie Namespace-basierte Operatoren
Operatoren, die installiert sind mit YAML
Um den Operator aus Ihrem Cluster zu deinstallieren, stellen Sie zunächst sicher, dass alle SageMaker Ressourcen aus dem Cluster gelöscht wurden. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab.
Anmerkung
Stellen Sie vor dem Löschen Ihres Clusters sicher, dass Sie alle SageMaker Ressourcen aus dem Cluster löschen. Weitere Informationen finden Sie unter Bereinigen von -Ressourcen.
Nachdem Sie alle SageMaker Jobs gelöscht haben, verwenden Sie, kubectl
um zuerst den Operator aus dem Namespace und dann CRDs aus dem Cluster zu löschen. Führen Sie die folgenden Befehle aus, um den Operator aus dem Cluster zu löschen:
# 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>
Operatoren, die mit Helm Charts installiert wurden
Um den Operator zu löschenCRDs, löschen Sie zunächst alle laufenden Jobs. Löschen Sie dann das Helm-Diagramm, das für die Bereitstellung der Operatoren verwendet wurde, mithilfe der folgenden Befehle:
# Delete the operator helm delete
<chart_name>
# delete the crds helm delete crds # optionally delete the namespace kubectl delete namespace<namespace>
Fehlerbehebung
Debuggen eines fehlgeschlagenen Jobs
Gehen Sie wie folgt vor, um einen fehlgeschlagenen Job zu debuggen.
-
Überprüfen Sie den Auftragsstatus, indem Sie Folgendes ausführen:
kubectl get
<CRD Type>
<job name>
-
Wenn der Job in erstellt wurde SageMaker, können Sie den folgenden Befehl verwenden, um das
STATUS
und das zu sehenSageMaker Job Name
:kubectl get
<crd type>
<job name>
-
Sie können
smlogs
verwenden, um die Ursache des Problems mit dem folgenden Befehl zu finden:kubectl smlogs
<crd type>
<job name>
-
Sie können den
describe
Befehl auch verwenden, um weitere Details zum Job mithilfe des folgenden Befehls anzuzeigen. Die Ausgabe enthält einadditional
Feld mit weiteren Informationen zum Status des Jobs.kubectl describe
<crd type>
<job name>
-
Wenn der Job nicht in erstellt wurde SageMaker, verwenden Sie die Protokolle des Pods des Operators, um die Ursache des Problems wie folgt zu ermitteln:
$ 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
Einen Operator löschen CRD
Wenn das Löschen eines Jobs nicht funktioniert, überprüfen Sie, ob der Operator läuft. Wenn der Operator nicht läuft, müssen Sie den Finalizer mit den folgenden Schritten löschen:
-
Öffnen Sie den Auftrag in einem neuen Terminal in einem Editor mit
kubectl edit
wie folgt:kubectl edit
<crd type>
<job name>
-
Bearbeiten Sie den Job, um den Finalizer zu löschen, indem Sie die folgenden zwei Zeilen aus der Datei entfernen. Speichern Sie die Datei und der Job wird gelöscht.
finalizers: - sagemaker-operator-finalizer
Bilder und SMlogs in jeder Region
In der folgenden Tabelle sind die verfügbaren Operator-Bilder für jede Region aufgeführt. SMLogs