Amazon EKS 作业 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EKS 作业

作业是最小的工作单位 Amazon Batch。Amazon EKS 上的 Amazon Batch 作业具有到Kubernetes容器的 one-to-one 映射。 Amazon Batch 作业定义是 Amazon Batch 作业的模板。提交 Amazon Batch 作业时,您可以引用作业定义、定位作业队列并提供作业名称。在 Amazon EKS 上 Amazon Batch 作业的任务定义中,eksProper ties 参数定义了 Amazon Batch 亚马逊 EKS 上作业支持的一组参数。在SubmitJob请求中,该eksPropertiesOverride参数允许覆盖某些常用参数。这样,您就可以为多个作业使用作业定义模板。将任务分派到您的 Amazon EKS 集群时,会将该任务 Amazon Batch 转换为 podspec (Kind: Pod)。podspec使用一些附加 Amazon Batch 参数来确保作业的扩展和调度正确。 Amazon Batch 结合标签和污点,确保作业仅在 Amazon Batch 托管节点上运行,而其他 pod 不会在这些节点上运行。

重要
  • 如果未在 Amazon EKS 任务定义中明确设置该hostNetwork参数,则 Amazon Batch 默认情况下的 pod 联网模式为主机模式。更具体地说,将应用以下设置:hostNetwork=truednsPolicy=ClusterFirstWithHostNet

  • Amazon Batch 在 pod 完成任务后立即清理任务窗格。要查看容器组(pod)应用程序日志,请为您的集群配置日志服务。有关更多信息,请参阅 使用 CloudWatch Logs 监控 Amazon EKS 作业的 Amazon Batch

将正在运行的作业映射到容器组(pod)和节点

正在运行的作业的 podProperties 具有为当前作业尝试设置的 podName 参数和 nodeName 参数。使用 DescribeJobsAPI 操作查看这些参数。

下面是示例输出。

$ 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" } } } ] }

对于启用了重试功能的作业,DescribeJobsAPI 操作nodeNameeksAttempts列表参数中包含每次已完成尝试的podName和。当前运行尝试的 podNamenodeNamepodProperties 对象中。

如何将正在运行的容器组(pod)映射回其作业

Pod uuid 的标签表示它所属的计算环境的jobId和。 Amazon Batch 注入环境变量,以便作业的运行时可以引用作业信息。有关更多信息,请参阅 Amazon Batch 作业环境变量。您可以运行以下命令以查看此信息。输出如下所示。

$ 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 Batch Amazon EKS 工作支持的功能

以下是在 Amazon EKS 上运行的Kubernetes作业也很常见的 Amazon Batch 特定功能:

KubernetesSecretsServiceAccounts

Amazon Batch 支持引用KubernetesSecrets和。ServiceAccounts您可以配置容器组(pod)将 Amazon EKS IAmazon EKS IAM 角色用于服务账户。有关更多信息,请参阅 Amazon EKS 用户指南中的将容器组(pod)配置为使用Kubernetes服务账户