このページでは、カスタム指標、外部指標、Prometheus 指標を使用して、特定のワークロードのレプリカ数を自動的に増減させる方法について説明します。
指標に基づいて自動スケーリングする理由
キューからタスクを pull して完了するアプリケーションを考えてみましょう。アプリケーションによっては、タスクの処理時間や保留中のタスク数についてサービスレベル目標(SLO)が設定されている場合もあります。キューが増加している場合、ワークロードより多くもレプリカがワークロードの SLO を満たす可能性がある。キューが空であるか、予想より早く減少している場合は、ワークロードの SLO を満たしながら、実行するレプリカ数を減らしてコストを抑えることができます。
カスタム指標、Prometheus 指標、外部指標について
カスタム指標、Prometheus、外部指標に基づいてワークロードをスケーリングできます。
カスタム指標は、Kubernetes で実行中のアプリケーションから報告されます。詳細については、カスタム指標と Prometheus 指標をご覧ください。
Managed Service for Prometheus からの指標は、カスタム指標の一種と見なされます。
外部指標は、クラスタで実行されていませんが、Kubernetes アプリケーションに影響を及ぼすアプリケーションとサービスから報告されます。たとえば、Pub/Sub や Dataflow など、Cloud Monitoring の任意の指標に基づいて自動スケーリングできます。Prometheus 指標には、自動スケーリングに使用可能でクラスタから省略されたデータが含まれています。詳細については、外部指標をご覧ください。
カスタム指標と Prometheus 指標
カスタム指標の作成と管理には、Prometheus 向けのマネージド サービスを使用することをおすすめします。Prometheus Query Language(PromQL)を使用して、Monitoring 内のすべての指標をクエリできます。詳細については、Prometheus 向けのマネージド サービスの水平 Pod 自動スケーリングをご覧ください。
アプリケーションから Monitoring にカスタム指標を報告できます。これらの指標に応答し、ワークロードを自動的に調整するように Kubernetes を構成できます。たとえば、1 秒あたりのクエリ数、1 秒あたりの書き込み数、ネットワーク パフォーマンス、別のアプリケーションとの通信遅延、ワークロードに適したその他の指標に基づいて、などの指標に基づいて、アプリケーションをスケーリングできます。詳細については、指標に基づいて Pod の自動スケーリングを最適化するをご覧ください。
外部指標
Kubernetes の外部にあるアプリケーションやサービスのパフォーマンスに基づいてワークロードをスケーリングする必要がある場合は、外部指標を構成します。たとえば、未配信のメッセージが増加傾向にある場合は、Pub/Sub からのメッセージを取り込むために、アプリケーションの容量増加が必要になることがあります。外部アプリケーションは、クラスタがアクセスできる Monitoring インスタンスに指標をエクスポートする必要があります。指標の傾向は時間とともに変化します。このため、HorizontalPodAutoscaler がワークロード内のレプリカ数を自動的に変更します。詳細については、指標に基づいて Pod の自動スケーリングを最適化するをご覧ください。
Monitoring に指標をインポートする
Monitoring に指標をインポートする方法は次のとおりです。
- Prometheus 向けのマネージド サービス(推奨)を構成する、または
- Cloud Monitoring API を使用してアプリケーションから指標をエクスポートします。
次のステップ
- Prometheus 向けのマネージド サービスに対して水平 Pod 自動スケーリングを有効にする方法を確認する。
- 水平 Pod 自動スケーリングの詳細を確認する。
- 垂直 Pod 自動スケーリングの詳細を確認する。