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