6.3.7. コンテナーイメージの並列プルの設定について
帯域幅の問題を制御するために、同時にプルできるワークロードイメージの数を設定できます。
デフォルトでは、クラスターはイメージを並列でプルするため、複数のワークロードが同時にイメージをプルできます。複数のイメージを並列でプルすると、ワークロードが互いを待たずに必要なイメージをプルできるため、ワークロードの起動時間が改善されます。ただし、同時にプルするイメージが多すぎると、ネットワーク帯域幅が過剰に使用され、クラスター全体で遅延の問題が発生する可能性があります。
デフォルト設定では、無制限の同時イメージプルが許可されます。ただし、並列でプルできるイメージの最大数を設定できます。イメージの逐次プルを強制することもできます。逐次プルの場合、一度にプルできるイメージは 1 つだけです。
同時にプルできるイメージの数を制御するには、kubelet 設定を使用して maxParallelImagePulls を設定し、制限を指定します。この制限を超える追加のイメージプルは、現在のいずれかのプルが完了するまで保留されます。
イメージの逐次プルを強制するには、kubelet 設定を使用して serializeImagePulls フィールドを true に設定します。
6.3.7.1. コンテナーイメージの並列プルの設定 リンクのコピーリンクがクリップボードにコピーされました!
kubelet 設定を使用すると、ワークロードで同時にプルできるイメージの数を制御できます。プルできるイメージの最大数を設定することも、イメージを 1 つずつプルするようワークロードに強制することもできます。
前提条件
- OpenShift Container Platform クラスターが実行中である。
- 管理者権限を持つユーザーとしてクラスターにログインしている。
手順
次のようなコマンドを実行して、並列プルを設定するマシン設定プールにカスタムラベルを適用します。
$ oc label machineconfigpool <mcp_name> parallel-pulls=setイメージの並列プルを設定するためのカスタムリソース (CR) を作成します。
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: parallel-image-pulls # ... spec: machineConfigPoolSelector: matchLabels: parallel-pulls: set kubeletConfig: serializeImagePulls: false maxParallelImagePulls: 3 # ...各項目の説明:
serializeImagePulls-
関連付けられたマシン設定プール内のノードに対して、並列プルが有効になっているかどうかを指定します。イメージの並列プルを有効にするには
falseに設定します。イメージの逐次プルを強制するにはtrueに設定します。デフォルトはfalseです。 maxParallelImagePulls-
同時に取得できるイメージの最大数を指定します。数値を入力するか、無制限に指定するには
nilに設定します。SerializeImagePullsがtrueの場合、このフィールドは設定できません。デフォルトはnilです。
次のようなコマンドを実行して、新しいマシン設定を作成します。
$ oc create -f <file_name>.yaml
検証
次のコマンドを実行して、マシン設定をチェックし、新しい設定が追加されたことを確認します。
$ oc get MachineConfigNAME GENERATEDBYCONTROLLER IGNITIONVERSION AGE 00-master 70025364a114fc3067b2e82ce47fdb0149630e4b 3.5.0 133m 00-worker 70025364a114fc3067b2e82ce47fdb0149630e4b 3.5.0 133m # ... 99-parallel-generated-kubelet 70025364a114fc3067b2e82ce47fdb0149630e4b 3.5.0 15s # ... rendered-parallel-c634a80f644740974ceb40c054c79e50 70025364a114fc3067b2e82ce47fdb0149630e4b 3.5.0 10s各項目の説明:
99-parallel-generated-kubelet-
新しいマシン設定を指定します。この例では、マシン設定は
parallelカスタムマシン設定プール用です。 rendered-parallel-<sha_numnber>-
レンダリングされた新しいマシン設定を指定します。この例では、マシン設定は
parallelカスタムマシン設定プール用です。
次のコマンドを実行して、
parallelマシン設定プール内のノードが更新されていることを確認します。$ oc get machineconfigpoolNAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE parallel rendered-parallel-3904f0e69130d125b3b5ef0e981b1ce1 False True False 1 0 0 0 65m master rendered-master-7536834c197384f3734c348c1d957c18 True False False 3 3 3 0 140m worker rendered-worker-c634a80f644740974ceb40c054c79e50 True False False 2 2 2 0 140mノードが更新されたら、並列プルの最大値が設定されていることを確認します。
次のようなコマンドを実行して、ノードへの
oc debugセッションを開きます。$ oc debug node/<node_name>次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして
/hostを設定します。sh-5.1# chroot /host次のコマンドを実行して、
kubelet.confファイルを調べます。sh-5.1# cat /etc/kubernetes/kubelet.conf | grep -i maxParallelImagePullsmaxParallelImagePulls: 3