ワーカー・ノードのリソース予約

ワーカーノードのリソース予約について理解しておくことで、クラスタの容量計画や、ポッドのスケジューリングに関する問題のトラブルシューティングに役立ちます。

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を実行してください。

ワーカー・ノードの層別メモリー予約。 この表の最初の列にはメモリ階層、2列目には予約された割合または容量、残りの列には2種類のワーカーノードサイズに関する計算例が示されています。
この表は、ワーカーノードのメモリ予約量について示しています。 1列目にはメモリ階層が、2列目には各階層に割り当てられた割合または容量が示されており、残りの列には、16 GBのワーカーノードと256 GBのワーカーノードに関する計算例が記載されています。
メモリー層 予約される割合または量 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 予約。 この表の最初の列にはCPUティア、2列目には予約された割合または量、残りの列には2種類のワーカーノードサイズに関する計算例が示されています。
この表は、ワーカーノードのCPU予約量について示しています。 1列目にはCPUのティアが一覧表示され、2列目には各ティアに割り当てられた割合または量が示されており、残りの列には、4コアのワーカーノードと28コアのワーカーノードに関する計算例が記載されています。
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予約。 この表の1列目にはPID範囲の合計、2列目には予約済み割合、3列目にはポッドが利用可能な割合が示されており、残りの行には2種類のワーカーノードサイズに関する計算例が記載されています。
この表は、ワーカーノードのPID予約について示しています。 1列目にはPIDの範囲の合計が、2列目には予約済みの割合が、3列目にはポッドが利用可能な割合が記載されており、残りの行には、PIDが126,878個のワーカーノードと、PIDが2,062,400個のワーカーノードに関する計算例が示されています。
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%)
ワーカーノードのディスク一時ストレージの予約容量。 この表では、1列目にインフラストラクチャ・プロバイダ、2列目にディスクの種類、3列目に予約済みディスクの割合が示されています。
この表は、ワーカーノード用のディスク一時ストレージの予約容量について示しています。 1列目にはインフラストラクチャ・プロバイダー(Classic または VPC)が、2列目には使用されるディスクが、3列目には両方のプロバイダーでディスク容量の10%が予約されていることが示されています。
インフラストラクチャー・プロバイダー ディスク 予約済みディスクの割合
クラシック セカンダリー・ディスク 10%
VPC ブート・ディスク 10%

ワーカー・ノードのサンプル値は、例にすぎません。 実際の使用量は多少異なる場合があります。