問題タブ [horizontal-pod-autoscaling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - k8s CPU とメモリ HPA を連携させる方法は?
以下のように、CPU とメモリに k8s HPA テンプレートを使用しています。
2 つの異なる HPA があると、ポッドの CPU 使用率が CPU のスケールダウン トリガーを下回っているため、メモリ HPA 制限をトリガーするためにスピンアップされた新しいポッドが CPU HPA によって即座に終了します。スピンアップされた最新のポッドが常に終了するため、古いポッドが保持され、メモリ HPA が再びトリガーされ、無限ループが発生します。毎回発生中のポッドではなく、使用率の高いポッドを終了するように CPU HPA に指示する方法はありますか?
kubernetes - Kubernetes で多数の非アクティブなポッドで CPU を効果的に使用する方法は?
私は多くのサービスを持っています。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 を超えます。解決策はありますか?