🐳
AWS Load Balancer ControllerでVPC IDが取得できずに立ち上がらなくなった時の対処方法
個人的に何度もぶち当たりがちなのでメモしておく。
に記述されている内容を自分用に整理したもの。
事象
- EKSのnode groupを更新して立ち上げ直して以降、ALB controllerのpodが永遠に立ち上がらなくなる
- vpc idを明示的に指定しなくても元々動いていたはずなのでおかしい
{"level":"error","ts":"2025-01-02T03:56:31Z","logger":"setup","msg":"unable to initialize AWS cloud","error":"failed to introspect vpcID from EC2Metadata or Node name, specify --aws-vpc-id instead if EC2Metadata is unavailable: failed to fetch VPC ID from instance metadata: EC2MetadataError: failed to make EC2Metadata request\n\n\tstatus code: 401, request id: "}
結論
- EKS node groupを立ち上げる際、hop limitを2以上にする
例:
eks_managed_node_groups = {
main20250101 = {
use_name_prefix = true
# metadataをハンドリングする
use_custom_launch_template = true
metadata_options = {
http_endpoint = "enabled"
# ここが最重要ポイント!!!
http_put_response_hop_limit = 3
http_tokens = "optional"
}
block_device_mappings = {
root = {
device_name = "/dev/xvda"
ebs = {
volume_size = "50"
volume_type = "gp3"
}
}
}
iam_role_additional_policies = {
ssm_managed_instance_core = data.aws_iam_policy.ssm_managed_instance_core.arn
}
desired_size = 2
max_size = 2
min_size = 2
instance_types = [
"t3.large",
]
}
}
原因
- Controllerがvpc idのメタデータを取得するために少なくともhop limitが2以上必要
- EKS で新しく標準サポートされたAmazon Linux 2023 (AL2023) AMIはIMDSv2 Requiredになっている
- AL2023のhop limitのdefaultは1なので、hop limitを調整せずに立ち上げてしまうと上記の事象が起きる
- IMDSv2(Instance Metadata Service Version 2)は、AWSのEC2インスタンスのメタデータにアクセスするための改善されたセキュアな方法
Discussion