AWS Load Balancer Controllerで起きたサブネットのエラーを解決!

2023/06/10

AWSのEKSでAWS Load Balancer Controllerの設定をしていたら、「couldn't auto-discover subnets: subnets count less than minimal required count: 1 < 2」になってしまい、ALBを作成できなかったので原因と解決方法を調査しました。

エラー内容と原因

エラーについて

実際に出ていたエラーログは下記の内容でした。

{"level":"error","ts":1685589432.5153086,"logger":"controller-runtime.manager.controller.ingress","msg":"Reconciler error","name":"application-ingress","namespace":"default","error":"couldn't auto-discover subnets: subnets count less than minimal required count: 1 < 2"}

error の部分にかかれているエラーメッセージを読むとサブネットの最小数が2つなのに1つしかなくて満たしていないとのことなので、サブネットの設定を確認してみます。

原因について

エラーログをもとにAWSのマネージメントコンソールでサブネットの設定を確認したところ、タグが1つのサブネットにしか設定されていないことが確認でき、これが今回のエラーの原因でした。

参考情報に記載のドキュメントページに下記の一文があり、アベイラビリティーゾーンが異なっている必要があることもわかりました。

Application Load Balancer には、異なるアベイラビリティーゾーンに少なくとも 2 つのサブネットが必要です。

解決方法

AWSのマネージメントコンソールで対象のサブネットにタグをつけることで無事に解決しました。

タグの設定方法

付けるタグは、サブネットがプライベートかパブリックかで異なり、それぞれ下記のタグを設定します。

パブリックサブネットの場合

kubernetes.io/role/elb

プライベートサブネットの場合

kubernetes.io/role/internal-elb

タグ付け後、IngressとAWS Load Balancer Controllerの設定を念のためやり直すことでちゃんと反映されてエラーが解決できました。

参考情報

AWS Load Balancer Controller を使用してロードバランサーを作成する際の問題をトラブルシューティングするにはどうすればよいですか?

https://repost.aws/ja/knowledge-center/load-balancer-troubleshoot-creating