将资源迁移到最新 Operator - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将资源迁移到最新 Operator

我们将停止对 SageMaker Operators for Kubernetes 的原始版本的开发和技术支持。

如果您当前正在使用 SageMaker Operators for Kubernetes 版本 v1.2.2 或更低版本,我们建议您将资源迁移到适用于 Amazon SageMaker 的 ACK 服务控制器。ACK 服务控制器是基于 Amazon Controllers for Kubernetes (ACK) 的新一代 SageMaker Operators for Kubernetes。

有关终止对 SageMaker Operators for Kubernetes 原始版本支持的常见问题解答,请参阅宣布终止对 SageMaker Operators for Kubernetes 原始版本的支持

使用以下步骤迁移您的资源,并使用 ACK 通过 Amazon SageMaker 训练、优化和部署机器学习模型。

注意

最新 SageMaker Operators for Kubernetes 不向后兼容。

先决条件

要成功将资源迁移到最新 SageMaker Operators for Kubernetes,您必须执行以下操作:

  1. 安装最新 SageMaker Operators for Kubernetes。有关分步说明,请参阅使用 ACK SageMaker 控制器进行机器学习中的设置

  2. 如果您使用的是 HostingAutoscalingPolicy 资源,请安装新的 Application Auto Scaling Operator。有关分步说明,请参阅使用 Application Auto Scaling 扩缩 SageMaker 工作负载中的设置。如果您使用的不是 HostingAutoScalingPolicy 资源,则此步骤是可选步骤。

如果权限配置正确,则 ACK SageMaker 服务控制器可以确定 Amazon 资源的规范和状态,并像 ACK 控制器最初创建资源一样对资源进行协调。

采用资源

全新 SageMaker Operators for Kubernetes 能够采用最初不是由 ACK 服务控制器创建的资源。有关更多信息,请参阅 ACK 文档中的采用现有 Amazon 资源

以下步骤展示了全新 SageMaker Operators for Kubernetes 如何采用现有 SageMaker 端点。将以下示例代码另存为名为 adopt-endpoint-sample.yaml 的文件。

apiVersion: services.k8s.aws/v1alpha1 kind: AdoptedResource metadata: name: adopt-endpoint-sample spec: aws: # resource to adopt, not created by ACK nameOrID: xgboost-endpoint kubernetes: group: sagemaker.services.k8s.aws kind: Endpoint metadata: # target K8s CR name name: xgboost-endpoint

使用 kubectl apply 提交自定义资源 (CR):

kubectl apply -f adopt-endpoint-sample.yaml

使用 kubectl describe 检查您采用的资源的状态条件。

kubectl describe adoptedresource adopt-endpoint-sample

验证 ACK.Adopted 条件是否为 True。该输出应该类似于以下示例:

--- kind: AdoptedResource metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}' creationTimestamp: '2021-04-27T02:49:14Z' finalizers: - finalizers.services.k8s.aws/AdoptedResource generation: 1 name: adopt-endpoint-sample namespace: default resourceVersion: '12669876' selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample" uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b spec: aws: nameOrID: xgboost-endpoint kubernetes: group: sagemaker.services.k8s.aws kind: Endpoint metadata: name: xgboost-endpoint status: conditions: - status: 'True' type: ACK.Adopted

检查您的资源是否存在于集群中:

kubectl describe endpoints.sagemaker xgboost-endpoint

HostingAutoscalingPolicy 资源

HostingAutoscalingPolicy (HAP) 资源由多个 Application Auto Scaling 资源组成:ScalableTargetScalingPolicy。在 ACK 中采用 HAP 资源时,请先安装 Application Auto Scaling controller 控制器。要采用 HAP 资源,您需要同时采用 ScalableTargetScalingPolicy 资源。您可以在 HostingAutoscalingPolicy 资源的状态 (status.ResourceIDList) 中找到这些资源的资源标识符。

HostingDeployment 资源

HostingDeployment 资源由多个 SageMaker 资源组成:EndpointEndpointConfig 和每个 Model。如果您在 ACK 中采用 SageMaker 端点,则需要分别采用 EndpointEndpointConfigModel。可在 HostingDeployment 资源的状态(status.endpointNamestatus.endpointConfigNamestatus.modelNames)中找到 EndpointEndpointConfigModel 名称。

有关所有支持的 SageMaker 资源的列表,请参阅 ACK API 参考

清理旧资源

在全新 SageMaker Operators for Kubernetes 采用您的资源后,您可以卸载旧 Operator 并清理旧资源。

步骤 1:卸载旧 Operator

要卸载旧 Operator,请参阅删除 Operator

警告

删除任何旧资源之前,请先卸载旧 Operator。

第 2 步:删除终结器并删除旧资源

警告

删除旧资源之前,请确保已卸载旧 Operator。

卸载旧 Operator 后,必须明确删除终结器才能删除旧 Operator 资源。以下示例脚本显示如何删除给定命名空间中由旧 Operator 管理的所有训练作业。新 Operator 采用其他资源后,您可以使用类似的模式删除这些资源。

注意

必须使用完整的资源名称才能获取资源。例如,使用 kubectl get trainingjobs.sagemaker.aws.amazon.com 而不是 kubectl get trainingjob

namespace=sagemaker_namespace training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name') for job in $training_jobs do echo "Deleting $job resource in $namespace namespace" kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace done

使用全新 SageMaker Operators for Kubernetes

有关使用全新 SageMaker Operators for Kubernetes 的深入指南,请参阅使用 SageMaker Operators for Kubernetes