

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 构建自定义 EKS 优化版 Linux AMI
<a name="eks-ami-build-scripts"></a>

**警告**  
Amazon EKS 已于 2025 年 11 月 26 日停止发布 EKS 优化型 Amazon Linux 2（AL2）AMI。基于 AL2023 和 Bottlerocket 的 Amazon EKS AMI 适用于所有支持的 Kubernetes 版本（包括 1.33 和更高版本）。

Amazon EKS 在 [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) 存储库中提供开源构建脚本，您可通过这些脚本查看 `kubelet`、运行时环境及适用于 Kubernetes 的 AWS IAM 身份验证器的相关配置，同时也能从头构建基于 AL 的自有 AMI。

此存储库包含[适用于 AL2 的专用引导脚本](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh)，以及在开机阶段运行的[适用于 AL2023 的 nodeadm 工具](https://awslabs.github.io/amazon-eks-ami/nodeadm/)。这些脚本可配置实例的证书数据、控制面板端点、集群名称等内容。这些脚本是 Amazon EKS 优化版 AMI 生成的可信来源，因此您可关注 GitHub 存储库以监控对 AMI 所做的更改。

以 EKS 优化版 AMI 为基础构建自定义 AMI 时，不建议且不提供技术支持运行操作系统升级（即 `dnf upgrade`），亦不建议升级 EKS 优化版 AMI 中预装的任何 Kubernetes 或 GPU 相关软件包，因为此类操作可能破坏组件间的兼容性。若仍选择对 EKS 优化版 AMI 中的操作系统或软件包执行升级操作，建议先在开发或预发布环境中开展全面测试，再部署至生产环境。

针对 GPU 实例构建自定义 AMI 时，建议为计划运行的各代实例类型及实例系列分别构建独立的自定义 AMI。EKS 优化版加速型 AMI 会在运行时阶段，根据底层实例的代次与系列选择性安装驱动程序及软件包。有关[安装](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh)及[运行时](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh)的详细信息，请参阅 EKS AMI 脚本。

## 先决条件
<a name="_prerequisites"></a>
+  [安装 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。
+  [安装 HashiCorp Packer v1.9.4\$1](https://developer.hashicorp.com/packer/downloads) 
+  [安装 GNU Make](https://www.gnu.org/software/make/) 

## 快速入门
<a name="_quickstart"></a>

本快速入门指南将演示在 AWS 账户中创建自定义 AMI 所需执行的命令。要了解有关可用于自定义 AMI 的配置的更多信息，请参阅 [Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/) 页面上的模板变量。

### 先决条件
<a name="_prerequisites_2"></a>

安装所需的 [Amazon Q 插件](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon)。例如：

```
packer plugins install github.com/hashicorp/amazon
```

### 步骤 1：设置您的环境
<a name="_step_1_setup_your_environment"></a>

克隆或复刻 Amazon EKS AMI 官方存储库。例如：

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

确认已安装 Packer：

```
packer --version
```

### 步骤 2：创建自定义 AMI
<a name="_step_2_create_a_custom_ami"></a>

以下是用于各种自定义 AMI 的示例命令。

 **基本 NVIDIA AL2 AMI：**

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **基本 NVIDIA AL2023 AMI：**

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **符合 STIG 标准的 Neuron AL2023 AMI：**

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

运行这些命令后，Packer 将执行以下操作：\$1 启动临时 Amazon EC2 实例。\$1 安装 Kubernetes 组件、驱动程序和配置。在 AWS 账户中创建 AMI。

预期输出应如下所示：

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### 步骤 3：查看默认值
<a name="_step_3_view_default_values"></a>

要查看默认值和其他选项，请运行以下命令：

```
make help
```