View a markdown version of this page

EKS に最適化されたカスタム Amazon Linux AMI の構築 - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

EKS に最適化されたカスタム Amazon Linux AMI の構築

警告

Amazon EKS は、2025 年 11 月 26 日に、EKS 最適化 Amazon Linux 2 (AL2) AMI の公開を取り止めました。Amazon EKS 用の AL2023 および Bottlerocket ベースの AMI は、バージョン 1.33 以降をはじめサポート対象のすべての Kubernetes で使用できます。

Amazon EKS では、「Amazon EKS AMI Build Specification」リポジトリにオープンソースのビルドスクリプトが用意されており、これらを使用してkubelet、ランタイム環境、AWS IAM Authenticator for Kubernetes の設定を確認し、AL ベースの AMI を一から構築できます。

このリポジトリには、ブート時に実行される特殊な AL2 用 bootstrap スクリプトと AL2023 用 nodeadm ツールが保存されています。これらのスクリプトによって、インスタンスの証明書データ、コントロールプレーンエンドポイント、クラスター名などを設定します。ここに置かれているものは、Amazon EKS 最適化 AMI のビルド用として最も信頼できるスクリプトと見なされるため、GitHub リポジトリの状態をフォローすることで、AMI への変更をモニタリングできます。

EKS 最適化 AMI をベースとしてカスタム AMI を構築する場合、コンポーネントの互換性が損なわれる可能性があるため、オペレーティングシステムのアップグレード (dnf upgrade など) を実行したり、EKS 最適化 AMI に含まれる Kubernetes または GPU パッケージをアップグレードしたりすることは、推奨もサポートもされていません。EKS 最適化 AMI に含まれるオペレーティングシステムまたはパッケージをアップグレードする場合は、本番環境にデプロイする前に、開発環境またはステージング環境で徹底的にテストすることをお勧めします。

GPU インスタンス用のカスタム AMI を構築する場合は、実行するインスタンスタイプの世代およびファミリーごとに、個別のカスタム AMI を構築することをお勧めします。EKS 最適化高速 AMI は、基盤となるインスタンスタイプの世代およびファミリーに基づいて、ランタイム時にドライバーとパッケージを選択的にインストールします。詳細については、インストールとランタイムの EKS AMI スクリプトを参照してください。

前提条件

必要な Amazon プラグインをインストールします。

packer plugins install github.com/hashicorp/amazon

Packer がインストールされていることを確認します。

packer --version

公式の Amazon EKS AMI リポジトリをクローンまたはフォークします。

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

デフォルト値と追加オプションを表示するには、次のコマンドを実行します。AMI のカスタマイズに使用できる設定の詳細については、「Amazon Linux 2023」ページのテンプレート変数を参照してください。

make help

カスタム AMI を作成する

さまざまなカスタム AMI のコマンド例を以下に示します。

EKS NVIDIA AL2 AMI

make k8s=1.32 os_distro=al2 \ enable_accelerator=nvidia \ nvidia_driver_major_version=580 \ enable_efa=true

EKS NVIDIA AL2023 AMI

make k8s=1.36 os_distro=al2023 \ enable_accelerator=nvidia \ nvidia_driver_major_version=580 \ enable_efa=true

カスタムドライバーバージョンを搭載した EKS NVIDIA AL2023 AMI

EKS 最適化 AL2023 NVIDIA AMI は、2 つの NVIDIA ドライバーバージョンを 1 つのイメージにバンドルします。各ノードは、起動時に GPU に適したドライバーを自動的に選択します。EKS AL2023 AMI バージョン v20260917 の時点で、LTS (長期サポート) バージョンは 580、本番ブランチバージョンは 595 であり、すべての EC2 GPU インスタンスタイプをサポートしています。デフォルトバージョンを上書きするには、nvidia_driver_lts_version と nvidia_driver_pb_version を一緒に設定します。

make k8s=1.36 os_distro=al2023 \ enable_accelerator=nvidia \ nvidia_driver_lts_version=580 \ nvidia_driver_pb_version=610 \ enable_efa=true
注記

EKS AL2023 AMI の NVIDIA ドライバー選択ロジックは実行時に動作しますが、AMI が高速 EC2 インスタンス上に構築されている場合は早期にアクティブ化されます。その結果、NVIDIA ドライバー 580 をデフォルトとする高速 EC2 インスタンス (g6 や g7e など) にカスタム AMI を構築する場合、そのカスタム AMI を、新しい NVIDIA ドライバーバージョン (ドライバー 595 を必要とする g7 など) を必要とする高速 EC2 インスタンスにデプロイすることはできません。これを回避するには、非高速 EC2 インスタンス (m6 など) にカスタム AMI を構築し、任意の高速 EC2 インスタンスにデプロイします。このアプローチにより、EKS AL2023 AMI の NVIDIA ドライバー選択ロジックが維持されます。

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 は以下を実行します:

  • 一時的な Amazon EC2 インスタンスを起動します。

  • 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