亚马逊EKS职位 - AWS Batch

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

亚马逊EKS职位

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

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

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

对于启用了重试的作业,每次完成nodeName的尝试的podName和都在DescribeJobsAPI操作的eksAttempts列表参数中。当前运行尝试的 podNamenodeNamepodProperties 对象中。

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

Pod uuid 的标签表示它所属的计算环境的jobId和。 AWS Batch 注入环境变量,以便作业的运行时可以引用作业信息。有关更多信息,请参阅 AWS 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 ...
AWS Batch Amazon EKS 工作支持的功能

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

KubernetesSecretsServiceAccounts

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