5.14. ノードあたりの Pod の最大数の設定
kublet の設定では、podsPerCore と maxPods パラメーターを使用して、ノードにスケジュールできる Pod の最大数を制御できます。両方のオプションを使用した場合、より低い値の方がノード上の Pod の数を制限します。適切な最大値を設定することで、ノードが効率的に動作することを確保できます。
たとえば、podsPerCore が 4 つのプロセッサーコアを持つノード上で、10 に設定されていると、ノード上で許容される Pod の最大数は 40 になります。
前提条件
-
設定したいノードの種類に対応するラベルが、静的
MachineConfigPoolCRD に関連付けられています。
手順
設定変更のためのカスタムリソース (CR) を作成します。
max-podsCR の設定例apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-max-pods spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" kubeletConfig: podsPerCore: 10 maxPods: 250 #...ここでは、以下のようになります。
metadata.name- CR の名前を指定します。
spec.machineConfigPoolSelector.matchLabels- マシン設定プールからラベルを指定します。
spec.kubeletConfig.podsPerCore- ノード上のプロセッサーコア数に基づいて、ノードが実行できる Pod の数を指定します。
spec.kubeletConfig.maxPodsノードのプロパティーに関係なく、ノードが実行できる Pod の数を固定値に指定します。
注記podsPerCoreを0に設定すると、この制限が無効になります。上記の例では、
podsPerCoreのデフォルト値は10であり、maxPodsのデフォルト値は250です。つまり、ノードのコア数が 25 以上でない限り、デフォルトによりpodsPerCoreが制限要素になります。
以下のコマンドを実行して CR を作成します。
$ oc create -f <file_name>.yaml
検証
変更が適用されているかどうかを確認するには、
MachineConfigPool のCRD をリスト表示します。変更が Machine Config Controller によって取得されると、UPDATING列でTrueと報告されます。$ oc get machineconfigpools出力例
NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False False False worker worker-8cecd1236b33ee3f8a5e False True False変更が完了すると、
UPDATED列にTrue が表示されます。$ oc get machineconfigpools出力例
NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False True False worker worker-8cecd1236b33ee3f8a5e True False False