

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EKS 上建立 GPU 型Kubernetes叢集
<a name="create-gpu-cluster-eks"></a>

在 Amazon EKS 上建立 GPU 型Kubernetes叢集之前，您必須先完成 中的步驟[在 Amazon EKS AWS Batch 上開始使用](getting-started-eks.md)。此外，也請考慮下列事項：
+ AWS Batch 支援使用 NVIDIA GPUs 的執行個體類型。
+ 根據預設， 會 AWS Batch 選取版本符合您 Amazon EKS 叢集控制平面Kubernetes版本的 Amazon EKS 加速 AMI。

```
$ cat <<EOF > ./batch-eks-gpu-ce.json
{
  "computeEnvironmentName": "My-Eks-GPU-CE1",
  "type": "MANAGED",
  "state": "ENABLED",
  "eksConfiguration": {
    "eksClusterArn": "arn:aws:eks:<region>:<account>:cluster/<cluster-name>",
    "kubernetesNamespace": "my-aws-batch-namespace"
  },
  "computeResources": {
    "type": "EC2",
    "allocationStrategy": "BEST_FIT_PROGRESSIVE",
    "minvCpus": 0,
    "maxvCpus": 1024,
    "instanceTypes": [
      "p3dn.24xlarge",
      "p4d.24xlarge"
    ],
    "subnets": [
        "<eks-cluster-subnets-with-access-to-internet-for-image-pull>"
    ],
    "securityGroupIds": [
        "<eks-cluster-sg>"
    ],
    "instanceRole": "<eks-instance-profile>"
  }
}
EOF

$ aws batch create-compute-environment --cli-input-json file://./batch-eks-gpu-ce.json
```

AWS Batch 不會代表您管理 NVIDIA GPU 裝置外掛程式。您必須將此外掛程式安裝到您的 Amazon EKS 叢集，並允許它以 AWS Batch 節點為目標。如需詳細資訊，請參閱在 GitHub 上[啟用 中的 GPU 支援Kubernetes](https://github.com/NVIDIA/k8s-device-plugin#enabling-gpu-support-in-kubernetes)。

若要設定NVIDIA裝置外掛程式 (`DaemonSet`) 以鎖定 AWS Batch 節點，請執行下列命令。

```
# pull nvidia daemonset spec
$ curl -O https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.12.2/nvidia-device-plugin.yml
# using your favorite editor, add Batch node toleration
# this will allow the DaemonSet to run on Batch nodes
- key: "batch.amazonaws.com/batch-node"
  operator: "Exists"

$ kubectl apply -f nvidia-device-plugin.yml
```

我們不建議您在相同的運算環境和任務佇列配對中，將運算型 (CPU 和記憶體） 工作負載與 GPU 型工作負載混合。這是因為運算任務可能會用盡 GPU 容量。

若要連接任務佇列，請執行下列命令。

```
$ cat <<EOF > ./batch-eks-gpu-jq.json
 {
    "jobQueueName": "My-Eks-GPU-JQ1",
    "priority": 10,
    "computeEnvironmentOrder": [
      {
        "order": 1,
        "computeEnvironment": "My-Eks-GPU-CE1"
      }
    ]
  }
EOF

$ aws batch create-job-queue --cli-input-json file://./batch-eks-gpu-jq.json
```