6.12.3. ノードのリソースの自動割り当て
OpenShift Container Platform では、特定のマシン設定プールに関連付けられたノードに対して、システムによって予約された 最適な CPU およびメモリーリソースを自動的に決定するように設定できます。OpenShift Container Platform は、ノードが起動する際に、これらの値でノードを更新します。
ノード上で system-reserved リソースを自動的に判断して割り当てるには、KubeletConfig カスタムリソース (CR) を作成して autoSizingReserved: true パラメーターを設定します。各ノードのスクリプトにより、各ノードにインストールされている CPU およびメモリーの容量に基づいて、予約されたそれぞれのリソースに最適な値が計算されます。増加した容量を考慮に入れたスクリプトでは、予約リソースにもこれに対応する増加を反映させることが必要になります。
最適な system-reserved 設定を自動的に判別することで、クラスターが効率的に実行され、CRI-O や kubelet などのシステムコンポーネントのリソース不足によりノードが失敗することを防ぐことができます。この際、値を手動で計算し、更新する必要はありません。デフォルトでは、system-reserved CPU は 500m で、system-reserved メモリーは 1Gi です。
この機能はデフォルトで無効にされています。
前提条件
-
設定したいノードの種類に対応するラベルが、静的オブジェクト
MachineConfigPoolに関連付けられています。
手順
設定変更のためのカスタムリソース (CR) を作成します。
リソース割り当て CR の設定例
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: dynamic-node spec: autoSizingReserved: true machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" #...各項目の説明:
metadata.name- CR の名前を指定します。
spec.autoSizingReserved-
OpenShift Container Platform が、指定されたラベルに関連付けられたノード上で、
システム予約リソースを決定および割り当てるかどうかを指定します。これらのノードでの自動割り当てを有効にするには、trueに設定してください。これらのノードでの自動割り当てを無効にするには、falseに設定してください。 spec.machineConfigPoolSelector.matchLabels- マシン設定プールから、自動リソース割り当てを有効または無効にするラベルを指定します。
上記の例では、すべてのワーカーノードでリソースの自動割り当てを有効にします。OpenShift Container Platform はノードの drain (Pod の退避) を実行し、kubelet 設定を適用してノードを再起動します。
次のコマンドを入力して CR を作成します。
$ oc create -f <file_name>.yaml
検証
次のコマンドを入力して、設定したノードにログインします。
$ oc debug node/<node_name>/hostをデバッグシェル内のルートディレクトリーとして設定します。# chroot /host/etc/node-sizing.envファイルを表示します。出力例
SYSTEM_RESERVED_MEMORY=3Gi SYSTEM_RESERVED_CPU=0.08kubelet は、
/etc/node-sizing.envファイルのsystem-reserved値を使用します。上記の例では、ワーカーノードには0.08CPU および 3 Gi のメモリーが割り当てられます。更新が適用されるまでに数分の時間がかかることがあります。