0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EKSでAWS Load Balancer Controllerが突然起動しない?原因はAmazon Linux 2023を使ってるからかも

Posted at

TL;DR

  • EKSのコンソール画面からノードグループを追加するとき、AMIタイプタイプをAmazon Linux 2023にすると AWS Loadbalancer Controllerが立ち上がらなくなることがある
  • 原因は、Amazon Linux 2023から、IMDSv2が必須設定になっておりIMDSv1が使えない
  • とりあえずノードグループを作成するときはAmazon Linux 2で作っておくのが良さそう

発生したこと

開発用のEKSクラスターでは、コスト削減のためにスポットインスタンスのみ利用してきました。
ある程度時間がかかるジョブのテストを行うために、オンデマンドインスタンスで新たなノードグループを追加し、スポットインスタンスを利用するノードグループを削除しました。

すると、AWS Loadbalancer ControllerのPodが立ち上がらなくなりました。
ログには以下のようなエラーログが。

failed to introspect region from EC2Metadata, specify --aws-region instead if EC2Metadata is unavailable

原因調査

IMDS

AWS EC2インスタンスにはIMDS(Instance Metadata Service)というものがあります。
これは、EC2インスタンスのメタデータを取得できるものです。

このIMDS経由でIAMロールの一時的な認証情報をとることができるというのがポイントです。

IMDSには2つのバージョンがあります。

  • IMDSv1(旧バージョン)
    HTTPリクエストでメタデータに直接アクセス可能(curl http://169.254.169.254/latest/meta-data/)
    セキュリティ上のリスク(サーバーサイドリクエストフォージェリ(SSRF)攻撃の可能性)

  • IMDSv2(セキュリティ強化版)
    セッションベースのトークン認証を導入
    PUT リクエストでトークンを取得し、そのトークンを使ってメタデータを取得

IMDSのホップ制限

IMDSv2のPUTリクエストは、ネットワークホップの上限が1となっています。
EC2の中で動くコンテナからのリクエストはネットワークホップが2になってしまうため、認証情報をとることができなくなっています。

IMDSv2の強制

調べてみると、EC2インスタンスのAMIタイプにおいてAmazon Linux 2では、IMDSv1もサポートしていますが、Amazon Linux 2023からはIMDSv1が使えなくなっている様子。
なので認証情報が取れなくなってしまったわけですね。

ノードグループを新たに追加するときに、デフォルト設定が変わっているのでした。

EC2の管理画面で、どうなっているか確認できます。

AMIタイプタイプにAmazon Linux 2023を指定したインスタンスは、IMDSv2しか使えない

Screenshot 2025-02-19 at 12.07.22.png

AMIタイプにAmazon Linux2を指定したインスタンスは、IMDSv1も使える

Screenshot 2025-02-19 at 12.07.07.png

解決策の調査

根本的な解決策

根本的な解決策としては、IMDSv2のホップ制限を増やすことです。

しかし残念ながら、EKSのコンソールをぽちぽちしてノードグループを作る際には変更することができません。

既存インスタンスについて、PUTリスポンスホップリミットの設定を変更することができます。
現在、PUT 応答ホップ制限の変更をサポートしているのはAWS CLI と AWS SDK のみです。

パッチ的な解決策

とりあえず、EKSでノードグループを追加するときにはAMIタイプタイプにAmazon Linux2を使い続けましょう。

Screenshot 2025-02-19 at 12.06.49.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?