在 Amazon EKS 资源上创建单节点作业定义 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon EKS 资源上创建单节点作业定义

要在 Amazon Elastic Kubernetes Service 资源上创建新的作业定义,请执行以下操作:
  1. 打开 Amazon Batch 控制台,地址:https://console.aws.amazon.com/batch/

  2. 从顶部导航栏中,选择要使用的 Amazon Web Services 区域。

  3. 在左侧导航窗格中,选择作业定义

  4. 选择 Create(创建)。

  5. 对于编排类型,选择 Elastic Kubernetes Service (EKS)

  6. 对于名称,为您的作业定义输入唯一名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符(-)和下划线(_)。

  7. (可选)对于执行超时,输入超时值(以秒为单位)。执行超时是指未完成的作业终止之前的时间长度。如果某次尝试超过了超时时间,该尝试将停止,状态将转为 FAILED。有关更多信息,请参阅作业超时。最小值为 60 秒。

  8. (可选)开启计划优先级。输入介于 0 到 100 之间的计划优先级值。值越高,相较于较低值的优先级越高。

  9. (可选)展开 标签,然后选择添加标签以向资源添加标签。

  10. 选择下一页

  11. EKS pod 属性部分中:

    1. 服务账户名称中,输入为在 pod 中运行的进程提供身份的账户。

    2. 打开主机网络以使用 Kubernetes pod 网络模型,并为传入的连接打开侦听端口。仅对传出通信关闭此设置。

    3. 对于 DNS 策略,选择以下选项之一:

      • 无值(空) - pod 忽略 Kubernetes 环境中的 DNS 设置。

      • 默认 — pod 从其运行的节点继承名称解析配置。

        注意

        如果未指定 DNS 策略,则默认不是默认 DNS 策略。而是使用 ClusterFirst

      • ClusterFirst — 任何与配置的集群域后缀不匹配的 DNS 查询都将转发到继承自节点的上游名称服务器。

      • ClusterFirstWithHostNet — 如果主机网络已开启,则使用。

    4. (可选)对于容器组(pod)标签,选择添加容器组(pod)标签,然后输入名称/值对。

      重要

      容器组(pod)标签的前缀不能包含 kubernetes.io/k8s.io/batch.amazonaws.com/

    5. 选择下一页

    6. 容器配置部分:

      1. 对于名称,输入容器的名称。该名称必须以字母或数字开头,并且最多可以包含 25 个字符。可以包含大小写字母、数字和连字符。

      2. 对于映像,选择要用于您的作业的 Docker 映像。默认情况下,Docker Hub 注册表中的映像可用。您也可以使用 repository-url/image:tag 指定其他存储库。名称最多可以有 255 个字符。可以包含大小写字母、数字、连字符(-)、下划线(_)、冒号(:)、句点(.)、正斜杠(/)和数字符号(#)。此参数可映射到 Docker Remote API创建容器部分中的 Imagedocker runIMAGE 参数。

        注意

        Docker 映像架构必须与为它们安排的计算资源的处理器架构相匹配。例如,基于 Arm 的 Docker 映像只能在基于 Arm 的计算资源上运行。

        • Amazon ECR 公有存储库中的映像使用完整的registry/repository[:tag]registry/repository[@digest]命名惯例(例如,public.ecr.aws/registry_alias/my-web-app:latest)。

        • Amazon ECR 存储库中的映像使用完整的registry/repository[:tag]命名惯例(例如,aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest)。

        • Docker Hub 上的官方存储库中的映像使用单一名称 (例如,ubuntumongo)。

        • Docker Hub 上其他存储库中的映像通过组织名称(例如,amazon/amazon-ecs-agent)进行限定。

        • 其他在线存储库中的映像由域名 (例如,quay.io/assemblyline/ubuntu) 进行进一步限定。

      3. (可选)对于映像提取策略,请选择何时提取映像。

      4. (可选)在命令中,输入要传递到容器的 Bash 或 JSON 命令。

      5. (可选)在参数中输入要传递给容器的参数。如果未提供参数,则使用容器映像命令。

    7. (可选)您可以将参数作为键值映射添加到作业定义中,以覆盖作业定义的默认值。若要添加参数:

      1. 参数中,输入名称/值对,然后选择添加参数

        重要

        如果选择添加参数,则必须至少配置一个参数或选择移除参数

    8. 环境配置部分:

      1. 对于 vCPUs,输入要为容器预留的 vCPU 数量。此参数将映射到 Docker Remote API创建容器部分中的 CpuShares 以及 docker run--cpu-shares 选项。每个 vCPU 相当于 1024 个 CPU 份额。您必须指定至少一个 vCPU。

      2. 对于内存,输入容器可用的内存限制。如果您的容器尝试使用超出此处指定的内存,该容器将被终止。此参数将映射到 Docker Remote API创建容器部分中的 Memory 以及 docker run--memory 选项。您必须为作业指定至少 4 MiB 内存。

        注意

        要最大限度地提高资源利用率,请为特定实例类型的作业确定内存优先级。有关更多信息,请参阅计算资源内存管理

    9. (可选)对于环境变量,选择添加环境变量以名称-值对的形式添加环境变量。这些变量传递给容器。

    10. (可选)对于卷装载

      1. 选择添加卷装载

      2. 输入名称,然后在装入卷的容器中输入装载路径

      3. 选择只读可删除该卷的写入权限。

      4. 选择添加卷装载

    11. (可选)在以用户身份运行中,输入用户 ID 以运行容器进程。

      注意

      映像中必须存在用户 ID,容器才能运行。

    12. (可选)在分组运行中,输入组 ID 以运行容器进程。

      注意

      映像中必须存在群组 ID,容器才能运行。

    13. (可选)要为您的作业容器授予对主机实例的提升权限(类似于 root 用户),请选择 特权。此参数将映射到 Docker Remote API创建容器部分中的 Privileged 以及 docker run--privileged 选项。

    14. (可选)打开只读根文件系统以删除对根文件系统的写入权限。

    15. (可选)启用以非根用户身份运行,以非根用户身份运行 pod 中的容器。

      注意

      如果启用以非根用户身份运行,则 kubelet 会在运行时验证映像以查证该映像不是以 UID 0 运行的。

    16. 选择下一页

  12. 对于作业定义查看,请查看配置步骤。如果需要进行更改,请选择 Edit(编辑)。完成后,选择创建作业定义