

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

# Amazon EKS 任務
<a name="eks-jobs"></a>

任務是在其中工作的最小單位 AWS Batch。Amazon EKS 上的 AWS Batch 任務具有 one-to-one映射。 Kubernetes AWS Batch 任務定義是 AWS Batch 任務的範本。當您提交 AWS Batch 任務時，您可以參考任務定義、將任務佇列設為目標，並提供任務的名稱。在 Amazon EKS AWS Batch 任務的任務定義中，[eksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksProperties.html) 參數會定義 Amazon EKS 任務 AWS Batch 上 支援的一組參數。在 [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) 請求中，[eksPropertiesOverride](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPropertiesOverride.html) 參數允許覆寫某些常見參數。如此一來，您就可以針對多個任務使用任務定義的範本。當任務分派到您的 Amazon EKS 叢集時， 會將任務 AWS Batch 轉換為 `podspec`(`Kind: Pod`)。`podspec` 使用一些額外的 AWS Batch 參數來確保任務已正確擴展和排程。 AWS Batch 會結合標籤和污點，以確保任務僅在 AWS Batch 受管節點上執行，而且其他 Pod 不會在這些節點上執行。

**重要**  
如果未在 Amazon EKS 任務定義中明確設定 `hostNetwork` 參數，則 中的 Pod 聯網模式 AWS Batch 預設為主機模式。具體而言，會套用下列設定： `hostNetwork=true`和 `dnsPolicy=ClusterFirstWithHostNet`。
AWS Batch 在 Pod 完成其任務後， 會立即清除任務 Pod。若要查看 Pod 應用程式日誌，請為您的叢集設定記錄服務。如需詳細資訊，請參閱[使用 CloudWatch Logs AWS Batch 監控 Amazon EKS 任務](batch-eks-cloudwatch-logs.md)。

**Topics**
+ [教學課程：將執行中的任務映射至 Pod 和節點](eks-jobs-map-running-job.md)
+ [教學課程：將執行中的 Pod 映射回其任務](eks-jobs-map-running-pod-to-job.md)

# 教學課程：將執行中的任務映射至 Pod 和節點
<a name="eks-jobs-map-running-job"></a>

執行中任務`podProperties`的 已為目前的任務嘗試設定 `podName`和 `nodeName` 參數。使用 [DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html) API 操作來檢視這些參數。

以下為範例輸出。

```
$ aws batch describe-jobs --job 2d044787-c663-4ce6-a6fe-f2baf7e51b04
{
 "jobs": [
  {
   "status": "RUNNING",
   "jobArn": "arn:aws:batch:us-east-1:123456789012:job/2d044787-c663-4ce6-a6fe-f2baf7e51b04",
   "jobDefinition": "arn:aws:batch:us-east-1:123456789012:job-definition/MyJobOnEks_SleepWithRequestsOnly:1",
   "jobQueue": "arn:aws:batch:us-east-1:123456789012:job-queue/My-Eks-JQ1",
   "jobId": "2d044787-c663-4ce6-a6fe-f2baf7e51b04",
   "eksProperties": {
    "podProperties": {
     "nodeName": "ip-192-168-55-175.ec2.internal",
     "containers": [
      {
       "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
       "resources": {
        "requests": {
         "cpu": "1",
         "memory": "1024Mi"
        }
       }
      }
     ],
     "podName": "aws-batch.b0aca953-ba8f-3791-83e2-ed13af39428c"
    }
   }
  }
 ]
}
```

對於啟用重試的任務，每次完成嘗試`nodeName`的 `podName`和 都在 [DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html) API 操作的`eksAttempts`清單參數中。目前執行中嘗試`nodeName`的 `podName`和 位於 `podProperties` 物件中。

# 教學課程：將執行中的 Pod 映射回其任務
<a name="eks-jobs-map-running-pod-to-job"></a>

Pod 的標籤會指出其所屬運算環境`uuid`的 `jobId`和 。 會 AWS Batch 注入環境變數，讓任務的執行時間可以參考任務資訊。如需詳細資訊，請參閱[AWS Batch 任務環境變數](job_env_vars.md)。您可以執行下列命令來檢視此資訊。輸出如下。

```
$ kubectl describe pod aws-batch.14638eb9-d218-372d-ba5c-1c9ab9c7f2a1 -n my-aws-batch-namespace
Name:         aws-batch.14638eb9-d218-372d-ba5c-1c9ab9c7f2a1
Namespace:    my-aws-batch-namespace
Priority:     0
Node:         ip-192-168-45-88.ec2.internal/192.168.45.88
Start Time:   Wed, 26 Oct 2022 00:30:48 +0000
Labels:       batch.amazonaws.com/compute-environment-uuid=5c19160b-d450-31c9-8454-86cf5b30548f
              batch.amazonaws.com/job-id=f980f2cf-6309-4c77-a2b2-d83fbba0e9f0
              batch.amazonaws.com/node-uid=a4be5c1d-9881-4524-b967-587789094647
...
Status:       Running
IP:           192.168.45.88
IPs:
  IP:  192.168.45.88
Containers:
  default:
    Image:         public.ecr.aws/amazonlinux/amazonlinux:2
    ...
    Environment:
      AWS_BATCH_JOB_KUBERNETES_NODE_UID:  a4be5c1d-9881-4524-b967-587789094647
      AWS_BATCH_JOB_ID:                   f980f2cf-6309-4c77-a2b2-d83fbba0e9f0
      AWS_BATCH_JQ_NAME:                  My-Eks-JQ1
      AWS_BATCH_JOB_ATTEMPT:              1
      AWS_BATCH_CE_NAME:                  My-Eks-CE1

...
```

**Amazon AWS Batch EKS 任務支援的功能**

以下是在 Amazon EKS 上執行Kubernetes的任務也常見的 AWS Batch 特定功能：
+ [任務相依性](job_dependencies.md)
+ [陣列任務](array_jobs.md)
+ [任務逾時](job_timeouts.md)
+ [自動化任務重試](job_retries.md)
+ [使用公平共用排程來協助排程任務](fair-share-scheduling.md)

**Kubernetes 與 `Secrets``ServiceAccounts`**  
AWS Batch 支援參考 Kubernetes`Secrets`和 `ServiceAccounts`。您可以設定 Pod 為服務帳戶使用 Amazon EKS IAM 角色。如需詳細資訊，請參閱《[https://docs.aws.amazon.com/eks/latest/userguide/](https://docs.aws.amazon.com/eks/latest/userguide/)》中的[設定 Pod 以使用Kubernetes服務帳戶](https://docs.aws.amazon.com/eks/latest/userguide/pod-configuration.html)。

**相關文件**
+ [Amazon EKS AWS Batch 上的 記憶體和 vCPU 考量事項](memory-cpu-batch-eks.md)
+ [執行 GPU 任務](gpu-jobs.md)
+ [任務停滯在 `RUNNABLE` 狀態](job_stuck_in_runnable.md)