問題タブ [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.

0 投票する
1 に答える
1171 参照

kubernetes - k8s CPU とメモリ HPA を連携させる方法は?

以下のように、CPU とメモリに k8s HPA テンプレートを使用しています。

2 つの異なる HPA があると、ポッドの CPU 使用率が CPU のスケールダウン トリガーを下回っているため、メモリ HPA 制限をトリガーするためにスピンアップされた新しいポッドが CPU HPA によって即座に終了します。スピンアップされた最新のポッドが常に終了するため、古いポッドが保持され、メモリ HPA が再びトリガーされ、無限ループが発生します。毎回発生中のポッドではなく、使用率の高いポッドを終了するように CPU HPA に指示する方法はありますか?

0 投票する
1 に答える
516 参照

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 を超えます。解決策はありますか?