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

NVIDIA ドライバーバージョン 595 を搭載した EKS NVIDIA AL2023 AMI

重要

G7 EC2 インスタンスタイプには NVIDIA ドライバーバージョン 595 以降が必要です。EKS 最適化高速 AMI には現在、G7 インスタンスをサポートしていない NVIDIA ドライバーバージョン 580 が含まれています。Amazon EKS で G7 インスタンスを使用するには、NVIDIA ドライバーバージョン 595 でカスタム AMI を構築する必要があります。

ノードのプロビジョニングと自動スケーリング用に Karpenter を使用している場合は、自動 AMI 選択を使用する NodePools から g7 インスタンスファミリーを除外することをお勧めします。g7 インスタンスにカスタム AMI を使用するように Karpenter NodeClass を設定する方法については、Karpenter ドキュメントの amiSelectorTerms を参照してください。

make k8s=1.36 os_distro=al2023 \ enable_accelerator=nvidia \ nvidia_driver_major_version=595 \ 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 は以下を実行します:

  • 一時的な 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