

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# SageMaker 适用于 Kubernetes 的人工智能运算符
<a name="kubernetes-sagemaker-operators"></a>

SageMaker Kubernetes 的人工智能运算符使使用 Kubernetes 的开发人员和数据科学家可以更轻松地在 AI 中训练、调整和部署机器学习 (ML) 模型。 SageMaker 你可以在 Amazon El SageMaker astic Kubernetes Service（Amazon EKS）的 Kubernetes 集群上安装这些 AI 运算符，使用 Kubernetes API 和命令行 Kubernetes 工具（例如 SageMaker ）在本地创建人工智能任务。`kubectl`本指南介绍如何设置和使用运算符从 Kubernetes 集群在 SageMaker AI 上运行模型训练、超参数调整或推理（实时和批量）。本章中的过程和指南假设您熟悉 Kubernetes 及其基本命令。

**重要**  
我们将停止对 [Kubernetes SageMaker 操作](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)员的原始版本的开发和技术支持。  
如果您当前使用的是 [Kubernetes SageMaker 操作员版本`v1.2.2`或更](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)低版本，我们建议您将资源迁移到适用于 Amazon 的 [ACK 服务控制](https://github.com/aws-controllers-k8s/sagemaker-controller)器。 SageMakerACK 服务控制器是基于 Kubernetes 控制[Amazon 器 (ACK) 的新一代 Kuber](https://aws-controllers-k8s.github.io/community/) netes SageMaker 操作员。  
有关迁移步骤的信息，请参阅[将资源迁移到最新 Operator](kubernetes-sagemaker-operators-migrate.md)。  
有关终止对 Kubernetes SageMaker 操作员原始版本支持的常见问题解答，请参阅 [宣布终止对 Kubernetes SageMaker 人工智能运算符原始版本的支持](kubernetes-sagemaker-operators-eos-announcement.md)

**注意**  
使用这些 Operator 无需额外付费。您通过这些运营商使用的任何 SageMaker AI 资源都会产生费用。

## 什么是 Operator？
<a name="kubernetes-sagemaker-operators-overview"></a>

Kubernetes Operator 是代表 Kubernetes 用户管理应用程序的应用程序控制器。控制面板的控制器包括各种控制回路，它们侦听中央状态管理器 (ETCD)，以调节其所控制的应用程序的状态。此类应用程序的示例包括 [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) 和`[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)`。Operator 通常提供比原始 Kubernetes API 更高级别的抽象，使用户能够更轻松地部署和管理应用程序。要向 Kubernetes 添加新功能，开发人员可以通过创建**自定义资源**（包含其特定于应用程序或特定于域的逻辑和组件）来扩展 Kubernetes API。Kubernetes 中的 Operator 允许用户以原生方式调用这些自定义资源并自动执行关联的工作流。

### 适用于 Kubernetes 的 Amazon 控制器 (ACK) 是如何工作的？
<a name="kubernetes-sagemaker-operators-explained"></a>

Kubernetes SageMaker 的人工智能运算符允许你在 Kubernetes 集群中管理 SageMaker 人工智能中的作业。最新版本的 Kubernetes SageMaker 人工智能运算符基于适用于 Kubernetes 的 Amazon 控制器 (ACK)。ACK 包括一个通用控制器运行时、一个代码生成器和一组 Amazon 特定于服务的控制器，其中一个是 SageMaker AI 控制器。

下图说明了 ACK 的工作原理。

![基于 ACK 的 Kubernetes SageMaker 人工智能运算符解释道。](http://docs.amazonaws.cn/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


在这张图中，一个 Kubernetes 用户想要使用 Kubernetes AP SageMaker I 在 Kubernetes 集群内对 AI 运行模型训练。用户向发出调用`kubectl apply`，传入描述训练作业的 Kubernetes 自定义资源的文件。 SageMaker `kubectl apply`将这个名为清单的文件传递给在 Kubernetes 控制器节点中运行的 Kubernetes API 服务器（工作流程图中的步骤 *1*）。*Kubernetes API 服务器接收包含 SageMaker 训练作业规范的清单，并确定用户是否有权创建此类自定义资源`sageMaker.services.k8s.aws/TrainingJob`，以及自定义资源的格式是否正确（步骤 2）。*如果该用户已获授权且自定义资源有效，则 Kubernetes API 服务器会将自定义资源写入（步骤 *3*）其 etcd 数据存储，然后回复该用户（步骤 *4*），告知已创建自定义资源。在普通 Kubernetes Pod 环境下的 Kubernetes 工作节点上运行的 SageMaker AI 控制器会收到通知（步骤 *5*），告知已经创建了一个新的自定义资源。`sageMaker.services.k8s.aws/TrainingJob`然后， SageMaker AI 控制器与 SageMaker API 通信（步骤 *6*），调用 SageMaker AI `CreateTrainingJob` API 在中 Amazon创建训练作业。与 SageMaker API 通信后， SageMaker AI 控制器调用 Kubernetes API 服务器，使用从 AI 收到的信息更新自定义资源的状态（步骤 *7*）。 SageMaker 因此， SageMaker AI 控制器向开发人员提供的信息与他们使用 Amazon SDK 所获得的信息相同。

### 权限概述
<a name="kubernetes-sagemaker-operators-authentication"></a>

操作员代表您访问 SageMaker 人工智能资源。操作员扮演的与 Amazon 资源交互的 IAM 角色与您用于访问 Kubernetes 集群的证书不同。该角色也不同于运行机器学习作业时所 Amazon 扮演的角色。

下图说明了各种身份验证层。

![SageMaker 适用于 Kubernetes 的人工智能操作员各种身份验证层。](http://docs.amazonaws.cn/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)
