指標に基づくワークロードの自動スケーリングについて


このページでは、カスタム指標、外部指標、Prometheus 指標を使用して、特定のワークロードのレプリカ数を自動的に増減させる方法について説明します。

指標に基づいて自動スケーリングする理由

キューからタスクを pull して完了するアプリケーションを考えてみましょう。アプリケーションによっては、タスクの処理時間や保留中のタスク数についてサービスレベル目標(SLO)が設定されている場合もあります。キューが増加している場合、ワークロードより多くもレプリカがワークロードの SLO を満たす可能性があります。キューが空であるか、予想より早く減少している場合は、ワークロードの SLO を満たしながら、実行するレプリカ数を減らしてコストを抑えることができます。

カスタム指標、Prometheus 指標、外部指標について

カスタム指標、Prometheus、外部指標に基づいてワークロードをスケーリングできます。

カスタム指標は、Kubernetes で実行中のアプリケーションから報告されます。詳細については、カスタム指標と Prometheus 指標をご覧ください。

Managed Service for Prometheus からの指標は、カスタム指標の一種と見なされます。

外部指標は、クラスタで実行されていませんが、Kubernetes アプリケーションに影響を及ぼすアプリケーションとサービスから報告されます。たとえば、Pub/Sub や Dataflow など、Cloud Monitoring の任意の指標に基づいて自動スケーリングできます。Prometheus 指標には、自動スケーリングに使用可能でクラスタから省略されたデータが含まれています。詳細については、外部指標をご覧ください。

カスタム指標と Prometheus 指標

カスタム指標の作成と管理には、Managed Service for Prometheus を使用することをおすすめします。Prometheus Query Language(PromQL)を使用して、Monitoring 内のすべての指標をクエリできます。詳細については、Managed Service for Prometheus の水平 Pod 自動スケーリングをご覧ください。

アプリケーションから Monitoring にカスタム指標を報告できます。これらの指標に応答し、ワークロードを自動的に調整するように Kubernetes を構成できます。たとえば、秒間クエリ数、1 秒あたりの書き込み数、ネットワーク パフォーマンス、別のアプリケーションとの通信のレイテンシ、ワークロードに適したその他の指標などに基づいて、アプリケーションをスケーリングできます。詳細については、指標に基づいて Pod の自動スケーリングを最適化するをご覧ください。

外部指標

Kubernetes の外部にあるアプリケーションやサービスのパフォーマンスに基づいてワークロードをスケーリングする必要がある場合は、外部指標を構成します。たとえば、未配信のメッセージが増加傾向にある場合は、Pub/Sub からのメッセージを取り込むために、アプリケーションの容量増加が必要になることがあります。外部アプリケーションは、クラスタがアクセスできる Monitoring インスタンスに指標をエクスポートする必要があります。指標の傾向は時間とともに変化します。このため、HorizontalPodAutoscaler がワークロード内のレプリカ数を自動的に変更します。詳細については、指標に基づいて Pod の自動スケーリングを最適化するをご覧ください。

Monitoring に指標をインポートする

Monitoring に指標をインポートする方法は次のとおりです。

次のステップ