スキップしてコンテンツを表示

EKSのAL2023(Amazon Linux 2023)を使用したノードでPod数の上限緩和を行う方法

0

EKSのノードに起動テンプレートでAL2023を使用した場合ノードで、Pod数の上限緩和を行う手順を教えてください。 Amazon Linux2では以下の手順を行うことでPod数の上限緩和を行えましたが、AL2023では行えませんでした。 <AL2での手順> ・起動テンプレートの作成  AMIは「ami-0e4dbdf4c1758cd37」を使用  UserDataに以下のスクリプトをエンコードして指定  -----  #!/bin/bash  set -o xtrace  /etc/eks/bootstrap.sh {クラスタ名}  ----- ・Kubernetesのリソース(DaemonSet)の環境変数変更 kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true kubectl set env daemonset aws-node -n kube-system WARM_PREFIX_TARGET=1

よろしくお願いします。

質問済み 7ヶ月前168ビュー
1回答
-1

Amazon EKS で Amazon Linux 2023 (AL2023) を使用したノードで Pod 数の上限緩和を行うには、以下の手順を実施します。

  1. 起動テンプレートの作成時に、AL2023 用の適切な AMI を選択します。

  2. 起動テンプレートの UserData セクションに以下のスクリプトを設定します(MIME 形式で指定する必要があります):

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -ex
/etc/eks/bootstrap.sh {クラスタ名} \
--b64-cluster-ca {証明書データ} \
--apiserver-endpoint {APIサーバーエンドポイント} \
--dns-cluster-ip {サービスCIDR.10} \
--kubelet-extra-args '--max-pods={最大Pod数の値}' \
--use-max-pods false

--==MYBOUNDARY==--
  1. Amazon VPC CNI プラグインの設定を変更して、プレフィックス委任を有効にします:
kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
  1. ウォームプレフィックスターゲットを設定します(オプション):
kubectl set env daemonset aws-node -n kube-system WARM_PREFIX_TARGET=1

プレフィックス委任を有効にすることで、VPC CNI は IP アドレスのプレフィックスを事前に割り当て、Pod の起動時間を短縮できます。これは特に多くの Pod を実行する場合や、AI/ML ワークロードのような大きな Pod を素早くスケールする必要がある場合に有効です。

AL2023 を使用する場合も基本的な手順は AL2 と同様ですが、起動テンプレートの UserData 部分で正しい形式(MIME 形式)を使用し、必要なパラメータ(証明書、API エンドポイント、DNS クラスター IP など)を指定することが重要です。
Sources
Troubleshoot Amazon EKS managed node groups and launch template issues | AWS re:Post
Increase the available IP addresses for your Amazon EKS node - Amazon EKS
Networking - Amazon EKS

回答済み 7ヶ月前
  • 回答ありがとうございます。

    UserDataセクションに教えた頂いた以下のサンプルを参考にエンコードした文字列を指定して起動テンプレートを作成しました。(サンプル値は正しい値に変更しました。) ・userdata.txtというファイルを作成 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

    --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii"

    #!/bin/bash set -ex /etc/eks/bootstrap.sh {クラスタ名} --b64-cluster-ca {証明書データ} --apiserver-endpoint {APIサーバーエンドポイント} --dns-cluster-ip {サービスCIDR.10} --kubelet-extra-args '--max-pods={最大Pod数の値}' --use-max-pods false

    --==MYBOUNDARY==--

    その後、作成した起動テンプレートとバージョンを指定してノードグループを作成しましたが、EC2は起動しましたが、ノードグループの作成はエラーとなってしまいました。 原因を切り分けるために、EC2にsshログインし以下のログを確認しました。 sh-5.2$ sudo cat /var/log/cloud-init-output.log Cloud-init v. 22.2.2 running 'init' at Mon, 14 Jul 2025 06:59:39 +0000. Up 8.24 seconds. :(省略) !!!!!!!!!! !!!!!!!!!! ERROR: bootstrap.sh has been removed from AL2023-based EKS AMIs. !!!!!!!!!! !!!!!!!!!! EKS nodes are now initialized by nodeadm. !!!!!!!!!! !!!!!!!!!! To migrate your user data, see: !!!!!!!!!! !!!!!!!!!! https://awslabs.github.io/amazon-eks-ami/nodeadm/ !!!!!!!!!!

    2025-07-14 06:59:42,190 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts) 2025-07-14 06:59:42,191 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3.9/site-packages/cloudinit/config/cc_scripts_user.py'>) failed Cloud-init v. 22.2.2 finished at Mon, 14 Jul 2025 06:59:42 +0000. Datasource DataSourceEc2. Up 11.25 seconds sh-5

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ