ワーカー・ノードのリソース予約
ワーカーノードのリソース予約について理解しておくことで、クラスタの容量計画や、ポッドのスケジューリングに関する問題のトラブルシューティングに役立ちます。
IBM Cloud Kubernetes Service では、各ワーカー・ノードで使用できるコンピュート・リソースを制限するコンピュート・リソース予約が設定されています。 予約済みのメモリー、CPU リソース、およびプロセス ID (PID) は、ワーカー・ノード上のポッドでは使用できません。これらは、各ワーカー・ノード上の割り振り可能リソースを削減します。 最初にポッドをデプロイするときに、ワーカー・ノードに十分な割り振り可能リソースがなければ、そのデプロイは失敗します。 さらにまた、ポッドがメモリーおよび CPU のワーカー・ノード・リソース制限を超えた場合、そのポッドは強制除去されます。 Kubernetes では、この制限は「 ハード・エヴィクション・スレッショルド 」と呼ばれています。 PID の制限を超えた場合、ポッドは割り振り可能な限り多くの PID を受け取ります。PID のためにポッドが強制除去されることはありません。
資源の埋蔵量をいつ確認すべきか
以下の場合は、ワーカーノードのリソース予約状況を確認してください:
- クラスタの容量を計画し、必要なワーカーノードの数を決定する
- ポッドのスケジューリング失敗やエヴィクションのトラブルシューティング
- ワークロードに割り当て可能なリソースの算出
- クラスタにワーカーノードを追加する必要があるかどうかの判断
ワーカーノードが確保しているPID、CPU、またはメモリよりも利用可能なリソースが少ない場合、 Kubernetes は、十分な計算リソースとPIDを確保するために、ポッドの強制終了を開始します。 別のワーカー・ノードが使用可能であれば、ポッドはそのワーカー・ノードにスケジュール変更されます。 ポッドが頻繁にエヴィクションされる場合は、クラスターにワーカーノードを追加するか、ポッド のリソース制限を設定してください。
リソース予約階層の理解
ワーカーノードに割り当てられるリソースは、そのワーカーノードが備えているPID数、CPU、およびメモリの量によって異なります。 IBM Cloud Kubernetes Service では、以下の表に示すように、PID、CPU、およびメモリの各階層が定義されています。 ワーカーノードに複数の階層の演算リソースが用意されている場合、PID、CPU、およびメモリリソースの一定割合が各階層ごとに確保されます。
クラスターでは、ポッドによる PID の過剰使用を防止するため、また、kubelet や他の IBM Cloud Kubernetes Service システム・コンポーネントのために十分な PID を確保するために、プロセス ID (PID) の予約と制限も設定されています。 PID の予約や制限に達した場合は、十分なプロセスが削除されて既存の PID が解放されるまで、Kubernetes は新規 PID の作成も割り当ても行いません。 1 ワーカー・ノードの
PID の総数は、大まかに、ワーカー・ノードのメモリー 1 GB につき PID 8,000 個という計算になります。 例えば、メモリーを 16 GB 搭載したワーカー・ノードの場合、PID の数は約 128,000 個になります (16 × 8,000 = 128,000)。
ワーカーノードで現在どれだけのコンピューティングリソースが使用されているかを確認するには、次のコマンドを実行します。 kubectl top nodeを実行してください。
| メモリー層 | 予約される割合または量 | b3c.4x16 ワーカー・ノード (16 GB) の例 |
mg1c.28x256 ワーカー・ノード (256 GB) の例 |
|---|---|---|---|
| 最初の 4 GB (0 GB から 4 GB) | メモリーの 25% | 1 GB | 1 GB |
| 次の 4 GB (5 GB から 8 GB) | メモリーの 20% | 0.8 GB | 0.8 GB |
| 次の 8 GB (9 GB から 16 GB) | メモリーの 10% | 0.8 GB | 0.8 GB |
| 次の 112 GB (17 GB から 128 GB) | メモリーの 6% | 該当なし | 6.72 GB |
| 残りGB(129GB以上) | メモリーの 2% | 該当なし | 2.54 GB |
kubelet 立ち退きのための追加準備金 |
100 MB | 100 MB (一定) | 100 MB (一定) |
| 合計予約量 | (さまざま) | 合計 16 GB のうち 2.7 GB | 合計 256 GB のうち 11.96 GB |
| CPU 層 | 予約される割合または量 | b3c.4x16 ワーカー・ノード (4 コア) の例 |
mg1c.28x256 ワーカー・ノード (28 コア) の例 |
|---|---|---|---|
| 最初のコア (コア 1) | 6% コア | 0.06 コア | 0.06 コア |
| 次の 2 つのコア (コア 2 から 3) | 1% コア | 0.02 コア | 0.02 コア |
| 次の 2 つのコア (コア 4 から 5) | 0.5% コア | 0.005 コア | 0.01 コア |
| 残りのコア (コア 6 以上) | 0.25% コア | 該当なし | 0.0575 コア |
| 合計予約量 | (さまざま) | 合計 4 コアのうち 0.085 コア | 合計 28 コアのうち 0.1475 コア |
| PID の総数 | 予約率 | ポッドで使用できる割合 |
|---|---|---|
| < 200,000 | 20% PID | 35% PID |
| 200,000 - 499,999 | 10% PID | 40% PID |
| ≥ 500,000 | 5% PID | 45% PID |
b3c.4x16 ワーカー・ノード: 126,878 PID |
25,376 PID (20%) | 44,407 PID (35%) |
mg1c.28x256 ワーカー・ノード: 2,062,400 PID |
103,120 PID (5%) | 928,085 PID (45%) |
| インフラストラクチャー・プロバイダー | ディスク | 予約済みディスクの割合 |
|---|---|---|
| クラシック | セカンダリー・ディスク | 10% |
| VPC | ブート・ディスク | 10% |
ワーカー・ノードのサンプル値は、例にすぎません。 実際の使用量は多少異なる場合があります。