ワークロードの自動スケーリングで使用するカスタム指標と外部指標

このページでは、水平ポッド オートスケーラーが特定のワークロードのレプリカ数を自動的に調整するために使用するカスタム指標と外部指標について説明します。

垂直ポッド オートスケーラーと異なり、水平ポッド オーケストラーはワークロードの構成要求を変更しません。水平方向ポッド オートスケーラーは、レプリカの数だけをスケーリングします。

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

カスタム指標と外部指標はそれぞれ別のものです。

  • カスタム指標は、Kubernetes で実行中のアプリケーションから報告されます。詳細については、このトピックのカスタム指標をご覧ください。
  • 外部指標は、クラスタで実行されていませんが、Kubernetes アプリケーションに影響を及ぼすアプリケーションとサービスから報告されます。指標の詳細は、Cloud Monitoring または Pub/Sub のレポートで確認できます。

カスタム指標と外部指標ともに別の方向で機能します。たとえば、キュー内のタスク数が少ないと、アプリケーションが正常に実行され、スケールダウンの対象となる可能性があります。

詳細については、このトピックのカスタム指標または外部指標をご覧ください。

カスタム指標

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

カスタム指標は、次のいずれかの方法で選択できます。

  • 任意のノード、ポッド、任意の種類の Kubernetes オブジェクト。CustomResourceDefinition(CRD)などが含まれます。
  • Deployment のすべてのポッドによって報告された指標の平均値

ラベルのキーと値に selector フィールドを追加すると、ラベルを使用して指標をフィルタリングできます。たとえば、ラベル environment=prod 付きの指標のみを集計するように selector: "environment=prod" を設定します。複数のラベル式を組み合わせることができます。詳細については、Monitoring ドキュメントのログベースの指標ラベルを参照してください。

カスタム指標を使用するには、Google Cloud プロジェクトで Monitoring を有効にして、クラスタに Stackdriver アダプタをインストールする必要があります。カスタム指標を Monitoring にエクスポートした後、水平 Pod オートスケーラーによる自動スケーリング イベントをトリガーし、ワークロードの形状を変更できます。

カスタム指標は、アプリケーションから特定の形式でエクスポートする必要があります。Monitoring UI では、カスタム指標の自動作成に役立つ指標自動作成ツールを使用できます。この自動作成ツールでカスタム指標を作成すると、これらの指標は Monitoring によって自動的に検出されます。

詳細については、カスタム指標による Deployment の自動スケーリングに関するチュートリアルをご覧ください。

外部指標

Kubernetes の外部にあるアプリケーションやサービスのパフォーマンスに基づいてワークロードをスケーリングする必要がある場合は、外部指標を構成します。たとえば、未配信のメッセージが増加傾向にある場合は、Pub/Sub からのメッセージを取り込むために、アプリケーションの容量増加が必要になることがあります。

外部アプリケーションは、クラスタがアクセスできる Monitoring インスタンスに指標をエクスポートする必要があります。指標の傾向は時間とともに変化します。このため、水平 Pod オートスケーラーがワークロードの形状を自動的に変更します。

詳細については、外部指標を使用した Deployment の自動スケーリングに関するチュートリアルをご覧ください。

指標のインポート

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

  • Cloud Monitoring API を使用してアプリケーションから指標をエクスポートします。
  • Prometheus 形式で指標を送信するようにアプリケーションを構成します。その後、Prometheus-to-Stackdriver アダプタを実行します。これは、オープンソースの小さいサイドカー コンテナで、指標をスクラップして Monitoring 形式に変換し、Monitoring API に push します。

詳細については、Monitoring ドキュメントの指標の作成をご覧ください。

次のステップ