

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

# Amazon EKS 作业
<a name="eks-jobs"></a>

作业是最小的工作单位 AWS Batch。Amazon EKS 上的 AWS Batch 作业具有到Kubernetes容器的 one-to-one映射。 AWS Batch 作业定义是 AWS Batch 作业的模板。提交 AWS Batch 作业时，您可以引用作业定义、定位作业队列并提供作业名称。在 Amazon EKS 上 AWS Batch 作业的任务定义中，[eksProper](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksProperties.html) ties 参数定义了 AWS Batch 亚马逊 EKS 上作业支持的一组参数。在[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`参数，则 AWS Batch 默认情况下的 pod 联网模式为主机模式。更具体地说，将应用以下设置：`hostNetwork=true` 和 `dnsPolicy=ClusterFirstWithHostNet`。
AWS Batch 在 pod 完成任务后立即清理任务窗格。要查看容器组（pod）应用程序日志，请为您的集群配置日志服务。有关更多信息，请参阅 [使用 CloudWatch 日志监控 Amaz AWS Batch on 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"
    }
   }
  }
 ]
}
```

对于启用了重试功能的作业，[DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)API 操作`nodeName`的`eksAttempts`列表参数中包含每次已完成尝试的`podName`和。当前运行尝试的 `podName` 和 `nodeName` 在 `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

...
```

**AWS Batch Amazon 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 IAmazon 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)