Member-only story
PrometheusアダプタによるKubeless関数のオートスケール化
Webエコシステムの一員としての私たちの関心事は、より多くの、より多くのリクエストを処理するアプリケーションをどうやって作り、どうやってそれを維持していくかということです。私は間違っているのでしょうか?
モノリス、マイクロサービス、ファンクションなど、何を持っていても、問題に対処する方法を作る必要があります。インフラに新しいマシンを追加したり(「はいはい、分かってるよ」なんて言わないでくださいね)、監視システムからのアクションを見て、赤いボタンをクリックして、新しいインスタンスを自動デプロイして、トラフィックを分割することもできます。あるいは、混乱する前にルールを作成し、スケーリングを自動化して、ゆったりと楽しむこともできます。
What about Kubernetes universe?
Kubernetesでは、HorizontalPodAutoscaler API(通称:HPA)を使ったやり取りに手を貸してくれます。「私のアプリケーションのメモリやCPUの消費量がX以上だったら、新しいPodを追加してください!」と簡単に言うことができます。metric-serverクラスタアドオンを使用している場合は、metrics.k8s.io APIでこれらの値を取得できます。
ニーズがCPUやメモリの消費量と異なる場合は?
例えば、1分あたりのリクエスト数に応じて、アプリケーションを拡張したい。これはウェブにとって最も自然な願いではないでしょうか?あるいは、この物語の主な目的である、*総コール数によって自分の機能をスケールアップしたいと思います。
Let’s say hello to custom metric. You can create your own custom adapters to collect your own metrics or you could use known solutions. At the end of the road, you reach the values with custom.metrics.k8s.io API.
カスタム・メトリックから始めましょう。独自のカスタムアダプタを作成して独自のメトリクスを収集することもできますし、既知のソリューションを使用することもできます。最終的には、custom.metrics.k8s.io APIで値に到達します。
ストーリーを通して、Kubeless関数のメトリクスを収集し、関数をオートスケールするための既知のソリューションとして、Prometheus Adapterを使用します。
Let’s do it!
始める前に、環境を整える必要があります。
Kubernetesのバージョン1.16.13
Prometheusのバージョン2.20.1