

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

# 在 Studio 中设置 Amazon EKS 集群
<a name="sagemaker-hyperpod-studio-setup-eks"></a>

以下说明介绍如何在 Studio 中设置 Amazon EKS 集群。

1. 创建一个域，或准备好一个已有的域。有关创建域的信息，请参阅 [亚马逊 A SageMaker I 入门指南](gs.md)。

1. 将以下权限添加到执行角色。

   有关 SageMaker AI 执行角色以及如何对其进行编辑的信息，请参阅[了解域空间权限和执行角色](execution-roles-and-spaces.md)。

   要了解如何将策略附加到 IAM 用户或组，请参阅[添加和移除 IAM 身份权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DescribeHyerpodClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeCluster"
               ],
               "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster-name"
           },
           {
               "Effect": "Allow",
               "Action": "ec2:Describe*",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:CompleteLayerUpload",
                   "ecr:GetAuthorizationToken",
                   "ecr:UploadLayerPart",
                   "ecr:InitiateLayerUpload",
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:PutImage"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
                   "Action": [
                       "cloudwatch:PutMetricData",
                       "cloudwatch:GetMetricData"
                       ],
               "Resource": "*"
           },
           {
               "Sid": "UseEksClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster",
                   "eks:AccessKubernetesApi",
                   "eks:DescribeAddon"
               ],
               "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/cluster-name"
           },
           {
               "Sid": "ListClustersPermission",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListClusters"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:StartSession",
                   "ssm:TerminateSession"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. [使用 EKS 访问条目向 IAM 用户授予 Kubernetes 访问权限](https://docs.amazonaws.cn/eks/latest/userguide/access-entries.html)。

   1. 导航到与您的集群关联的 Amazon EKS HyperPod 集群。

   1. 选择**访问**选项卡，然后所创建的执行角色[创建访问条目](https://docs.amazonaws.cn/eks/latest/userguide/creating-access-entries.html)。

      1. 在步骤 1 中，在 **IAM** 主体下拉列表中选择您在上面创建的执行角色。

      1. 在步骤 2 中，选择策略名称，并选择您希望用户有权访问的访问范围。

1. （可选）我们建议您向集群添加标签，以确保更加顺畅的体验。有关如何添加标签的信息，请参阅[编辑集 SageMaker HyperPod 群](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters)使用 SageMaker AI 控制台更新集群。

   1. 为 [Amazon Managed Grafana](https://docs.amazonaws.cn/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) 工作区添加标签，使其关联到 Studio 域。这将用于直接在 Studio 中从集群快速链接到 Grafana 工作区。为此，请向集群添加以下标签，以便使用 Grafana 工作区 ID `ws-id` 标识集群。

     标签键 =“`grafana-workspace`”，标签值 =“`ws-id`”。

1. （可选）[在 Studio 中限制 EKS 集群的任务视图](#sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view)。有关 Studio 中的可查看任务的信息，请参阅[任务](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks)。

## 在 Studio 中限制 EKS 集群的任务视图
<a name="sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view"></a>

您可以限制用户的 Kubernetes 命名空间权限，使他们仅有权查看属于指定命名空间的任务。下文介绍如何在 Studio 中限制 EKS 集群的任务视图。有关 Studio 中的可查看任务的信息，请参阅[任务](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks)。

默认情况下，用户将能看到所有 EKS 集群任务。您可以将用户对 EKS 集群任务的可见范围限制在指定的命名空间内，这样既能确保用户可访问他们所需的资源，又能保持严格的访问控制。完成以下设置后，您需要提供命名空间，以便用户查看该命名空间下的作业。

应用限制后，您需要为代入该角色的用户提供命名空间。仅在用户提供他们有权在**任务**选项卡中查看的输入命名空间后，Studio 才会显示命名空间的作业。

以下配置可让管理员向数据科学家授予特定的、有限的访问权限，以便其查看集群内的任务。此配置授予以下权限：
+ 列出并获取容器组（pod）
+ 列出并获取事件
+ 获取自定义资源定义 (CRDs)

YAML 配置

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pods-events-crd-cluster-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["events"]
  verbs: ["get", "list"]
- apiGroups: ["apiextensions.k8s.io"]
  resources: ["customresourcedefinitions"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pods-events-crd-cluster-role-binding
subjects:
- kind: Group
  name: pods-events-crd-cluster-level
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: pods-events-crd-cluster-role
  apiGroup: rbac.authorization.k8s.io
```

1. 将 YAML 配置保存到名为 `cluster-role.yaml` 的文件中。

1. 使用 [https://kubernetes.io/docs/reference/kubectl/](https://kubernetes.io/docs/reference/kubectl/) 应用配置：

   ```
   kubectl apply -f cluster-role.yaml
   ```

1. 验证配置：

   ```
   kubectl get clusterrole pods-events-crd-cluster-role
   kubectl get clusterrolebinding pods-events-crd-cluster-role-binding
   ```

1. 通过身份提供者或 IAM 将用户分配到 `pods-events-crd-cluster-level` 组。