起動テンプレートのサポート - Amazon EKS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

起動テンプレートのサポート

マネージド型ノードグループは常に Amazon EC2 Auto Scaling グループ起動テンプレートを使用してデプロイされます。マネージド型ノードグループの作成時に使用する独自の起動テンプレートを指定しない場合、Amazon EKS API により、アカウントにデフォルト値で起動テンプレートが作成されます。独自の起動テンプレートとそのテンプレートからのマネージド型ノードグループの作成には、デフォルトの起動テンプレートに用意されているものよりも、高度な柔軟性とカスタマイズが用意されているというメリットがあります。最高レベルのカスタマイズを行うには、独自の起動テンプレートとカスタム AMI を使用してマネージド型ノードをデプロイできます。

独自の起動テンプレートを使用してマネージド型ノードグループをデプロイした後、同じ起動テンプレートの別のバージョンで更新できます。別の起動テンプレートバージョンにノードグループを更新すると、指定された起動テンプレートバージョンの新しい設定に合わせて、グループ内のノードがすべてリサイクルされます。カスタム起動テンプレートを使用しない既存のノードグループを直接更新することはできません。むしろ、カスタム起動テンプレートを使って新しいノードグループを作成する必要があります。

起動テンプレート設定の基本

Amazon EC2、Auto Scaling、または AWS マネジメントコンソール SDK を使用して AWS CLI 起動テンプレートを作成できます。AWS詳細については、 ユーザーガイドの「Auto Scaling グループの起動テンプレートの作成Amazon EC2」を参照してください。起動テンプレートの一部の設定は、マネージド型ノード設定に使用される設定と似ています。起動テンプレートを使用してノードグループをデプロイまたは更新するときは、ノードグループ設定または起動テンプレートでいくつかの設定を指定する必要がありますが、両方を指定することはできません。必要でない設定が存在する場合、ノードグループの作成や更新などのオペレーションは失敗します。

次の表に、起動テンプレートで禁止される設定のうち、マネージド型ノードグループ構成で同様の設定 (存在する場合) が必要な設定を示します。表示される設定は、コンソールに表示される設定です。と SDK では、名前は似ているが、異なる可能性があります。AWS CLI

起動テンプレート – 禁止 Amazon EKS ノードグループ設定
IAM [Advanced details] の [instance profile] [Configure Node Group] ページの [Node Group configuration] の [Node IAM Role]
[ネットワークインターフェイス] の [サブネット] (ネットワークインターフェイスの追加) [Specify networking (ネットワーキングの指定)] ページの [Node Group network configuration (ノードグループネットワーク設定)] にある [サブネット]
[高度な詳細] の [Shutdown behavior (シャットダウン動作)] と [Stop - Hibernate behavior (停止 - 休止動作)]。両方の設定の起動テンプレートにデフォルトの [起動テンプレート設定を含めないでください] を維持します。 同等物はありません。Amazon EKS は、Auto Scaling グループではなく、インスタンスのライフサイクルを制御する必要があります。

次の表は、マネージド型ノードグループの設定で禁止される設定と、起動テンプレートで同様の設定 (存在する場合) が必要な設定の一覧です。表示される設定は、コンソールに表示される設定です。と SDK には同様の名前が付けられている可能性があります。AWS CLI

Amazon EKS ノードグループ設定 – 禁止 起動テンプレート

(起動テンプレートでカスタム AMI を指定した場合のみ) [Set compute and scaling configuration (コンピューティングおよびスケーリング設定の設定)] ページの [Node Group compute configuration (ノードグループコンピューティング設定)] で [AMI type (AMI タイプ)] に [–Specified in launch template (起動テンプレートで指定された)] と指定した AMI ID が表示されます。

起動テンプレートで AMI タイプが指定されていない場合は、ノードグループ設定で AMI を選択できます。

[ AMI] の [起動テンプレートの内容] カスタム AMI を使用している場合は、指定する必要があります。–「カスタム AMI の使用」に記載されている要件を満たさない AMI を指定すると、ノードグループのデプロイは失敗します。
[Set compute and scaling configuration (コンピューティングおよびスケーリング設定の設定)] ページの [Node Group compute configuration (ノードグループコンピューティング設定)] の [ディスクサイズ] – コンソールに [Specified in launch template (起動テンプレートで指定された)] と表示されます。 [ストレージ (ボリューム)] の [サイズ] ([新しいボリュームの追加])。これは起動テンプレートで指定する必要があります。
[Specify Networking (ネットワーキングの指定)] ページの [Node Group configuration (ノードグループ設定)] にある [SSH key pair (SSH キーペア)] – コンソールには、起動テンプレートで指定されたキーが表示されるか、[Not specified in launch template (起動テンプレートで指定されていません)] と表示されます。 キーペア名 の下の [キーペア (ログイン)]。
起動テンプレートを使用する場合、リモートアクセスを許可するソースセキュリティグループを指定することはできません。 インスタンスの [Network settings (ネットワーク設定)] の [Security groups (セキュリティグループ)]、または [Network interfaces (ネットワークインターフェイスの追加)] ([Add network interfaces (ネットワークインターフェイスの追加)]) の [Security groups (セキュリティグループ)]。詳細については、「カスタムセキュリティグループの使用」を参照してください。
注記
  • 起動テンプレートを使用してノードグループをデプロイする場合は、起動テンプレートで [Launch template contents (起動テンプレートの内容)] に 0 または 1 つの [インスタンスタイプ] を指定するか、コンソールの [コンピューティングとスケーリング設定の設定] ページで [インスタンスタイプ] を 0 ~ 20 個指定するか、 API を使用するその他のツールを使用できます。Amazon EKS起動テンプレートでインスタンスタイプを指定し、その起動テンプレートを使用してノードグループをデプロイする場合、コンソールでインスタンスタイプを指定することや、Amazon EKS API を使用するその他のツールを使用することはできません。起動テンプレート、コンソール、または Amazon EKS API を使用するその他のツールでインスタンスタイプを指定しない場合、t3.medium インスタンスタイプがデフォルトで使用されます。ノードグループがスポットキャパシティータイプを使用している場合は、コンソールを使用して複数のインスタンスタイプを指定することをお勧めします。詳細については、「マネージド型ノードグループの容量タイプ」を参照してください。

  • ノードグループにデプロイするコンテナがインスタンスメタデータサービスバージョン 2 を使用している場合は、必ず起動テンプレートで [メタデータレスポンスのホップ制限] を [2] に設定してください。詳細については、 ユーザーガイドの「インスタンスメタデータとユーザーデータAmazon EC2」を参照してください。カスタム起動テンプレートを使用せずにマネージド型ノードグループをデプロイした場合、この値はデフォルトの起動テンプレートのノードグループに自動的に設定されます。

インスタンスのタグ付けAmazon EC2

起動テンプレートの TagSpecification パラメータを使用して、ノードグループの Amazon EC2 インスタンスに適用するタグを指定できます。または CreateNodegroup UpdateNodegroupVersion を呼び出す IAM エンティティには APIs および ec2:RunInstances のアクセス許可が必要で、タグは起動テンプレートに追加する必要があります。ec2:CreateTags

カスタムセキュリティグループの使用

起動テンプレートを使用して、ノードグループのインスタンスに適用するカスタム Amazon EC2 セキュリティグループを指定できます。これは、インスタンスレベルのセキュリティグループパラメータ内、またはネットワークインターフェイス設定パラメータの一部として指定できます。ただし、インスタンスレベルとネットワークインターフェイスセキュリティグループの両方を指定する起動テンプレートを作成することはできません。マネージド型ノードグループでカスタムセキュリティグループを使用する際には、以下の条件を考慮してください。

  • Amazon EKS では、1 つのネットワークインターフェイス仕様の起動テンプレートのみが許可されます。

  • デフォルトでは、Amazon EKS はノードグループ内のインスタンスにクラスターセキュリティグループを適用し、ノードとコントロールプレーン間の通信を容易にします。先ほど説明したいずれかのオプションを使用して起動テンプレートでカスタムセキュリティグループを指定した場合、Amazon EKS はクラスターセキュリティグループを追加しません。したがって、セキュリティグループのインバウンドルールとアウトバウンドルールで、クラスターのエンドポイントとの通信が有効になっていることを確認する必要があります。セキュリティグループルールが正しくないと、ワーカーノードがクラスターに参加できません。適用する必要があるセキュリティグループルールについては、「Amazon EKS セキュリティグループの考慮事項」を参照してください。

  • ノードグループ内のインスタンスに SSH アクセスする必要がある場合は、そのアクセスを許可するセキュリティグループを必ず含めます。

Amazon EC2 ユーザーデータ

インスタンスの起動時に Amazon EC2 を使用して、起動テンプレートに cloud-init ユーザーデータを指定できます。詳細については、「cloud-init ドキュメント」を参照してください。ユーザーデータを使用して、一般的な設定オペレーションを実行できます。これには、次のオペレーションが含まれます。

マネージド型ノードグループで使用される起動テンプレート内の Amazon EC2 ユーザーデータは、MIME マルチパートアーカイブ形式である必要があります。これは、ユーザーデータが、ノードがクラスターに参加するのに必要な Amazon EKS ユーザーデータとマージされるためです。を起動または変更するユーザーデータには、一切のコマンドを指定しないでください。これは、kubelet によってマージされたユーザーデータの一部として実行されるためです。Amazon EKSノードのラベルの設定など、特定の kubelet パラメータは、マネージド型ノードグループ API を通じて直接設定できます。

注記

の高度なカスタマイズ (手動での開始やカスタム設定パラメータの受け渡しなど) が必要な場合は、「kubelet」を参照してください。カスタム AMI の使用 は、カスタム AMI ID が起動テンプレートで指定される場合、ユーザーデータをマージしません。Amazon EKS

複数のユーザーデータブロックと単一の MIME マルチパートファイルを組み合わせることができます。たとえば、カスタムパッケージをインストールするユーザーデータシェルスクリプトを使用して、Docker デーモンを設定するクラウドブートフックを組み合わせることができます。MIME マルチパートファイルには次のコンポーネントが含まれます。

  • コンテンツタイプおよびパート境界の宣言 – Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • MIME バージョン宣言 – MIME-Version: 1.0

  • 次のコンポーネントを含む 1 つ以上のユーザーデータブロック:

    • ユーザーデータブロック – --==BOUNDARY== の始まりを示す開始境界

    • ブロックのコンテンツタイプ宣言。Content-Type: text/cloud-config; charset="us-ascii" 。 コンテンツタイプの詳細については、cloud-init ドキュメントを参照してください。

    • ユーザーデータのコンテンツ、たとえば、シェルコマンドまたは cloud-init ディレクティブのリスト。

    • MIME マルチパートファイルの終わりを示す、終了境界: --==BOUNDARY==--

    以下は、独自のファイルを作成するために使用できる MIME マルチパートファイルの例です。

    MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo "Running custom user data script" --==MYBOUNDARY==--\

カスタム AMI の使用

特定のセキュリティ、コンプライアンス、または内部ポリシーの要件により、カスタム AMI を実行する必要がある場合、起動テンプレートを使用して、このような AMIs をマネージド型ノードグループにデプロイできます。詳細については、 の「Amazon マシンイメージ (AMI)Linux インスタンス用 Amazon EC2 ユーザーガイド」を参照してください。AMI ビルドの仕様には、Amazon EKS に基づいてカスタム Amazon EKS AMI を構築するためのリソースと設定スクリプトが含まれています。Amazon Linux 2詳細については、 の「Amazon EKSAMI ビルド仕様」を参照してください。GitHub 他のオペレーティングシステムでインストールされているカスタム AMIs を構築するには、 の「Amazon EKSカスタム AMIs のサンプル」を参照してください。GitHub

注記

カスタム AMI を使用している場合、Amazon EKS はユーザーデータをマージしません。むしろ、ノードがクラスターに参加するために必要なブートストラップコマンドを提供する責任があります。ノードがクラスターに参加できない場合、Amazon EKS CreateNodegroup および UpdateNodegroupVersion アクションも失敗します。

マネージド型ノードグループでカスタム AMI を使用するには、起動テンプレートの imageId フィールドで AMI ID を指定します。カスタム AMI の新しいバージョンにノードグループを更新するには、更新された AMI ID で起動テンプレートの新しいバージョンを作成し、新しい起動テンプレートバージョンでノードグループを更新します。

マネージド型ノードグループでカスタム AMIs を使用する場合の制限

  • 新しいノードグループを作成して、カスタムの AMIs と、Amazon EKS に最適化された AMIs を切り替える必要があります。

  • カスタム AMI を使用している場合、以下のフィールドを API で設定することはできません

    • amiType

    • releaseVersion

    • version

  • マネージド型ノードグループで Windows を使用できないため、カスタム AMI を Windows にすることはできません。