Alte SageMaker Operatoren für Kubernetes - Amazon SageMaker

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 Kubernetes.

Wichtig

Wir stellen die Entwicklung und den technischen Support der Originalversion von SageMaker Operators for Kubernetes ein.

Wenn Sie derzeit eine Version v1.2.2 oder eine niedrigere Version von SageMaker Operators for Kubernetes verwenden, empfehlen wir, Ihre Ressourcen auf den ACKService Controller für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf AWS Controllers for Kubernetes () basieren. ACK

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

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

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 eine kubectl Version, die sich in einer Nebenversion Ihrer EKS Amazon-Cluster-Steuerebene befindet. Ein 1.13 kubectl-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

    • aws-iam-authenticator

  • 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 eksctleksctl. 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.

  1. Legen Sie die lokalen Variablen CLUSTER_NAME und die AWS_REGION-Umgebungsvariablen wie folgt fest:

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 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
  1. 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" } } } ] }
  2. 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=text

    Die 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 AmazonSageMakerFullAccessRichtlinie an. Wenn Sie die Berechtigungen auf den Operator beschränken möchten, können Sie Ihre eigene benutzerdefinierte Richtlinie erstellen und diese anhängen.

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:

  1. 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
  2. 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.

  3. 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.

  1. Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Navigieren Sie zum Verzeichnis amazon-sagemaker-operator-for-k8s/hack/charts/installer. Bearbeiten Sie die rolebased/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.

  3. 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.

  4. 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
  1. 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
  2. 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 Namespace sagemaker-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.

  1. Legen Sie die lokalen Variablen CLUSTER_NAME und die AWS_REGION-Umgebungsvariablen wie folgt fest:

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 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
  1. 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 Handbuchs my-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" } } } ] }
  2. 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=text

    Die 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 AmazonSageMakerFullAccessRichtlinie bei. Wenn Sie die Berechtigungen auf den Operator beschränken möchten, können Sie Ihre eigene benutzerdefinierte Richtlinie erstellen und diese anhängen.

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:

  1. 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
  2. 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
  3. Bearbeiten Sie die operator.yaml Datei, um Ressourcen in Ihrem eks.amazonaws.com/role-arn zu platzieren. Ersetzen Sie ARN hier durch den Amazon-Ressourcennamen (ARN) für die von Ihnen erstellte OIDC basierte Rolle.

  4. 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.

  1. Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Navigieren Sie zum Verzeichnis amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced. Bearbeiten Sie die rolebased/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.

  3. Installieren Sie das Helm Chart mit dem folgenden Befehl:

    helm install crds crd_chart/
  4. 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/
  5. 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
  1. 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
  2. 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 Namespace my-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 Plugin für verwenden. kubectl Dadurch können SageMaker CloudWatch Logs mit gestreamt werden. kubectl kubectlmuss auf Ihrem PATHinstalliert sein. Die folgenden Befehle platzieren die Binärdatei in dem sagemaker-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 ein additional 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:

  1. Öffnen Sie den Auftrag in einem neuen Terminal in einem Editor mit kubectl edit wie folgt:

    kubectl edit <crd type> <job name>
  2. 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

Region Controller-Bild 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