2.4.2. HPA はどのように機能するか
Horizontal Pod Autoscaler (HPA) は、Pod オートスケーリングの概念を拡張するものです。HPA を使用すると、負荷分散されたノードグループを作成および管理できます。HPA は、所定の CPU またはメモリーのしきい値を超えると、Pod 数を自動的に増減させます。
図2.1 HPA の高レベルのワークフロー
HPA は、Kubernetes 自動スケーリング API グループの API リソースです。オートスケーラは制御ループとして動作し、同期期間のデフォルトは 15 秒です。この期間中、コントローラーマネージャーは、HPA の YAML ファイルに定義されている CPU、メモリー使用率、またはその両方を照会します。コントローラーマネージャーは、HPA の対象となる Pod ごとに、CPU やメモリーなどの Pod 単位のリソースメトリクスをリソースメトリクス API から取得します。
使用率の目標値が設定されている場合、コントローラーは、各 Pod のコンテナーにおける同等のリソース要求のパーセンテージとして使用率の値を計算します。次に、コントローラーは、対象となるすべての Pod の使用率の平均を取り、必要なレプリカの数をスケーリングするために使用される比率を生成します。HPA は、メトリクスサーバーが提供する metrics.k8s.io からメトリクスを取得するよう設定されています。メトリクス評価は動的な性質を持っているため、レプリカのグループに対するスケーリング中にレプリカの数が変動する可能性があります。
HPA を実装するには、対象となるすべての Pod のコンテナーにリソース要求が設定されている必要があります。