EKS Fargateでのオートスケール方法

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/fargate.html

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/metrics-server.html

  • values.yaml

  • helm add

  • add RBAC

EKS Fargate の kubelet は Webhook 認可を使用しており、metrics-server が kubelet のメトリクスエンドポイントにアクセスするには system:kubelet-api-admin ClusterRole が必要。

  • add HPA

  • 動作確認

EC2ノード場合は起きないが、EKS Fargateではpod IP = Fargate ノードの IP になる。Fargate kubelet は VPC 内でこの IPの port 10250を占有しているため、metrics-server のデフォルト(10250)のままだと kube-apiserverがmetrics-server のコンテナではなくFargate kubeletに到達してしまい、FailedDiscoveryCheckが発生する。

ちなみにprometheus-adapterでやろうと思ったが、カスタムメトリクス(リクエスト数、キュー数など)での HPA は可能。しかし、EKS FargateではAWS がノードを管理しているため、kubelet や cAdvisor のエンドポイント(:10250/metrics/cadvisor など)に直接アクセスできない制約があるのと、CPUやメモリで制御するにはCloudWatch Container InsightsやADOT(AWS Distro for OpenTelemetry)になるため、metrics-serverのほうがシンプルである。

Was this helpful?

0 / 0

コメントを残す