このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
ハイブリッドノード用のオペレーティングシステムを準備する
Amazon Linux 2023 (AL2023)、Ubuntu、Red Hat Enterprise Linux (RHEL) は、ハイブリッドノードのノードオペレーティングシステムとして継続的に検証されます。AWS はこれらのオペレーティングシステムとのハイブリッドノード統合をサポートしていますが、オペレーティングシステム自体のサポートは提供していません。AL2023 は、Amazon EC2 の外部で実行される場合、AWS サポートプランの対象外です。AL2023 はオンプレミスの仮想化環境でのみ使用できます。詳細については、「Amazon Linux 2023 ユーザーガイド」を参照してください。
オペレーティングシステムのプロビジョニングと管理はお客様の責任となります。ハイブリッドノードを初めてテストする場合、プロビジョニング済みのホストで Amazon EKS Hybrid Nodes CLI (nodeadm
) を実行するのが最も簡単です。本稼働デプロイでは、ホスト起動時にホストを Amazon EKS クラスターに自動的に結合する systemd サービスとして実行するように設定された nodeadm
をオペレーティングシステムイメージに含めることをお勧めします。
バージョン互換性
以下の表は、ハイブリッドノードのノードオペレーティングシステムとしての使用に互換性があり、検証済みとなっているオペレーティングシステムのバージョンを示しています。オペレーティングシステムのこの表に記載されていないバリアントやバージョンを使用している場合、そのオペレーティングシステムのバリアントまたはバージョンとのハイブリッドノードの互換性は、AWS サポートの対象外となります。ハイブリッドノードは基盤となるインフラストラクチャに依存せず、x86 および ARM アーキテクチャに対応しています。
オペレーティングシステム | バージョン |
---|---|
アマゾン Linux |
Amazon Linux 2023 (AL2023) |
Ubuntu |
Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04 |
Red Hat Enterprise Linux |
RHEL 8、RHEL 9 |
オペレーティングシステムに関する考慮事項
全般
-
Amazon EKS Hybrid Nodes CLI (
nodeadm
) を使用すると、ハイブリッドノードのコンポーネントおよび依存関係のインストールと設定を簡素化できます。nodeadm install
プロセスは、オペレーティングシステムイメージのビルドパイプライン中、または各オンプレミスホストの実行時に実行できます。nodeadm
がインストールするコンポーネントの詳細については、「ハイブリッドノード nodeadm 参照」を参照してください。 -
オンプレミス環境でプロキシを使用してインターネットにアクセスしている場合、インストールおよびアップグレードのプロセスでパッケージマネージャーがプロキシを使用するよう設定するために、追加のオペレーティングシステム設定が必要です。手順については、「ハイブリッドノードのプロキシを設定する」を参照してください。
Containerd
-
Containerd は標準の Kubernetes コンテナランタイムであり、ハイブリッドノードのみならず、あらゆるコンピューティングタイプの Amazon EKS ノードの依存関係の 1 つです。Amazon EKS Hybrid Nodes CLI (
nodeadm
) は、nodeadm install
プロセス中に containerd のインストールを試みます。--containerd-source
コマンドラインオプションを使用して、nodeadm install
の実行時に containerd のインストールを設定できます。有効なオプションは、none
、distro
、docker
です。RHEL を使用している場合、distro
は有効なオプションではなく、Docker のリポジトリから containerd ビルドをインストールするようnodeadm
を設定するか、containerd を手動でインストールできます。AL2023 または Ubuntu を使用する場合、nodeadm
はオペレーティングシステムのディストリビューションから containerd をインストールするのがデフォルトになります。nodeadm で containerd をインストールしない場合は、--containerd-source none
オプションを使用します。
Ubuntu
-
Ubuntu 20.04 を使用している場合は、認証情報プロバイダーとして AWS Systems Manager のハイブリッドアクティベーションを使用する必要があります。AWSIAM Roles Anywhere は、Ubuntu 20.04 ではサポートされていません。
-
Ubuntu 24.04 を使用している場合、ポッドを適切に終了させるための修正を適用するために、containerd のバージョンを更新するか、AppArmor の設定を変更する必要がある場合があります。「Ubuntu #2065423
」を参照してください。AppArmor プロファイルに変更を適用するには、再起動が必要です。Ubuntu 24.04 の最新バージョンには、修正が含まれた更新版の containerd バージョン (containerd バージョン 1.7.19 以降) がパッケージマネージャーに含まれています。
RHEL
-
RHEL 8 を使用している場合は、認証情報プロバイダーとして AWS Systems Manager のハイブリッドアクティベーションを使用する必要があります。AWSIAM Roles Anywhere は RHEL 8 ではサポートされていません。
オペレーティングシステムイメージの構築
Amazon EKS は、nodeadm
を含み、ホスト起動時に実行するように設定されたオペレーティングシステムイメージを作成するために使用できる Packer テンプレートの例
前提条件
Packer テンプレートの例を使用する前に、Packer を実行しているマシンに以下がインストールされている必要があります。
-
Packer バージョン 1.11.0 以降。Packer のインストール手順については、「Packer documentation」の「nstall Packer
」を参照してください。 -
OVA を構築する場合、VMware vSphere プラグイン 1.4.0 以降
-
Qcow2
または raw イメージを構築する場合、QEMU プラグインバージョン 1.x
環境変数の設定
Packer ビルドを実行する前に、Packer を実行しているマシンで次の環境変数を設定します。
全般
いずれのオペレーティングシステムおよび出力形式においても、イメージを構築する際には、以下の環境変数を設定する必要があります。
環境変数 | タイプ | 説明 |
---|---|---|
PKR_SSH_PASSWORD |
String |
Packer は、プロビジョニング時に作成されたマシンに SSH 接続する際は、 |
ISO_URL |
String |
使用する ISO の URL。サーバーからダウンロードするウェブリンクでも、ローカルファイルへの絶対パスでもかまいません |
ISO_CHECKSUM |
String |
指定された ISO に関連するチェックサム。 |
CREDENTIAL_PROVIDER |
String |
ハイブリッドノードの認証情報プロバイダー。有効な値は |
K8S_VERSION |
String |
ハイブリッドノードの Kubernetes バージョン ( |
NODEADM_ARCH |
String |
|
RHEL
RHEL を使用している場合は、以下の環境変数を設定する必要があります。
環境変数 | タイプ | 説明 |
---|---|---|
RH_USERNAME |
String |
RHEL サブスクリプションマネージャーのユーザー名 |
RH_PASSWORD |
String |
RHEL サブスクリプションマネージャーのパスワード |
RHEL_VERSION |
String |
使用する RHEL の ISO のバージョン。有効な値は |
Ubuntu
Ubuntu 固有の環境変数は必要ありません。
vSphere
VMware vSphere OVA を構築する場合は、以下の環境変数を設定する必要があります。
環境変数 | タイプ | 説明 |
---|---|---|
VSPHERE_SERVER |
String |
vSphere のサーバーアドレス |
VSPHERE_USER |
String |
vSphere のユーザー名 |
VSPHERE_PASSWORD |
String |
vSphere のパスワード |
VSPHERE_DATACENTER |
String |
vSphere のデータセンター名 |
VSPHERE_CLUSTER |
String |
vSphere のクラスター名 |
VSPHERE_DATASTORE |
String |
vSphere のデータストア名 |
VSPHERE_NETWORK |
String |
vSphere のネットワーク名 |
VSPHERE_OUTPUT_FOLDER |
String |
テンプレート用の vSphere の出力フォルダ |
QEMU
環境変数 | タイプ | 説明 |
---|---|---|
PACKER_OUTPUT_FORMAT |
String |
QEMU ビルダーの出力形式。有効な値は、 |
テンプレートを検証する
環境変数を設定した後は、ビルドを実行する前に以下のコマンドでテンプレートを検証します。テンプレートに異なる名前を使用している場合は、template.pkr.hcl
を置き換えてください。
packer validate template.pkr.hcl
イメージを構築する
以下のコマンドを使用してイメージを構築し、-only
フラグを使用してイメージのターゲットとオペレーティングシステムを指定します。テンプレートに異なる名前を使用している場合は、template.pkr.hcl
を置き換えてください。
vSphere OVA
注記
vSphere で RHEL を使用している場合は、キックスタートファイルを OEMDRV イメージに変換し、起動元の ISO として渡す必要があります。詳細については、EKS ハイブリッドノードの GitHub リポジトリにある「Packer Readme
Ubuntu 22.04 OVA
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
Ubuntu 24.04 OVA
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
RHEL 8 OVA
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
RHEL 9 OVA
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
QEMU
注記
ビルダーのホストと一致しない特定のホストの CPU 用にイメージを構築する場合は、ホストの CPU に対応する名前を「QEMU-cpu
フラグを使用します。
Ubuntu 22.04 Qcow2/Raw
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
Ubuntu 24.04 Qcow2/Raw
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
RHEL 8 Qcow2/Raw
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
RHEL 9 Qcow2/Raw
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
nodeadm 設定を user-data を通して渡す
cloud-init を介して nodeadm
の設定を user-data で渡すことで、ホストの起動時にハイブリッドノードを設定し、自動的に EKS クラスターに接続することができます。以下は、ハイブリッドノードのインフラストラクチャとして VMware vSphere を使用する場合の実装例です。
-
GitHub の govc readme
の手順に従って govc
CLI をインストールします。 -
前のセクションで Packer ビルドを実行してテンプレートをプロビジョニングした後は、以下を使用してテンプレートをクローンし、複数の異なるノードを作成することができます。ハイブリッドノードに使用する新規 VM を作成するたびに、テンプレートをクローンする必要があります。以下のコマンド内の変数は、お使いの環境に応じた値に置き換えます。以下のコマンドの
VM_NAME
は、metadata.yaml
ファイルを介して VM の名前を注入する際にNODE_NAME
として使用されます。govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \ -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
-
各新規 VM のテンプレートをクローンした後は、VM の
metadata.yaml
とuserdata.yaml
を作成します。VM は同じuserdata.yaml
とmetadata.yaml
を共有でき、以下のステップで VM ごとにこれらを入力していきます。nodeadm
の設定は、userdata.yaml
のwrite_files
セクションで作成および定義されます。以下の例では、ハイブリッドノードのオンプレミス認証情報プロバイダーとして AWS SSM ハイブリッドアクティベーションを使用しています。nodeadm
設定の詳細については、「ハイブリッドノード nodeadm 参照」を参照してください。userdata.yaml:
#cloud-config users: - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu. passwd: # password to login. Default is 'builder' for RHEL. groups: [adm, cdrom, dip, plugdev, lxd, sudo] lock-passwd: false sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash write_files: - path: /usr/local/bin/nodeConfig.yaml permissions: '0644' content: | apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Cluster Name region: # AWS region hybrid: ssm: activationCode: # Your ssm activation code activationId: # Your ssm activation id runcmd: - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
metadata.yaml:
お使いの環境に応じた
metadata.yaml
を作成します。"$NODE_NAME"
変数の形式は、後続のステップで値が入力されるため、ファイル内にそのまま保持してください。instance-id: "$NODE_NAME" local-hostname: "$NODE_NAME" network: version: 2 ethernets: nics: match: name: ens* dhcp4: yes
-
以下のコマンドを使用して、
userdata.yaml
およびmetadata.yaml
ファイルをgzip+base64
文字列として追加します。以下のコマンドは、作成する VM ごとに実行する必要があります。VM_NAME
は、更新する VM の名前に置き換えてください。export NODE_NAME="VM_NAME" export USER_DATA=$(gzip -c9 <userdata.yaml | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64 envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
-
新しい VM の電源をオンにします。これにより、設定した EKS クラスターに自動的に接続されます。
govc vm.power -on "${NODE_NAME}"