구 SageMaker 쿠버네티스 오퍼레이터 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

구 SageMaker 쿠버네티스 오퍼레이터

이 섹션은 쿠버네티스용 SageMaker 오퍼레이터의 원본 버전을 기반으로 합니다.

중요

오리지널 버전의 SageMaker Operators for Kubernetes에 대한 개발 및 기술 지원을 중단합니다.

현재 Kubernetes용 SageMaker Operators 버전 v1.2.2 이하를 사용하고 있다면 Amazon용 ACK 서비스 컨트롤러로 리소스를 마이그레이션하는 것이 좋습니다. SageMaker ACK 서비스 컨트롤러는 쿠버네티스용 컨트롤러 (ACK) 를 기반으로AWS 하는 차세대 쿠버네티스 SageMaker 오퍼레이터입니다.

마이그레이션 단계에 대한 자세한 내용은 리소스를 최신 연산자로 마이그레이션섹션을 참조하세요.

Operators for Kubernetes 오리지널 버전의 지원 종료와 관련된 자주 묻는 질문에 대한 답변은 을 참조하십시오. SageMaker 쿠버네티스용 SageMaker 오퍼레이터 오리지널 버전 지원 종료 발표

쿠버네티스용 오퍼레이터 설치 SageMaker

다음 단계를 사용하여 Kubernetes SageMaker Operators for Kubernetes를 설치하고 사용하여 Amazon에서 기계 학습 모델을 교육, 조정 및 배포할 수 있습니다. SageMaker

IAM 역할 기반 설정 및 연산자 배포

다음 섹션에서는 연산자의 원본 버전을 설정하고 배포하는 단계를 설명합니다.

주의

알림: 다음 단계는 최신 버전의 SageMaker Operators for Kubernetes를 설치하지 않습니다. 새로운 ACK 기반 쿠버네티스용 SageMaker 오퍼레이터를 설치하려면 을 참조하십시오. 쿠버네티스 최신 SageMaker 오퍼레이터

사전 조건 

이 가이드에서는 다음 사전 조건이 충족되었다고 가정합니다.

  • Kubernetes 클러스터에 접근하는 데 사용되는 클라이언트 머신에 다음 도구를 설치합니다.

    • kubectl 버전 1.13 이상. Amazon EKS 클러스터 제어 영역과 마이너 버전이 하나 다른 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을 사용한 자동 클러스터 생성에 대해서는 eksctl 시작하기를 참조하세요. 클러스터를 프로비저닝하는 데 20-30분 정도 걸립니다.

클러스터 범위 배포

IAM 역할을 사용하여 연산자를 배포하려면 먼저 OpenID Connect(OIDC) ID 공급자(IdP)를 역할과 연결하여 IAM 서비스로 인증합니다.

클러스터에 대한 OIDC 공급자 생성

다음 지침은 OIDC 공급자를 생성하여 Amazon EKS 클러스터와 연결하는 방법을 보여줍니다.

  1. 다음과 같이 로컬 CLUSTER_NAMEAWS_REGION환경 변수를 설정합니다.

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 다음 명령을 사용하여 OIDC 공급자를 클러스터에 연결합니다. 자세한 내용은 클러스터의 서비스 계정에 대한 IAM 역할 활성화를 참조하세요.

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve

    출력은 다음과 같아야 합니다.

    [_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"

이제 클러스터에 OIDC ID 공급자가 있으므로 역할을 생성하고 ServiceAccount Kubernetes에 역할을 수임할 권한을 부여할 수 있습니다.

OIDC ID를 가져옵니다.

설정하려면 다음 ServiceAccount 명령을 사용하여 OIDC 발급자 URL을 가져오십시오.

aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text

명령은 다음과 같은 URL을 반환합니다.

https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID

이 URL에서 값 D48675832CA65BD10A532F597OIDCID는 OIDC ID입니다. 클러스터의 OIDC ID는 다릅니다. 역할을 만들려면 이 OIDC ID 값이 필요합니다.

출력이 None인 경우 클라이언트 버전이 오래된 것입니다. 이 문제를 해결하려면 다음 명령을 실행합니다.

aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC

OIDC URL은 다음과 같이 반환됩니다.

OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
IAM 역할 생성
  1. trust.json 파일을 만들고 이 파일에 다음 신뢰 관계 코드 블록을 삽입합니다. <OIDC ID>, <AWS account number>, <EKS Cluster region>자리 표시자를 모두 클러스터에 해당하는 값으로 바꿔야 합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<AWS account number>:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com", "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default" } } } ] }
  2. trust.json에 정의된 신뢰 관계를 사용하여 역할을 생성하려면 다음 명령을 실행합니다. 이 역할을 통해 Amazon EKS 클러스터는 IAM으로부터 자격 증명을 가져오고 새로 고칠 수 있습니다.

    aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text

    출력은 다음과 같아야 합니다.

    ROLE arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z / ABCDEFSFODNN7EXAMPLE my-role ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS sts.amazonaws.com system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default PRINCIPAL arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/

    연산자에 전달하는 값인 ROLE ARN을 기록합니다.

AmazonSageMakerFullAccess 정책을 역할에 연결합니다.

역할에 액세스 권한을 SageMaker 부여하려면 AmazonSageMakerFullAccess정책을 연결하세요. 연산자에게만 권한을 제한하려는 경우 고유한 사용자 지정 정책을 생성하여 연결할 수 있습니다.

AmazonSageMakerFullAccess를 연결하려면 다음 명령을 실행합니다.

aws iam attach-role-policy --role-name <role name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess

쿠버네티스에는 권한이 ServiceAccount sagemaker-k8s-operator-default 있어야 합니다. AmazonSageMakerFullAccess 연산자를 설치할 때 이를 확인합니다.

연산자 배포

연산자를 배포할 때 YAML 파일 또는 Helm 차트를 사용할 수 있습니다.

YAML을 사용하여 연산자 배포

이는 연산자를 배포하는 가장 간단한 방법입니다. 프로세스는 다음과 같습니다.

  1. 다음 명령을 사용하여 설치 관리자 스크립트를 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
  2. installer.yaml 파일을 편집하여 eks.amazonaws.com/role-arn을 교체합니다. 여기서 ARN을 생성한 OIDC 기반 역할의 Amazon 리소스 이름(ARN)으로 바꿉니다.

  3. 다음 명령을 사용하여 클러스터를 배포합니다.

    kubectl apply -f installer.yaml
Helm 차트를 사용하여 연산자를 배포합니다.

제공된 Helm 차트를 사용하여 연산자를 설치합니다.

  1. 다음 명령을 사용하여 Helm 설치 관리자 디렉터리를 복제합니다.

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. amazon-sagemaker-operator-for-k8s/hack/charts/installer 폴더로 이동합니다. 차트의 상위 수준 파라미터가 포함된 rolebased/values.yaml파일을 편집합니다. 여기서 역할 ARN을 생성한 OIDC 기반 역할의 Amazon 리소스 이름(ARN)으로 바꿉니다.

  3. 다음 명령을 사용하여 Helm 차트를 설치합니다.

    kubectl create namespace sagemaker-k8s-operator-system helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/

    지정된 네임스페이스가 아닌 다른 네임스페이스에 연산자를 설치하려면 IAM 역할 trust.json파일에 정의된 네임스페이스를 일치하도록 조정해야 합니다.

  4. 잠시 후 차트가 임의로 생성된 이름으로 설치됩니다. 다음 명령을 실행하여 성공적으로 설치되었는지 확인합니다.

    helm ls

    출력은 다음과 같아야 합니다.

    NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION sagemaker-operator sagemaker-k8s-operator-system 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
연산자 배포 확인
  1. 다음 명령을 실행하여 클러스터에 배포된 각 운영자의 SageMaker 사용자 지정 리소스 정의 (CRD) 를 볼 수 있어야 합니다.

    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-system에 이름이 sagemaker-k8s-operator-controller-manager-*****라고 지정된 포드가 표시되어야 합니다.

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

네임스페이스 범위 배포

개별 Kubernetes 네임스페이스 범위 내에 연산자를 설치할 수 있습니다. 이 모드에서 컨트롤러는 리소스가 해당 네임스페이스 내에 SageMaker 생성되었는지 여부만 모니터링하고 조정합니다. 이를 통해 어떤 컨트롤러가 어떤 리소스를 관리하는지 세밀하게 제어할 수 있습니다. 이는 여러 AWS 계정에 배포하거나 특정 작업에 액세스할 수 있는 사용자를 제어하는 데 유용합니다.

이 가이드에서는 미리 정의된 특정 네임스페이스에 연산자를 설치하는 방법을 설명합니다. 컨트롤러를 두 번째 네임스페이스에 배포하려면 가이드를 처음부터 끝까지 따르고 각 단계에서 네임스페이스를 변경합니다.

Amazon EKS 클러스터에 대한 OIDC 공급자 생성

다음 지침은 OIDC 공급자를 생성하여 Amazon EKS 클러스터와 연결하는 방법을 보여줍니다.

  1. 다음과 같이 로컬 CLUSTER_NAMEAWS_REGION환경 변수를 설정합니다.

    # Set the Region and cluster export CLUSTER_NAME="<your cluster name>" export AWS_REGION="<your region>"
  2. 다음 명령을 사용하여 OIDC 공급자를 클러스터에 연결합니다. 자세한 내용은 클러스터의 서비스 계정에 대한 IAM 역할 활성화를 참조하세요.

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${AWS_REGION} --approve

    출력은 다음과 같아야 합니다.

    [_] eksctl version 0.10.1 [_] using region us-east-1 [_] IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"

이제 클러스터에 OIDC ID 공급자가 있으므로 역할을 생성하고 ServiceAccount Kubernetes에 역할을 수임할 권한을 부여하십시오.

OIDC ID를 가져옵니다.

를 설정하려면 먼저 다음 ServiceAccount 명령을 사용하여 OpenID Connect 발급자 URL을 확인하십시오.

aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \ --query cluster.identity.oidc.issuer --output text

명령은 다음과 같은 URL을 반환합니다.

https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID

이 URL에서 값 D48675832CA65BD10A532F597OIDCID는 OIDC ID입니다. 클러스터의 OIDC ID는 다릅니다. 역할을 만들려면 이 OIDC ID 값이 필요합니다.

출력이 None인 경우 클라이언트 버전이 오래된 것입니다. 이 문제를 해결하려면 다음 명령을 실행합니다.

aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC

OIDC URL은 다음과 같이 반환됩니다.

OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
IAM 역할 생성
  1. trust.json 파일을 만들고 이 파일에 다음 신뢰 관계 코드 블록을 삽입합니다. <OIDC ID>, <AWS account number>, <EKS Cluster region>, <Namespace> 자리 표시자를 모두 클러스터에 해당하는 값으로 바꿔야 합니다. 이 가이드의 목적상 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" } } } ] }
  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

쿠버네티스에는 권한이 ServiceAccount sagemaker-k8s-operator-default 있어야 합니다. AmazonSageMakerFullAccess 연산자를 설치할 때 이를 확인합니다.

네임스페이스에 연산자를 배포합니다.

연산자를 배포할 때 YAML 파일 또는 Helm 차트를 사용할 수 있습니다.

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

클러스터에 연산자를 설치하려면:

  1. 다음 명령을 사용하여 연산자 설치 관리자 YAML을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
  2. 다음 명령을 사용하여 설치 관리자 YAML을 업데이트하여 리소스를 지정된 네임스페이스에 배치합니다.

    sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
  3. operator.yaml 파일을 편집하여 리소스를 eks.amazonaws.com/role-arn에 배치합니다. 여기서 ARN을 생성한 OIDC 기반 역할의 Amazon 리소스 이름(ARN)으로 바꿉니다.

  4. 다음 명령을 사용하여 클러스터를 배포합니다.

    kubectl apply -f operator.yaml
Helm 차트를 사용하여 네임스페이스에 연산자를 배포합니다.

네임스페이스 범위 내에 연산자를 배포하는 데에는 두 부분이 필요합니다. 첫 번째는 클러스터 수준에서 설치되는 CRD 세트입니다. 이러한 리소스 정의는 Kubernetes 클러스터당 한 번만 설치하면 됩니다. 두 번째 부분은 연산자 권한 및 배포 자체입니다. 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 사용자 지정 리소스 정의 (CRD) 를 볼 수 있어야 합니다.

    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-namespace에 이름이 sagemaker-k8s-operator-controller-manager-*****라고 지정된 포드가 표시되어야 합니다.

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

SageMaker 로그 kubectl 플러그인 설치

Kubernetes SageMaker Operators의 일부로 플러그인을 다음과 같이 사용할 수 있습니다. smlogs kubectl 이를 통해 SageMaker CloudWatch 로그를 스트리밍할 수 있습니다. kubectl kubectlPATH에 설치해야 합니다. 다음 명령은 바이너리를 홈 디렉터리의 sagemaker-k8s-bin디렉터리에 배치하고 해당 디렉터리를 PATH에 추가합니다.

export os="linux" wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz tar xvzf ${os}.amd64.tar.gz # Move binaries to a directory in your homedir. mkdir ~/sagemaker-k8s-bin cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/. # This line adds the binaries to your PATH in your .bashrc. echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc # Source your .bashrc to update environment variables: source ~/.bashrc

다음 명령을 사용하여 kubectl플러그인이 올바르게 설치되어 있는지 확인합니다.

kubectl smlogs

kubectl 플러그인이 올바르게 설치된 경우 출력은 다음과 같아야 합니다.

View SageMaker logs via Kubernetes Usage: smlogs [command] Aliases: smlogs, SMLogs, Smlogs Available Commands: BatchTransformJob View BatchTransformJob logs via Kubernetes TrainingJob View TrainingJob logs via Kubernetes help Help about any command Flags: -h, --help help for smlogs Use "smlogs [command] --help" for more information about a command.

리소스 정리

클러스터에서 운영자를 제거하려면 먼저 클러스터에서 모든 SageMaker 리소스를 삭제해야 합니다. 그렇지 않으면 연산자 삭제 작업이 정지됩니다. 모든 작업을 중지하려면 다음 명령을 실행합니다.

# Delete all SageMaker jobs from Kubernetes kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com

다음과 유사한 출력 화면이 표시되어야 합니다.

$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted $ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted $ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted $ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted

모든 SageMaker 작업을 삭제한 후 클러스터에서 운영자를 연산자 삭제 삭제하려면 을 참조하십시오.

연산자 삭제

클러스터 기반 연산자 삭제

YAML을 사용하여 설치한 연산자

클러스터에서 운영자를 제거하려면 클러스터에서 모든 SageMaker 리소스가 삭제되었는지 확인하십시오. 그렇지 않으면 연산자 삭제 작업이 정지됩니다.

참고

클러스터를 삭제하기 전에 클러스터에서 모든 SageMaker 리소스를 삭제해야 합니다. 자세한 정보는 리소스 정리을 참조하세요.

모든 SageMaker 작업을 삭제한 후에는 kubectl 를 사용하여 클러스터에서 운영자를 삭제하십시오.

# Delete the operator and its resources kubectl delete -f /installer.yaml

다음과 유사한 출력 화면이 표시되어야 합니다.

$ kubectl delete -f raw-yaml/installer.yaml namespace "sagemaker-k8s-operator-system" deleted customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted deployment.apps "sagemaker-k8s-operator-controller-manager" deleted secrets "sagemaker-k8s-operator-abcde" deleted
Helm 차트를 사용하여 설치한 연산자

연산자 CRD를 삭제하려면 먼저 실행 중인 모든 작업을 삭제합니다. 그리고 다음 명령을 사용하여 연산자를 배포하는 데 사용된 Helm 차트를 삭제합니다.

# get the helm charts helm ls # delete the charts helm delete <chart_name>

네임스페이스 기반 연산자를 삭제합니다.

YAML로 설치한 연산자

클러스터에서 운영자를 제거하려면 먼저 클러스터에서 모든 SageMaker 리소스가 삭제되었는지 확인하십시오. 그렇지 않으면 연산자 삭제 작업이 정지됩니다.

참고

클러스터를 삭제하기 전에 클러스터에서 모든 SageMaker 리소스를 삭제해야 합니다. 자세한 정보는 리소스 정리을 참조하세요.

모든 SageMaker 작업을 삭제한 후에는 kubectl 를 사용하여 먼저 네임스페이스에서 운영자를 삭제한 다음 클러스터에서 CRD를 삭제합니다. 다음 명령을 실행하여 클러스터에서 연산자를 삭제합니다.

# Delete the operator using the same yaml file that was used to install the operator kubectl delete -f operator.yaml # Now delete the CRDs using the CRD installer yaml kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml # Now you can delete the namespace if you want kubectl delete namespace <namespace>
Helm 차트로 설치된 연산자

연산자 CRD를 삭제하려면 먼저 실행 중인 모든 작업을 삭제합니다. 그리고 다음 명령을 사용하여 연산자를 배포하는 데 사용된 Helm 차트를 삭제합니다.

# Delete the operator helm delete <chart_name> # delete the crds helm delete crds # optionally delete the namespace kubectl delete namespace <namespace>

문제 해결

실패한 작업 디버깅

다음 단계를 사용하여 실패한 작업을 디버깅할 수 있습니다.

  • 다음을 실행하여 작업 상태를 확인할 수 있습니다.

    kubectl get <CRD Type> <job name>
  • 에서 SageMaker 작업을 생성한 경우 다음 명령을 사용하여 및 항목을 확인할 수 있습니다. STATUS SageMaker Job Name

    kubectl get <crd type> <job name>
  • smlogs를 통해 다음 명령을 사용하여 문제의 원인을 찾을 수 있습니다.

    kubectl smlogs <crd type> <job name>
  • describe 명령을 통해 다음 명령을 사용하여 작업에 대한 세부 정보를 볼 수도 있습니다. 출력에는 작업 상태에 대한 자세한 정보가 있는 additional필드가 있습니다.

    kubectl describe <crd type> <job name>
  • 에서 SageMaker 작업이 생성되지 않은 경우 운영자 포드의 로그를 사용하여 다음과 같이 문제의 원인을 찾아보십시오.

    $ kubectl get pods -A | grep sagemaker # Output: sagemaker-k8s-operator-system sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z 2/2 Running 0 3h33m $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system

연산자 CRD 삭제

작업 삭제가 작동하지 않는 경우 연산자가 실행 중인지 확인합니다. 연산자가 실행 중이 아닌 경우 다음 단계를 사용하여 파이널라이저를 삭제해야 합니다.

  1. 새 터미널에서 다음과 같이 kubectl edit을 사용하는 편집기에서 작업을 엽니다.

    kubectl edit <crd type> <job name>
  2. 파일에서 다음 두 줄을 제거하여 파이널라이저를 삭제하도록 작업을 편집합니다. 파일을 저장하면 작업이 삭제됩니다.

    finalizers: - sagemaker-operator-finalizer

각 리전의 이미지 및 SMlog

다음 표에는 각 리전에서 사용 가능한 연산자 이미지와 SMLog가 나열되어 있습니다.

리전 컨트롤러 이미지 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 -k8 s-us-east -1/ /v1/linux.amd64.tar.gz kubectl-smlogs-plugin
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 -k8 -2/ /v1/linux.amd64.tar.gz s-us-east kubectl-smlogs-plugin
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 -k8 -2/ /v1/linux.amd64.tar.gz s-us-west kubectl-smlogs-plugin
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 -k8 s-eu-west -1/ /v1/linux.amd64.tar.gz kubectl-smlogs-plugin