Closed2

AWS EKSでService(Type: LoadBalancer)を作成すると自動的にLBが生成されるので調査してみた結果

harrythecodeharrythecode

初めに

AWS EKS上でService(Type: LoadBalancer)を作成すると指定に応じたLBが生成されるので「何が」「どのように」動いているのかを調査します。

調査環境

  • AWS EKS v1.24の情報を元に調査

手がかり

AWS公式ドキュメント[1]には以下の記載があります。

タイプ LoadBalancer の Kubernetes Service を作成する際、デフォルトでは AWS クラウドプロバイダーロードバランサーコントローラーにより AWS Classic Load Balancer が作成されますが、AWS Network Load Balancer も作成できます。このコントローラーは、将来の重大なバグ修正のみを受けています。

そしてEKSのCloudWatch Logsには「cloud-controller-manager-xxx」というログが残されており、それをみていくと以下の行を発見。

I0317 07:25:37.371296 11 aws_loadbalancer.go:183] Creating load balancer for <namespace>/<servicename> with name: <loadBalancerName>

どうやらaws_loadbalancer.goの183行目に行くと該当のソースコードを発見できそうですね。

脚注
  1. https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/network-load-balancing.html ↩︎

harrythecodeharrythecode

調べてみる

"aws_loadbalancer.go" でGoogle検索すると以下のレポジトリを発見。ドンピシャですね。

https://github.com/kubernetes/cloud-provider-aws/blob/v1.26.1/pkg/providers/v1/aws_loadbalancer.go#L183

蛇足

昔はkubernetesレポジトリで管理されてたみたいですが各プロバイダごとにレポジトリを作って管理するようにしたみたいです。

https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider

このスクラップは2023/03/17にクローズされました