Kubernetes の容量計算ツール
ワークロードの Kubernetes クラスター ノード要件を計算する
Kubernetes の容量計算ツールの使い方
- 1CPU とメモリリクエスト値を 1 Pod に入力し、実行するコピーの数を入力します。
- 2ノード仕様(CPU/RAM)を入力し、システムに別途のコストを設定します。
- 3デプロイ前に必要なノード数とクラスターの利用状況を表示します。
推定Kubernetesクラスター容量
Node = ceil (total リクエスト / (node 容量 x (1 システムプリセット)); 利用 = 合計リクエスト / (ノード番号 x ノード容量)Kubernetes は、要求された値ではなく、制限に従って移動し、したがって、要求されたシステム Pod の合計をタンクのバッファに追加することによって計画されている必要があります。
各ノードでは、kube-system と expulsion の閾値に対して 10-20% がセットされます。これにより、スケジューラのマークがロード下で非移動性としてノードを回避できます。
K8s の容量計画は、**requests と limits の違いの理解に基づいています。**: `requests ' は、動きの基礎 (Kubelet は、ディスパッチャがPodの合計を決定することを少なくとも保証します) と `limits ' は、ハードリミット (CPU はスロットル速度制限の対象であり、メモリは OOMKilled の対象となります)。 **リクエストなしでのみ設定された制限は、一般的なエラーです ** — スケジューラは、Podがリソースではなく、ノードでオーバークローディングにつながると仮定します。
** ノード容量は100%使用不可** 3つの部分が削除される場合:1 **システム予約(kube-reserved /システム予約)** ** - 通常 CPU は 0.5–1 核, メモリは 1-2 GB の横に置きます; 2 ** ノードあたりのシステムコスト** — kubelet, コンテナの実行時間, ログ, モニターのエージェント, 通常 1-2 GB RAM; 3 ** デーモンセット職業** (ログ収集, ウェブプラグイン CNI, 監視, ストレージプラグイン) 通常 0.5 + 512 MB-1 GB. ** 空中値: 8 核 32 GB ノードは、実際に Pod に割り当てることができます 6 核 26 GB 核 26 GB 原子力 26 GB. ** 残留残高の1セント〜15パーセント当たりの最小10は、突然のオンセットとノーダルの故障の場合、重い展開のために脇に置かれます。
| タスク負荷 | requests.cpu | limits.cpu | requests.memory | limits.memory |
|---|---|---|---|---|
| Nginx静的サービス | 100m | 500m | 128Mi | 256Mi |
| Node.js API | 200m | 1000m | 256Mi | 512Mi |
| Java Spring Boot | 500m | 2000m | 1Gi | 2Gi(JVMスタックを含む) |
| Python Django (gunicorn) | 300m | 1000m | 512Mi | 1Gi |
| Redis キャッシュ | 500m | 2000m | 1Gi | 2Gi |
| PostgreSQL | 1000m | 4000m | 2Gi | 4Gi |
| Prometheus | 500m | 2000m | 2Gi | 4Gi |
K8s リソース要求と制限の典型的な構成
よくある質問
リクエスト制限のスケジュール
リクエストされた値を使用するスケジュール; 制限値のみの使用に限定され、低すぎると OOM をトリガーできます。
なぜノード容量を予約しますか?
kube-system Pod のしきい値と expulsion のしきい値には、残りの値が必要です。そうしないと、ノードは削除できません。
コンテナ化率が向上するにはどうすればよいですか?
リクエスト値の特定、ポロ分布を使用し、小さなノードの無駄な使用を避けます。
CPU はできます 性能の問題は、限られた原因ですか?
** はい、非常に隠されています**。 CPUの権利は、スロットルによって上回ることができるCFSクォータ(デフォルト100 msサイクル)を介して達成されます。 CPUのアプリケーションは低くなります(例えば、30%)が、遅延したサージとドロップ - ** 監視ツールは、通常、100 ms の粒径の発生時に限られた流れが起こるため見えません。 そのため、多くのチーム** がリクエストと CPU の権利のみを持っている理由です**。 メモリの制限を設定する必要があります(単一Podが全ノードのドラッグダウンを防ぐため)。 **容器cpu cfsスロットルド秒の合計は制限された流れを監視するのに使用することができます。 メニュー
QoSの影響は何ですか?
K8s は、** ノードが 3 つのレベルに従って再資源化されていた場合、誰が expelled されたかを判断しました。**Guaranteed** (requests = limits 、利用可能なものすべておよび等しい) は、最も優先的かつ重要な操作に適しています。** Burstable** (requests が、より大きい、または矛盾する) 媒体;** BestEffort** (nothing)。 メニュー そのため、キーサービスが保証される必要があります**。 また、メモリが不十分な場合(ノードOM)、K8sはQoSグレード+実際のメモリが要求のパーセンテージで使用されます。 安定的なクラスターの設計のためにこれが重要であることを理解して下さい。
