

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

# 在 E SageMaker HyperPod KS 集群上使用 Amazon EBS CSI 驱动程序
<a name="sagemaker-hyperpod-eks-ebs"></a>

SageMaker HyperPod 支持 Amazon Elastic Block Store (Amazon EBS) 容器存储接口 (CSI) 驱动程序，该驱动程序管理亚马逊 EBS 卷的生命周期，将其作为您创建的 Kubernetes 卷的存储。借助 Amazon EBS CSI 驱动程序，您可以使用 Amazon EKS 编排为在 SageMaker HyperPod 集群上运行的机器学习工作负载创建、附加和管理您的 Amazon EBS 卷。

**Topics**
+ [密钥存储功能](#sagemaker-hyperpod-eks-ebs-features)
+ [使用案例](#sagemaker-hyperpod-eks-ebs-use)
+ [在 E SageMaker HyperPod KS 集群上设置 Amazon EBS CSI 驱动程序](#sagemaker-hyperpod-eks-ebs-setup)
+ [使用 APIs](#sagemaker-hyperpod-eks-ebs-setup-apis)

## 密钥存储功能
<a name="sagemaker-hyperpod-eks-ebs-features"></a>

上的 Amazon EBS CSI 驱动程序 SageMaker HyperPod 支持以下存储功能。
+ 静态预调配：将预先创建的 Amazon EBS 卷与 Kubernetes [持久性卷](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)关联起来，以便在容器组（pod）中使用。
+ 动态预调配：自动从 [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) 中创建 Amazon EBS 卷以及关联的持久性卷。可以通过 [https://kubernetes.io/docs/concepts/storage/storage-classes/](https://kubernetes.io/docs/concepts/storage/storage-classes/) 传递参数来精细控制卷创建过程。
+ 卷大小调整：通过更新 [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) 大小规格来扩展现有卷，而不中断正在运行的工作负载。这对于应对不断增长的模型存储库，或是在不中断服务的情况下适配更大规模的节点而言，可能至关重要。
+ 卷快照：创建卷的 point-in-time快照，用于备份、恢复和数据版本控制。
+ 块卷：为需要直接访问存储的高性能应用程序提供原始块设备访问权限。
+ 卷修改：使用[卷属性类](https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/)更改卷属性，例如类型、每秒进行读写操作的次数（IOPS）或吞吐量。

有关 Amazon EBS CSI 驱动程序的更多信息，请参阅《Amazon EKS 用户指南》**中的[将 Kubernetes 卷存储与 Amazon EBS 结合使用](https://docs.amazonaws.cn/eks/latest/userguide/ebs-csi.html)。

有关集群中容器组（pod）的存储的更多信息，请参阅 *Kubernetes 文档*中的[存储](https://kubernetes.io/docs/concepts/storage/)。

## 使用案例
<a name="sagemaker-hyperpod-eks-ebs-use"></a>

Amazon EBS CSI 驱动程序集成为 EKS 集群上的训练和推理工作负载提供了多个关键用例 SageMaker HyperPod 。

**训练工作负载**
+ 数据集存储：为训练数据集预调配卷，这些数据集在容器组（pod）重启后仍保留。
+ 检查点存储：保存模型检查点和训练中间结果
+ 共享构件：访问多个训练作业中的常用数据集和模型构件

**推理工作负载**
+ 模型存储：根据模型要求动态预调配大小合适的卷
+ 容器缓存：创建临时存储以提升推理性能
+ 事件日志记录：使用持久性存储来存储推理结果和日志

## 在 E SageMaker HyperPod KS 集群上设置 Amazon EBS CSI 驱动程序
<a name="sagemaker-hyperpod-eks-ebs-setup"></a>

Amazon Elastic Block Store (Amazon EBS) 容器存储接口 (CSI) 驱动程序允许您通过 EKS 编排为在集群上运行的容器化工作负载动态配置和管理 Amazon EBS 卷。 SageMaker HyperPod 此部分将演练如何安装和配置 Amazon EBS CSI 驱动程序，以便为机器学习工作负载启用持久性存储。

### 先决条件
<a name="sagemaker-hyperpod-eks-ebs-setup-prerequisite"></a>

开始之前，请执行以下操作：
+ [安装和配置 Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-getting-started.html)
+ [使用 Amazon EKS 编排创建 SageMaker HyperPod 集群](https://docs.amazonaws.cn/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html)
+ 安装 Amazon EBS CSI 驱动程序版本 [v1.47.0](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG.md#v1470)

### 其他权限
<a name="sagemaker-hyperpod-eks-ebs-setup-permissions"></a>

要设置 Amazon EBS CSI 驱动程序附加组件，请按照《Amazon EKS 用户指南》**中[将 Kubernetes 卷存储与 Amazon EBS 结合使用](https://docs.amazonaws.cn/eks/latest/userguide/ebs-csi.html)中的说明进行操作。您还应向用于运行驱动程序附加组件的 IAM 角色添加以下额外权限。请注意，这是在您的服务账户配置中为驱动程序插件指定的 IAM 角色，而不是 HyperPod 集群执行角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume",
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        }
    ]
}
```

------

## 使用 APIs
<a name="sagemaker-hyperpod-eks-ebs-setup-apis"></a>

或者，您可以使用[AttachClusterNodeVolume](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_AttachClusterNodeVolume.html)和 [DetachClusterNodeVolume](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_DetachClusterNodeVolume.html)API 操作将您的 Amazon EBS 卷附加和分离到 EKS 集群实 SageMaker HyperPod 例。

**使用它们的主要要求 APIs 包括以下内容。**
+ Amazon EBS 卷和 E SageMaker HyperPod KS 集群必须由同一个 Amazon Web Services 账户群集拥有。
+ 调用主体需要特定的最低权限才能成功执行附加或分离操作。有关最低权限的更多信息，请参阅以下各部分。
+ 将卷连接到节点后，请按照访问群集 HyperPod 节点[访问 SageMaker HyperPod 群集节点](https://docs.amazonaws.cn/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-access-through-terminal.html)中的说明进行操作，并按照[使卷可用于](https://docs.amazonaws.cn/ebs/latest/userguide/ebs-using-volumes.html)挂载连接的卷中的说明进行操作。

### `sagemaker:AttachClusterNodeVolume`所需的权限
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-attach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:AttachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*"
        }
    ]
}
```

------

### `sagemaker:DetachClusterNodeVolume`所需的权限
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-detach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:DetachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*"
        }
    ]
}
```

------

### Amazon KMS 密钥所需的权限
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-kms"></a>

只有当您使用客户托管的 KMS 密钥对连接到 HyperPod集群节点的 Amazon EBS 卷进行加密时，才需要添加以下 Amazon KMS 权限。如果您使用的是 Amazon托管 KMS 密钥（默认加密选项），则不需要这些权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-default-1",
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::111122223333:role/caller-role"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::111122223333:role/caller-role"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition":
            {
                "StringEquals":
                {
                    "kms:CallerAccount": "111122223333",
                    "kms:ViaService": "ec2.us-east-1.amazonaws.com"
                },
                "ForAnyValue:StringEquals":
                {
                    "kms:EncryptionContextKeys": "aws:ebs:id"
                },
                "Bool":
                {
                    "kms:GrantIsForAWSResource": true
                },
                "ForAllValues:StringEquals":
                {
                    "kms:GrantOperations":
                    [
                        "Decrypt"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
分离使用客户托管 KMS 密钥加密的集群自动卷附件 (CAVA) 卷`sagemaker:DetachClusterNodeVolume`时，不需要这些 Amazon KMS 权限。