私は多くのサービスを持っています。1 日のうち、いくつかのサービスが約 10 時間ビジーである一方で、他のほとんどのサービスはアイドル状態であるか、少量の CPU を使用しています。
以前は、すべてのサービスを 2 つの CPU を持つ仮想マシンに配置し、CPU の使用量によってスケーリングしました。最も忙しい時間には 2 つの仮想マシンがありますが、ほとんどの場合は 1 つしかありません。
サービス | インスタンス | 一日の忙しい時間 | ビジー状態の CPU (コア/サービス) |
アイドル時の CPU (コア/サービス) |
---|---|---|---|---|
忙しいサービス | 2 | 8~12時間 | 0.5~1 | 0.1~0.5 |
忙しいサービス | 2 | 8~12時間 | 0.3~0.8 | 0.1~0.3 |
非アクティブなサービス | 30 | 0~1時間 | 0.1~0.3 | < 0.1 |
今、私はそれらを kubernetes に入れたいです。各ノードには 2 つの CPU があり、ノードの自動スケーリングと HPA を使用します。ノードの自動スケーリングを行うには、すべてのサービスに対して要求の CPU を設定する必要があります。
これが私の設定です。
サービス | インスタンス | 忙しい時間 | CPU を要求します (CPU/サービス) |
合計リクエスト CPU |
---|---|---|---|---|
忙しいサービス | 2 | 8~12時間 | 300m | 600m |
忙しいサービス | 2 | 8~12時間 | 300m | 600m |
非アクティブなサービス | 30 | 0~1時間 | 100m | 3000m |
注: 非アクティブなサービス リクエストの CPU は、ビジー状態のときに 100m 未満であるとうまく動作しないため、100m に設定されています。
この設定では、ノードの数は常に 3 より多くなり、コストがかかりすぎます。問題は、これらのサービスが適切に動作するために 100m の CPU を必要とするにもかかわらず、ほとんどがアイドル状態であることだと思います。
すべてのサービスが自動スケーリングできることを心から願っています。これは、ポッドをより柔軟に割り当てるのに役立つ kubernetes の利点だと思います。私の考えは間違っていますか?非アクティブなサービスにリクエスト CPU を設定するべきではありませんか?
非アクティブなサービスを無視しても。多くの場合、kubernetes には 2 つ以上のノードがあることがわかりました。オフピーク時であっても、より多くのアクティブなサービスがある場合、リクエストの CPU は 2000m を超えます。解決策はありますか?