

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

# Amazon EKS 计算环境
<a name="eks"></a>

[亚马逊 EK AWS Batch S 入门](getting-started-eks.md)提供了创建 EKS 计算环境的简短指南。本节提供了有关 Amazon EKS 计算环境的更多详细信息。

![\[AWS Batch workflow diagram showing integration with Amazon EKS, ECS, Fargate, and EC2.\]](http://docs.aws.amazon.com/zh_cn/batch/latest/userguide/images/batch-on-eks.png)


AWS Batch 通过提供托管批处理功能，简化您在 Amazon EKS 集群上的批处理工作负载。这包括队列、依赖关系跟踪、托管作业重试次数和优先级、Pod 管理和节点扩展。 AWS Batch 可以处理多个可用区和多个 Amazon EC2 实例类型和大小。 AWS Batch 集成了多个 Amazon EC2 Spot 最佳实践，以容错方式运行您的工作负载，从而减少中断。您可以使用 AWS Batch 来放心地运行少量夜间作业或数百万个关键任务作业。

![\[AWS Batch workflow on Amazon EKS, showing job queue, compute environment, and EC2 instances.\]](http://docs.aws.amazon.com/zh_cn/batch/latest/userguide/images/batch-on-eks-detail.png)


AWS Batch 是一项托管服务，用于协调Kubernetes集群中的批量工作负载，这些工作负载由亚马逊 Elastic Kubernetes Service (Amazon EKS) 管理。 AWS Batch 使用 “叠加” 模型在集群外部进行这种编排。由于 AWS Batch 是托管服务，因此无需在集群中安装或管理任何Kubernetes组件（例如，操作员或自定义资源）。 AWS Batch 只需要将您的集群配置为允许 AWS Batch 与 API 服务器通信的基于角色的访问控制 (RBAC)。Kubernetes AWS Batch 调Kubernetes APIs 用创建、监控和删除 Kubernetes Pod 和节点。

AWS Batch 具有内置的扩展逻辑，可根据任务队列负载扩展Kubernetes节点，并在作业容量分配方面进行了优化。当任务队列为空时，将节点 AWS Batch 缩小到您设置的最小容量，默认情况下为零。 AWS Batch 管理这些节点的整个生命周期，并用标签和污点装饰节点。这样，其他Kubernetes工作负载就不会放在由管理的节点上 AWS Batch。唯一的例外是`DaemonSets`，它可以将 AWS Batch 节点作为目标，以提供正确执行作业所需的监控和其他功能。此外， AWS Batch 不会在集群中它不管理的节点上运行作业，特别是 pod。这样，您就可以为集群上的其他应用程序使用单独的扩展逻辑和服务。

要向提交作业 AWS Batch，您可以直接与 AWS Batch API 进行交互。 AWS Batch 将任务转换为 Amazon EKS 集群中由管理的节点，`podspecs`然后创建请求以将 Pod 放置在 Amazon EKS 集群 AWS Batch 中由管理的节点上。您可以使用诸如 `kubectl` 之类的工具查看正在运行的容器组（pod）和节点。当 Pod 完成执行后， AWS Batch 会删除其创建的 Pod，以保持较低的Kubernetes系统负载。

您可以先将有效的 Amazon EKS 集群与连接起来 AWS Batch。然后将 AWS Batch 任务队列附加到该队列，并使用`podspec`等效属性注册 Amazon EKS 任务定义。最后，使用引用作业定义的 [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)API 操作提交作业。有关更多信息，请参阅 [亚马逊 EK AWS Batch S 入门](getting-started-eks.md)。

AWS Batch 在 Amazon 上，EKS 支持 Amazon EC2 实例（按需实例和竞价实例）作为计算资源。要将 Fargate 与 Fargate 配合使用 AWS Batch，请改用 Amazon ECS 计算环境。有关更多信息，请参阅 [Fargate 计算环境](fargate.md)。

## Amazon EKS
<a name="compute-environments-eks"></a>

**Topics**
+ [Amazon EKS](#compute-environments-eks)
+ [Amazon EKS 默认 AMI](eks-ce-ami-selection.md)
+ [混合 AMI 环境](mixed-ami-environments.md)
+ [支持的Kubernetes版本](supported_kubernetes_version.md)
+ [更新计算环境的 Kubernetes 版本](updating-k8s-version-ce.md)
+ [Kubernetes节点的共同责任](eks-ce-shared-responsibility.md)
+ [DaemonSet在 AWS Batch 托管节点上运行](daemonset-on-batch-eks-nodes.md)
+ [自定义 Amazon EKS 启动模板](eks-launch-templates.md)
+ [如何从 EKS 升级 AL2 到 EKS AL2023](eks-migration-2023.md)

# Amazon EKS 默认 AMI
<a name="eks-ce-ami-selection"></a>

创建 Amazon EKS 计算环境时，无需指定亚马逊系统映像 (AMI)。 AWS Batch 根据您的[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html)请求中指定的Kubernetes版本和实例类型选择经过优化 Amazon EKS 的 AMI。一般情况下，我们建议您使用默认 AMI 选择。有关 AMI 选择优先级的信息，请参阅[AMI 选择顺序](ami-selection-order.md)。有关优化的亚马逊 EKS 的更多信息 AMIs，请参阅[亚马逊 EKS *用户指南 AMIs中的亚马逊 EKS 优化亚马逊* Linux](https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html)。

**重要**  
亚马逊 Linux 2023 AMIs 是亚马逊 EKS AWS Batch 的默认开启。  
AWS 将从 25 年 11 月 26 日起终止 AL2对 Amazon EKS 的支持 AL2（经过优化和加速 AMIs）。在 25 年 11 月 26 AMIs end-of-support 日之后，您可以继续在您的 Amazon EKS 计算环境中使用 AWS Batch经过优化 Amazon EKS 的 Amazon Linux 2，但是这些计算环境将不再收到来自的任何新软件更新、安全补丁或错误修复。 AWS有关从升级 AL2 到的更多信息 AL2023，请参阅[如何从 EKS 升级 AL2 到 EKS AL2023](eks-migration-2023.md)《*AWS Batch 用户指南》*。

运行以下命令，查看为您的 Amazon EKS 计算环境 AWS Batch 选择了哪种 AMI 类型。以下示例是非 GPU 实例类型。

```
# compute CE example: indicates Batch has chosen the AL2 x86 or ARM EKS 1.32 AMI, depending on instance types
    $ aws batch describe-compute-environments --compute-environments My-Eks-CE1 \
        | jq '.computeEnvironments[].computeResources.ec2Configuration'
    [
      {
        "imageType": "EKS_AL2",
        "imageKubernetesVersion": "1.32"
      }
    ]
```

以下示例是 GPU 实例类型。

```
# GPU CE example: indicates Batch has choosen the AL2 x86 EKS Accelerated 1.32 AMI
    $ aws batch describe-compute-environments --compute-environments My-Eks-GPU-CE \
        | jq '.computeEnvironments[].computeResources.ec2Configuration'
    [
      {
        "imageType": "EKS_AL2_NVIDIA",
        "imageKubernetesVersion": "1.32"
      }
    ]
```

# 混合 AMI 环境
<a name="mixed-ami-environments"></a>

您可以使用启动模板替换来创建同时使用亚马逊 Linux 2 (AL2) 和亚马逊 Linux 2023 (AL2023) AMIs 的计算环境。这对于为不同的架构使用不同的 AMIs 架构或在从过渡 AL2 到 AL2023的迁移期间使用不同的方法非常有用。

**注意**  
AWS 将从 25 年 11 月 26 日起终止 AL2对 Amazon EKS 的支持 AL2（经过优化和加速 AMIs）。虽然您可以在 25 年 11 月 26 AMIs end-of-support 日之后继续在您的 Amazon EKS 计算环境中使用 AWS Batch经过优化 Amazon EKS 的 Amazon Linux 2，但这些计算环境将不再收到来自的任何新软件更新、安全补丁或错误修复。 AWS在过渡期间，混合 AMI 环境非常有用，允许您逐步将工作负载迁移到， AL2023 同时保持与现有工作负载 AL2的兼容性。

同时使用这两种 AMI 类型的配置示例：

```
{
  "computeResources": {
    "launchTemplate": {
      "launchTemplateId": "TemplateId",
      "version": "1",
      "userdataType": "EKS_BOOTSTRAP_SH",
      "overrides": [
        {
          "instanceType": "c5.large",
          "imageId": "ami-al2-custom",
          "userdataType": "EKS_BOOTSTRAP_SH"
        },
        {
          "instanceType": "c6a.large",
          "imageId": "ami-al2023-custom",
          "userdataType": "EKS_NODEADM"
        }
      ]
    },
    "instanceTypes": ["c5.large", "c6a.large"]
  }
}
```

# 支持的Kubernetes版本
<a name="supported_kubernetes_version"></a>

AWS Batch 在 Amazon 上，EKS 目前支持以下Kubernetes版本：
+ `1.34`
+ `1.33`
+ `1.32`
+ `1.31`
+ `1.30`
+ `1.29`

当使用 `CreateComputeEnvironment` API 操作或 `UpdateComputeEnvironment`API 操作以创建或更新计算环境时，可能会看到类似于以下内容的错误消息。如果在`EC2Configuration`中指定不受支持的Kubernetes版本，则会出现此问题。

```
At least one imageKubernetesVersion in EC2Configuration is not supported.
```

要解决此问题，请删除计算环境，然后使用支持的Kubernetes版本重新创建。

可以在 Amazon EKS 集群上执行次要版本升级。例如，即使不支持次要版本，也可以将集群从`1.xx`升级到`1.yy`。

但是，主要版本更新后，计算环境的状态可能会更改为`INVALID`。例如，如果将主要版本从`1.xx`升级到`2.yy`。如果不支持主要版本 AWS Batch，则会看到类似于以下内容的错误消息。

```
reason=CLIENT_ERROR - ... EKS Cluster version [2.yy] is unsupported
```

# 更新计算环境的 Kubernetes 版本
<a name="updating-k8s-version-ce"></a>

使用 AWS Batch，您可以更新计算环境的Kubernetes版本以支持 Amazon EKS 集群升级。计算环境的Kubernetes版本是 Amazon EKS AMI 版本，适用于 AWS Batch 启动以运行任务的Kubernetes节点。您可以在更新 Amazon EKS 集群控制面板版本之前或之后，在其 Amazon EKS 节点上执行 Kubernetes 版本升级。我们建议在升级控制面板后更新节点。有关更多信息，请参阅*《Amazon EKS 用户指南》*中的[更新 Amazon EKS 集群Kubernetes版本](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html)。

要升级计算环境的Kubernetes版本，请使用 [https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html)API 操作。

```
$ aws batch update-compute-environment \
    --compute-environment <compute-environment-name> \
    --compute-resources \
      'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.32}]'
```

# Kubernetes节点的共同责任
<a name="eks-ce-shared-responsibility"></a>

计算环境的维护是一项共同责任。
+ 请勿更改或移除 AWS Batch 节点、标签、污点、命名空间、启动模板或 auto Scaling 组。不要向 AWS Batch 托管节点添加污点。如果要进行上述任何更改，则无法支持计算环境，并且会出现故障，包括空闲实例。
+ 不要将你的 Pod 定位到 AWS Batch 托管节点。如果将容器组（pod）定位到托管节点，则会出现扩展中断和作业队列卡死的情况。运行不在自管节点或托管节点组 AWS Batch 上使用的工作负载。有关更多信息，请参阅*《Amazon EKS 用户指南》*中的[托管节点组](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)。
+ 您可以将 a 定位DaemonSet为在 AWS Batch 托管节点上运行。有关更多信息，请参阅 [DaemonSet在 AWS Batch 托管节点上运行](daemonset-on-batch-eks-nodes.md)。

AWS Batch 不会自动更新计算环境 AMIs。您要负责更新它们。运行以下命令将您的 AMI 更新 AMIs 到最新 AMI 版本。

```
$ aws batch update-compute-environment \
    --compute-environment <compute-environment-name> \
    --compute-resources 'updateToLatestImageVersion=true'
```

AWS Batch 不会自动升级Kubernetes版本。运行以下命令将您的计算机环境Kubernetes版本更新为*1.32*。

```
$ aws batch update-compute-environment \
    --compute-environment <compute-environment-name> \
    --compute-resources \
      'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.32}]'
```

在更新到最新的 AMI 或Kubernetes版本时，可以指定是否在作业更新时终止作业 (`terminateJobsOnUpdate`)，以及运行中的作业未完成的话要等待多长时间才替换实例 (`jobExecutionTimeoutMinutes`)。有关更多信息，请参阅[更新中的计算环境 AWS Batch](updating-compute-environments.md)和 [https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html) API 操作中设置的基础设施更新政策 ([https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdatePolicy.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdatePolicy.html))。

# DaemonSet在 AWS Batch 托管节点上运行
<a name="daemonset-on-batch-eks-nodes"></a>

AWS Batch 在 AWS Batch 托管Kubernetes节点上设置污点。您可以通过以下方式DaemonSet将 a 设置为在 AWS Batch 托管节点上运行`tolerations`。

```
tolerations:
  - key: "batch.amazonaws.com/batch-node"
    operator: "Exists"
```

执行此操作的另一种方法是使用以下`tolerations`。

```
tolerations:
  - key: "batch.amazonaws.com/batch-node"
    operator: "Exists"
    effect: "NoSchedule"
  - key: "batch.amazonaws.com/batch-node"
    operator: "Exists"
    effect: "NoExecute"
```

# 自定义 Amazon EKS 启动模板
<a name="eks-launch-templates"></a>

AWS Batch 在 Amazon 上，EKS 支持启动模板。启动模板的功能受到限制。

**重要**  
对于 EKS 来说 AL2 AMIs， AWS Batch 跑步`/etc/eks/bootstrap.sh`。请勿在启动模板或cloud-inituser-data脚本中运行`/etc/eks/bootstrap.sh`。除了 [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) 的`--kubelet-extra-args`参数外，还可以添加其他参数。为此，请在`AWS_BATCH_KUBELET_EXTRA_ARGS`文件中设置`/etc/aws-batch/batch.config`变量。详情请参阅以下示例。
对于 EKS AL2023， AWS Batch 利用来[NodeConfigSpec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)自 EKS 的使实例加入 EKS 集群。 AWS Batch 将[NodeConfigSpec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)为 EKS 集群填充 [ClusterDetails](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#clusterdetails)，您无需指定它们。

**注意**  
我们建议您不要在启动模板中[https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)设置以下任何设置，因为 AWS Batch 这将覆盖您的值。有关更多信息，请参阅 [Kubernetes节点的共同责任](eks-ce-shared-responsibility.md)。  
`Taints`
`Cluster Name`
`apiServerEndpoint`
`certificatAuthority`
`CIDR`
不要创建使用前缀 `batch.amazonaws.com/` 的标签

**注意**  
如果在调用后[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html)更改了启动模板，则[https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html)必须调用该启动模板来评估要替换的启动模板的版本。

**Topics**
+ [添加 `kubelet` 额外参数](#kubelet-extra-args)
+ [配置容器运行时系统](#change-container-runtime)
+ [挂载 Amazon EFS 卷](#mounting-efs-volume)
+ [IPv6 支持](#eks-ipv6-support)

## 添加 `kubelet` 额外参数
<a name="kubelet-extra-args"></a>

AWS Batch 支持在`kubelet`命令中添加额外的参数。有关支持的参数列表，请参阅*Kubernetes文档*中的[https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)。在以下 EKS 示例中 AL2 AMIs`--node-labels mylabel=helloworld`，已添加到`kubelet`命令行中。

```
MIME-Version: 1.0
      Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

      --==MYBOUNDARY==
      Content-Type: text/x-shellscript; charset="us-ascii"

      #!/bin/bash
      mkdir -p /etc/aws-batch

      echo AWS_BATCH_KUBELET_EXTRA_ARGS=\"--node-labels mylabel=helloworld\" >> /etc/aws-batch/batch.config

      --==MYBOUNDARY==--
```

对于 EKS AL2023 AMIs ，文件格式为 YAML。有关支持的参数列表，请参阅*Kubernetes文档*中的[https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec)。在以下 EKS 示例中 AL2023 AMIs`--node-labels mylabel=helloworld`，已添加到`kubelet`命令行中。

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
    - --node-labels=mylabel=helloworld

--==MYBOUNDARY==--
```

## 配置容器运行时系统
<a name="change-container-runtime"></a>

您可以使用 AWS Batch `CONTAINER_RUNTIME`环境变量在托管节点上配置容器运行时。以下示例将容器运行时系统设置为“`bootstrap.sh`运行时`containerd`”。有关更多信息，请参阅*Kubernetes文档*中的[https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd)。

如果您使用的是优化型 `EKS_AL2023` 或 `EKS_AL2023_NVIDIA` AMI，则无需指定容器运行时，因为仅支持 **containerd**。

**注意**  
`CONTAINER_RUNTIME`环境变量等同于`bootstrap.sh`的`--container-runtime`选项。有关更多信息，请参阅*Kubernetes文档*中的[https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/#options](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/#options)。

```
MIME-Version: 1.0
      Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

      --==MYBOUNDARY==
      Content-Type: text/x-shellscript; charset="us-ascii"

      #!/bin/bash
      mkdir -p /etc/aws-batch

      echo CONTAINER_RUNTIME=containerd >> /etc/aws-batch/batch.config

      --==MYBOUNDARY==--
```

## 挂载 Amazon EFS 卷
<a name="mounting-efs-volume"></a>

可以使用启动模板将卷装载到节点上。在以下示例中，使用了`cloud-config``packages`和`runcmd`设置。有关更多信息，请参阅*cloud-init文档*中的[云配置示例](https://cloudinit.readthedocs.io/en/latest/topics/examples.html)。

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- amazon-efs-utils

runcmd:
- file_system_id_01=fs-abcdef123
- efs_directory=/mnt/efs

- mkdir -p ${efs_directory}
- echo "${file_system_id_01}:/ ${efs_directory} efs _netdev,noresvport,tls,iam 0 0" >> /etc/fstab
- mount -t efs -o tls ${file_system_id_01}:/ ${efs_directory}

--==MYBOUNDARY==--
```

要在作业中使用此卷，必须将其添加到 [eksPro](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksProperties.html) perties 参数中。[RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)以下示例是作业定义的一大部分。

```
{
    "jobDefinitionName": "MyJobOnEks_EFS",
    "type": "container",
    "eksProperties": {
        "podProperties": {
            "containers": [
                {
                    "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
                    "command": ["ls", "-la", "/efs"],
                    "resources": {
                        "limits": {
                            "cpu": "1",
                            "memory": "1024Mi"
                        }
                    },
                    "volumeMounts": [
                        {
                            "name": "efs-volume",
                            "mountPath": "/efs"
                        }
                    ]
                }
            ],
            "volumes": [
                {
                    "name": "efs-volume",
                    "hostPath": {
                        "path": "/mnt/efs"
                    }
                }
            ]
        }
    }
}
```

在节点中，Amazon EFS 卷装载在`/mnt/efs`目录中。在 Amazon EKS 作业的容器中，卷装载在 `/efs` 目录中。

## IPv6 支持
<a name="eks-ipv6-support"></a>

AWS Batch 支持具有 IPv6 地址的 Amazon EKS 集群。无需自定义即可获得 AWS Batch 支持。但是，在开始之前，我们建议您查看 *Amazon EKS 用户指南*中[为容器和服务分配 IPv6 地址](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html)中概述的注意事项和条件。

# 如何从 EKS 升级 AL2 到 EKS AL2023
<a name="eks-migration-2023"></a>

经过优化的亚马逊 EKS AMIs 有两个系列可供选择，分别基于亚马逊 Linux 2 (AL2) 和亚马逊 Linux 2023 (AL2023)。 AL2023 是基于 Linux 的操作系统，旨在为您的云应用程序提供安全、稳定和高性能的环境。有关两者之间 AL2 差异的更多信息， AL2023 请参阅亚马逊 E *KS 用户指南中的从亚马逊 Linux 2 升级到亚马逊* [Linux 2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html)。

**重要**  
AWS 2025 年 11 月 26 日终止了对 Amazon EKS 的支持， AMIs 该支持 AL2经过优化和 AL2加速了。 AWS Batch 使用 Amazon Linux 2 的 Amazon EKS 计算环境不再收到来自的软件更新、安全补丁或错误修复 AWS。我们建议将 AWS Batch Amazon EKS 计算环境迁移到 Amazon Linux 2023，以保持最佳性能和安全性。之后，你有[责任在亚马逊 EKS 优化的 Amazon Linux 2 AMI 上维护](eks-ce-shared-responsibility.md)这些计算环境 end-of-life。

根据计算环境的配置方式，您可以使用以下从 AL2 到的升级路径之一 AL2023。

**使用 Ec2 配置进行升级。 ImageType**
+ 如果您没有使用启动模板或启动模板替代，请更改 [Ec2Configuration。 ImageType](https://docs.aws.amazon.com/batch/latest/APIReference/API_Ec2Configuration.html#Batch-Type-Ec2Configuration-imageType)到`EKS_AL2023`或`EKS_AL2023_NVIDIA`然后运行[UpdateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html)。
+ 如果您指定 [Ec2 配置。 ImageIdOverride](https://docs.aws.amazon.com/batch/latest/APIReference/API_Ec2Configuration.html#Batch-Type-Ec2Configuration-imageIdOverride)然后是 [Ec2 配置。 ImageType](https://docs.aws.amazon.com/batch/latest/APIReference/API_Ec2Configuration.html#Batch-Type-Ec2Configuration-imageType)必须与 Ec [2Configuration 中指定的 AMI 类型相匹配。 ImageIdOverride](https://docs.aws.amazon.com/batch/latest/APIReference/API_Ec2Configuration.html#Batch-Type-Ec2Configuration-imageIdOverride)。

  如果 `ImageIdOverride` 与 `ImageType` 不匹配，则该节点将无法加入集群。

**使用启动模板升级**
+ 如果您在启动模板或启动模板覆盖中定义了任何`kubelet`额外的参数，则需要将它们更新为新的[`kubelet`额外参数格式](eks-launch-templates.md#kubelet-extra-args)。

  如果与 `kubelet` 附加参数格式不匹配，则不会应用附加参数。
+ 因为 AL2023 AMIs，c **ontainerd** 是唯一支持的容器运行时。无需在启动模板中指定 `EKS_AL2023` 到容器运行时。

  您不能使用指定自定义容器运行时`EKS_AL2023`。
+ 如果使用指定了基于 `EKS_AL2023` 的 AMI 的启动模板或启动模板覆盖，则需要将 [userdataType](https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html) 设置为 `EKS_NODEADM`。

  如果 `userdataType` 与 AMI 不匹配，则该节点将无法加入 EKS 集群。