本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EKS
作业是最小的作业单元Amazon Batch。亚马逊 EKS 上的Amazon Batch任务需要 one-to-one 映射到Kubernetes Pod。Amazon Batch作业定义是Amazon Batch作业的模板。提交Amazon Batch作业时,您可以引用作业定义、定位作业队列并为作业提供名称。在 Amazon EKS 上的Amazon Batch任务定义中,eksProperti es 参数定义了亚马逊 EKS 任务支持的一Amazon Batch组参数。在SubmitJob请求中,该eksPropertiesOverride参数允许覆盖某些常见参数。这样,您可以将作业定义模板用于多个作业。当任务分派到您的 Amazon EKS 集群时,会将该任务Amazon Batch转换为podspec
(Kind: Pod
)。podspec
使用一些附加Amazon Batch参数来确保正确扩展和安排作业。 Amazon Batch结合标签和污点,确保作业仅在Amazon Batch托管节点上运行,而其他 pod 不在这些节点上运行。
重要
-
如果未在 Amazon EKS 任务定义中明确设置该
hostNetwork
参数,则 pod 网络模式Amazon Batch默认为主机模式。更具体地说,将应用以下设置:hostNetwork=true
和dnsPolicy=ClusterFirstWithHostNet
。 -
Amazon Batch在 Pod 完成任务后立即清理作业舱。要查看 pod 应用程序日志,请为您的集群配置日志服务。有关更多信息,请参阅使用 CloudWatch 日志监控亚马逊Amazon Batch EKS 作业:
将正在运行的任务映射到 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" } } } ] }
对于启用了重试的作业,每次完成尝试nodeName
的podName
和都在 DescribeJobsAPI 操作的eksAttempts
列表参数中。当前运行尝试nodeName
的podName
和在podProperties
对象中。
如何将正在运行的 pod 映射回其作业
Pod 的标签表示它所属的计算环境uuid
的jobId
和。 Amazon Batch注入环境变量,以便作业的运行时可以引用作业信息。有关更多信息,请参阅Amazon Batch作业环境变量:您可以通过运行以下命令来查看此类信息。输出如下所示。
$
kubectl describe pod aws-batch.
14638eb9-d218-372d-ba5c-1c9ab9c7f2a1
-nmy-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亚马逊 EKS 任务支持的功能
以下是在 Amazon EKS 上运行的Kubernetes任务中常见的Amazon Batch特定功能:
KubernetesSecrets
和 ServiceAccounts
Amazon Batch支持引用KubernetesSecrets
和ServiceAccounts
。您可以配置 Pod 以将 Amazon EKS IAM 角色用于服务账户。有关更多信息,请参阅《A mazon EKS 用户指南》中的 “配置 pod 以使用Kubernetes服务帐号”。