🐳

AWS Load Balancer ControllerでVPC IDが取得できずに立ち上がらなくなった時の対処方法

に公開

個人的に何度もぶち当たりがちなのでメモしておく。

https://github.com/kubernetes-sigs/aws-load-balancer-controller/issues/3695

に記述されている内容を自分用に整理したもの。

事象

  • 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",
      ]
    }
  }

原因

Discussion