このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
AWS Outposts で Amazon Linux ノードを作成する
重要
Outposts 上の Amazon EKS Local Clusters は、次の Amazon EKS 最適化 Amazon Linux 2023 AMI から作成されたノードのみをサポートします。
-
標準 Amazon Linux 2023 (
amazon-linux-2023/x86_64/standard) -
高速 Nvidia Amazon Linux 2023 (
amazon-linux-2023/x86_64/nvidia) -
高速 Neuron Amazon Linux 2023 (
amazon-linux-2023/x86_64/neuron)
AWS は、EKS AL2 最適化 AMI と AL2 高速化 AMI に対するサポートを、2025 年 11 月 26 日に終了しました。お客様は、こちらのサポート終了 (EOS) の日付 (2025 年 11 月 26 日) 以降も EKS AL2 AMI をご使用いただけますが、EKS はこの日以降、新しい Kubernetes バージョンや AL2 AMI の更新 (マイナーリリース、パッチ、バグ修正を含む) をリリースすることはありません。AL2 の非推奨の詳細については、こちらを参照してください。
このトピックは Amazon EKS クラスターに登録されている Outpost 上の Amazon Linux ノードの 自動スケーリング グループを起動する方法を説明します。クラスターはAWS クラウド または アウトポスト に置くことができます。
-
既存の アウトポスト。詳細については「AWS アウトポスト とは」を参照してください。
-
既存の Amazon EKS クラスター。AWS クラウド にクラスターをデプロイするには「Amazon EKS クラスターを作成します。」を参照してください。Outpost にクラスターをデプロイするには「高可用性を実現するために AWS Outposts でローカル Amazon EKS クラスターを作成する」を参照してください。
-
AWS クラウド のクラスターにノードを作成しており、AWS Outposts、AWS 波長、または AWS ローカルゾーン が有効になっている AWS リージョンにサブネットがあるとします。この場合、クラスターを作成したときに、これらのサブネットが渡されていない必要があります。Outpost 上のクラスターにノードを作成する場合はクラスターの作成時に Outpost サブネットを渡しておく必要があります。
-
(AWS クラウド上のクラスターに推奨) 必要な IAM ポリシーがアタッチされた独自の IAM ロールで設定された Amazon VPC CNI plugin for Kubernetes アドオン。詳細については、「IRSA を使用するように Amazon VPC CNI プラグインを設定する」を参照してください。ローカルクラスターはサービスアカウントの IAM ロールをサポートしていません。
eksctl または AWS マネジメントコンソール (AWS クラウドFormation テンプレートを使用) で、セルフマネージド型の Amazon Linux ノードグループを作成できます。Terraform を使用することもできます。
このページで説明されている以下のツールを使用して、ローカルクラスターのセルフマネージド型ノードグループを作成できます。
重要
-
セルフマネージド型ノードグループにはアカウント内の Amazon EC2 インスタンスが含まれています。これらのインスタンスはお客様または代わりに Amazon EKS がコント役割プレーンのバージョンを更新しても、自動的にはアップグレードされません。セルフマネージド型ノードグループは更新が必要であることをコンソールに表示しません。更新が必要なノードを確認するにはクラスターの [概要] タブにある [ノード] のリストからノードを選択して、そこにインストールされている
kubeletバージョンを表示します。ノードは手動で更新する必要があります。詳細については、「クラスターのためにセルフマネージドノードを更新する」を参照してください。 -
セルフマネージド型ノードで kubelet が使用する証明書は、1 年の有効期限で発行されます。デフォルトでは、証明書のローテーションは有効になっていません (https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration を参照)。つまり、セルフマネージド型ノードを 1 年以上にわたって実行し続けると、Kubernetes API に対して認証できなくなります。
-
ベストプラクティスとして、お客様は定期的にセルフマネージド型ノードグループを更新して、最新の Amazon EKS 最適化 AMI から CVE およびセキュリティパッチを受け取ることをお勧めします。セルフマネージド型ノードグループで使用される AMI を更新すると、ノードの再作成もトリガーされ、kubelet 証明書の有効期限が切れたことによる問題が発生しないようにします。
-
または、セルフマネージド型ノードグループの作成時にクライアント証明書のローテーション (https://kubernetes.io/docs/tasks/tls/certificate-rotation/ を参照) を有効にして、現在の証明書の有効期限が近づくと kubelet 証明書が更新されるようにすることもできます。
eksctl
eksctl を使用して自己管理型Linuxノードを起動するには
-
デバイスまたは AWS クラウドシェル にインストールされている
eksctlコマンドラインツールのバージョン0.215.0以降をインストールします。eksctlをインストールまたはアップグレードするにはeksctlドキュメントの「インストール」を参照してください。 -
クラスターが AWS クラウド にあり、AmazonEKS_CNI_Policy マネージド IAM ポリシーが Amazon EKS ノードの IAM ロールへアタッチされている場合は代わりに Kubernetes
aws-nodeサービスアカウントに関連付けた IAM ロールに割り当てることをお勧めします。詳細については、「IRSA を使用するように Amazon VPC CNI プラグインを設定する」を参照してください。クラスターが Outpost にある場合はポリシーをノードロールにアタッチする必要があります。 -
次のコマンドは既存のクラスターにノードグループを作成します。クラスターは
eksctlを使用して作成されている必要があります。al-nodesを、ノードグループの名前に置き換えます。ノードグループ名は 63 文字以下である必要があります。先頭は文字または数字でなければなりませんが、残りの文字にはハイフンおよびアンダースコアを含めることもできます。マイクラスターの部分は自分のクラスター名に置き換えます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前はクラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。クラスターが Outpost に存在する場合はidを Outpost サブネットの ID に置き換えます。AWS クラウド にクラスターが存在する場合、idをクラスターの作成時に指定しなかったサブネットの ID に置き換えます。残りのサンプル値は独自の値に置き換えます。デフォルトでは、ノードはコントロールプレーンと同じ Kubernetes バージョンで作成されます。インスタンス型を Outpost で利用可能なインスタンスタイプに置き換えます。マイキーを Amazon EC2 キーペアまたはパブリックキーの名前に置き換えます。このキーは起動後のノードに SSH 接続するために使用されます。Amazon EC2 キーペアをまだ持っていない場合はAWS マネジメントコンソール で作成できます。詳細については「Amazon EC2 ユーザーガイド」の「Amazon EC2 キーペア」を参照してください。次のコマンドを使用して、ノードグループを作成します。
eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false \ --node-volume-type gp2 --subnet-ids subnet-id \ --node-ami-family AmazonLinux2023クラスターを AWS クラウド 上にデプロイしている場合:
-
デプロイするノードグループではインスタンスのブロックとは異なる CIDR ブロックから
IPv4アドレスを Pod に割り当てることができます。詳細については、「カスタムネットワーキングを使用して代替サブネットに Pod をデプロイする」を参照してください。 -
デプロイするノードグループはアウトバウンドインターネットアクセスを必要としません。詳細については「インターネットアクセスが制限されたプライベートクラスターをデプロイする」を参照してください。
利用できるすべてのオプションとデフォルトの詳細なリストについては
eksctlドキュメントの「AWS Outposts サポート」を参照してください。 -
ノードがクラスターに参加できない場合は「Amazon EKS クラスターとノードに関する問題をトラブルシューティングする」の「ノードをクラスターに結合できません」および「AWS アウトポスト でローカル Amazon EKS クラスターをトラブルシューティングする」の「ノードをクラスターに結合できない」を参照してください。
-
出力例は次のとおりです。ノードの作成中に、複数の行が出力されます。出力の最後の行は次のサンプル行が表示されます。
[✔] created 1 nodegroup(s) in cluster "my-cluster"
-
-
(オプション) サンプルアプリケーションをデプロイして、クラスターと Linux ノードをテストします。
AWS マネジメントコンソール
ステップ 1: AWS マネジメントコンソール を使用してセルフマネージド型の リナックス ノードを起動する`
-
AWS クラウドフォーメーション テンプレートの最新バージョンをダウンロードします。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-24/amazon-eks-outpost-nodegroup.yaml -
AWS クラウドFormation コンソール
を開きます。 -
[スタックの作成] を選択し、[新しいリソースを使用 (標準)] を選択してください。
-
[テンプレートの指定] で、[テンプレートファイルのアップロード] を選択し、[ファイルを選択] を選択してください。前のステップでダウンロードした
amazon-eks-nodegroup.yamlファイルを選択し、[次へ] を選択してください。 -
[スタックの詳細の指定] ページで、必要に応じて次のパラメータを入力し、[次へ] を選択してください:
-
スタック名: AWS クラウドFormation スタックのスタック名を選択してください:例えば、
al-nodesという名前にすることができます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前はクラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。 -
ApiServerEndpoint: EKS コンソール、または DescribeCluster API で表示される Kubernetes API Server エンドポイントを入力します。
-
[クラスター名]: クラスターの名前を入力してください:この名前が、クラスター名と一致しない場合、ノードはクラスターに参加できません。
-
ClusterId: EKS サービスによってクラスターに割り当てられた ID を入力します。DescribeCluster API で表示されます。この ID が、クラスター ID と一致しない場合、ノードはクラスターに参加できません。
-
CertificateAuthority: Kubernetes の証明機関の base64 エンコード文字列を入力します。EKS コンソール、または DescribeCluster API で表示されます。
-
ServiceCidr: Kubernetes サービス CIDR を入力します。EKS コンソール、または DescribeCluster API で表示されます。
-
[クラスター制御プレーンセキュリティグループ]: VPC の作成時に生成した AWS クラウドフォーメーション 出力の [セキュリティグループs] 値を選択してください。
次のステップでは該当するグループを取得する 1 つのオペレーションを説明します。
-
Amazon EKS コンソール
を開きます。 -
クラスターの名前を選択してください。
-
[ネットワーキング] タブを選択してください。
-
[クラスター制御プレーンセキュリティグループ] ドロップダウンリストから選択する場合は[追加のセキュリティグループ] の値をリファレンスとして使用します。
-
-
[ノードグループ名]: ノードグループの名前を入力してください。この名前はノードに対して作成される自動スケーリングノードグループを識別するために後で使用できます。
-
[ノード自動スケーリンググループ最小サイズ]: ノードの 自動スケーリング グループがスケールインできる最小ノード数を入力してください:
-
ノード自動スケーリンググループ希望容量: スタック作成時にスケーリングする必要のあるノード数を入力してください。
-
[NodeAutoScalingGroupMaxSize]: ノードの 自動スケーリング グループがスケールアウトできる最大ノード数を入力してください。
-
[ノードインスタンス型]: ノードのインスタンスタイプを選択してください:クラスターが AWS クラウド で動作している場合は詳細については「最適な Amazon EC2 ノードインスタンスタイプを選択する」を参照してください。クラスターが Outpost で実行されている場合、Outpost で使用できるインスタンスタイプのみを選択できます。
-
[NodeImageIdSSMParam]: 最新の Amazon EKS 最適化 AMI の Amazon EC2 Systems Manager のパラメータが、可変 Kubernetes バージョン用に事前設定されています。Amazon EKS でサポートされている別の Kubernetes マイナーバージョンを使用するには、
1.XXを別のサポートされているバージョンに置き換えます。クラスターと同じ Kubernetes バージョンを指定することをお勧めします。Amazon EKS 最適化高速 AMI を使用するには、
NodeImageIdSSMParam値を目的の SSM パラメータに更新します。SSM から EKS AMI ID を取得する方法については、こちらを参照してください。注記
Amazon EKS ノード AMI は Amazon リナックス をベースとしています。Amazon Linux のセキュリティまたはプライバシーに関するイベントを、Amazon Linux セキュリティセンター
で追跡できます。そのためには目的のバージョンのタブを選択してください。該当する RSS フィードをサブスクライブすることもできます。セキュリティおよびプライバシーイベントには問題の概要、影響を受けるパッケージ、および問題を修正するためにインスタンスを更新する方法などがあります。 -
ノードイメージId: (オプション) (Amazon EKS 最適化 AMI の代わりに) 独自のカスタム AMI を使用している場合はAWS リージョンのノード AMI ID を入力してください。ここで値を指定すると、[ノードイメージIdSSMParam] フィールドの値はすべて上書きされます。
-
[ノードボリュームサイズ]: ノードのルートボリュームのサイズを GiB 単位で指定します。
-
[ノードボリューム型]: ノードのルートボリュームタイプを指定します。
-
[キー名]: 起動後に、SSH を使用してノードに接続するときに使用できる Amazon EC2 SSH キーペアの名前を入力してください。Amazon EC2 キーペアをまだ持っていない場合はAWS マネジメントコンソール で作成できます。詳細については「アマゾン EC2 ユーザーガイド」の「アマゾン EC2 キーペア」を参照してください。
注記
ここでキーペアを指定しないと、AWS クラウドフォーメーション スタックの作成は失敗します。
-
[無効IMDSv1]: 各ノードはデフォルトでインスタンスメタデータサービスバージョン 1 (IMDSv1) および IMDSv2 をサポートします。IMDSv1 は無効にできます。ノードグループ内の将来のノードおよび Pod が MDSv1 を使用しないようにするには DisableIMDSv1 を true に設定します。IDMS の詳細については「インスタンスメタデータサービスの設定」を参照してください。ノードでのそれへのアクセス制限について詳しくはワーカーノードに割り当てられたインスタンスプロファイルへのアクセスを制限する
を参照してください。 -
[VpcId]: 作成した VPC の ID を入力します:VPC を選択する前に、「VPC の要件と考慮事項」を確認してください。
-
[サブネット]: クラスターが Outpost にある場合、VPC 内で少なくとも 1 つのプライベートサブネットを選択してください:サブネットを選択する前に、「サブネットの要件と考慮事項」を確認してください。クラスターの [ネットワーキング] タブから、各サブネットリンクを開き、プライベートのサブネットを確認できます。
-
-
[スタックオプションの設定] ページで、希望する設定を選択し、[次へ] を選択してください。
-
[AWS クラウドフォーメーション が IAM リソースを作成する可能性を認識しています] の左にあるチェックボックスを選択して、[スタックの作成] を選択してください。
-
スタックの作成が完了したら、コンソールで選択し、[出力] を選択してください。
-
作成されたノードグループの [ノードインスタンス役割] を記録します。これはAmazon EKS ノードを設定する際、必要になります。
ステップ 2: ノードを有効にしてクラスターに参加する
-
aws-authConfigMapがすでにあるかどうかを確認します。kubectl describe configmap -n kube-system aws-auth -
aws-authConfigMapが表示されている場合は必要に応じて更新してください。-
編集する
ConfigMapを開きます。kubectl edit -n kube-system configmap/aws-auth -
必要に応じて新しい
mapRolesエントリを追加します。rolearn値を、前の手順で記録した [ノードインスタンス役割] 値に設定します。[...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...] -
ファイルを保存し、テキストエディタを終了します。
-
-
「
Error from server (NotFound): configmaps "aws-auth" not found」というエラーが表示されたら、ストックConfigMapを適用してください。-
設定マップをダウンロードします。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml -
aws-auth-cm.yamlファイルで、rolearnを前の手順で記録した [ノードインスタンス役割] 値に設定します。これを行うにはテキストエディタを使用するか、マイノードインスタンス役割を置き換えて次のコマンドを実行してください:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml -
設定を適用します。このコマンドが完了するまで数分かかることがあります。
kubectl apply -f aws-auth-cm.yaml
-
-
ノードのステータスを監視し、
Readyステータスになるまで待機します。kubectl get nodes --watchCtrl+Cを入力して、シェルプロンプトに戻ります。注記
認可またはリソースタイプのエラーが発生した場合はトラブルシューティングトピックの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。
ノードがクラスターに参加できない場合は「Amazon EKS クラスターとノードに関する問題をトラブルシューティングする」の「ノードをクラスターに結合できません」および「AWS アウトポスト でローカル Amazon EKS クラスターをトラブルシューティングする」の「ノードをクラスターに結合できない」を参照してください。
-
Amazon EBS CSI ドライバーをインストールします。詳細についてはGitHub の Installation
を参照してください。[ドライバーのアクセス許可を設定] セクションでは[IAM インスタンスプロファイルの使用] オプションの指示に従うことを確認します。 gp2ストレージクラスを使用する必要があります。gp3ストレージクラスはサポートされていません。クラスターの
gp2ストレージクラスを作成するには以下のステップを実行してください。-
次のコマンドを実行して、
gp2-storage-class.yamlファイルを作成します。cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF -
マニフェストをクラスターに適用します。
kubectl apply -f gp2-storage-class.yaml
-
-
(GPU ノードのみ) GPU インスタンスタイプと Amazon EKS 最適化アクセラレーション AMI を選択した場合はクラスター上の DaemonSet として NVIDIA device plugin for Kubernetes
を適用する必要があります。次のコマンドを実行する前に、 vX.X.Xを必要となる NVIDIA/k8s-device-pluginバージョンに置き換えます。 kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
ステップ 3: その他のアクション
-
(オプション) サンプルアプリケーションをデプロイして、クラスターと Linux ノードをテストします。
-
クラスターが Outpost にデプロイされている場合はこのステップをスキップしてください。クラスターが AWS クラウド にデプロイされている場合、次の情報はオプションです。AmazonEKS_CNI_Policy マネージド IAM ポリシーが Amazon EKS ノードの IAM ロールにアタッチされている場合は代わりに Kubernetes
aws-nodeサービスアカウントに関連付けた IAM ロールに割り当てることをお勧めします。詳細については、「IRSA を使用するように Amazon VPC CNI プラグインを設定する」を参照してください。