Member-only story

Custom Metrics上でスケーリングを使ってKubernetesアプリケーションを構築する方法 — 第2回

gavin.zhou
11 min readApr 23, 2020

--

Custom Metrics上でスケーリングを使ってKubernetesアプリケーションを構築する方法についての記事です。今回も長い記事なので2つに分けて投稿してます。今回は後半(最終章)です。手順4以降をご紹介します。

Part 4: Start scaling

Prometheus-Adapterは、k8sのAPI拡張機能であり、ユーザー設定のPrometheusクエリを使用してk8sリソースおよびカスタムメトリックAPIをどんどん埋めていきます。

これをクラスターにインストールし、ポッドごとにリクエストの割合を追跡するルールを追加します。 ルールは、Prometheus Adapterのヘルムチャートに追加するYAMLとして設定されています。

custom.metrics.k8s.ioを表示させるルールを設定する必要があります。

ルールコンフィグドキュメントからの引用は次のとおりです:

それぞれのルールは、おおよそ4つの部分に分けられます。

まずはDiscoveryという部分です。アダプターがこのルールのすべてのPrometheusメトリックを見つける方法を指定します。

2つめはAssociationです。特定のメトリックが関連付けられているKubernetesリソースをアダプターが決定する方法を指定します。

3つ目はNamingです。アダプタがカスタムメトリックAPIの中でメトリックをエクスポーズする方法を指定します。

4つ目はQueryingです。1つ以上のKubernetesオブジェクトの特定のメトリックに対するリクエストを、Prometheusへのクエリに変換する方法を指定します。

まずコンフィグファイルにルールキーを追加してみることから始めましょう。

rules: []

demo_app_button_clicks_totalという1つのメトリックのみを検出する必要があります。 ポッドラベルにnot null matchを追加して、ポッドラベルに関連付けられるようにします。

rules:- seriesQuery: 'demo_app_button_clicks_total{pod!=""}'

Association は非常にシンプルです:PrometheusのラベルはすべてKubernetesリソース(ジョブ、ネームスペース、ポッドなど)に直接マッピングされます。そのためテンプレートを使用してリソースをマップできます:

rules:- seriesQuery: 'demo_app_button_clicks_total{pod!=""}'

--

--

No responses yet