This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. MCO 関連のカスタムリソースの設定
MCO は MachineConfig
オブジェクトを管理する以外にも、2 つのカスタムリソース (CR)(KubeletConfig
および ContainerRuntimeConfig
) を管理します。これらの CR を使用すると、Kubelet および CRI-O コンテナーランタイムサービスの動作に影響を与えるノードレベルの設定を変更することができます。
3.3.1. kubelet パラメーターを編集するための KubeletConfig CRD の作成 リンクのコピーリンクがクリップボードにコピーされました!
kubelet 設定は、現時点で Ignition 設定としてシリアル化されているため、直接編集することができます。ただし、新規の kubelet-config-controller
も Machine Config Controller (MCC) に追加されます。これにより、KubeletConfig
カスタムリソース (CR) を使用して kubelet パラメーターを編集できます。
kubeletConfig
オブジェクトのフィールドはアップストリーム Kubernetes から kubelet に直接渡されるため、kubelet はそれらの値を直接検証します。kubeletConfig
オブジェクトに無効な値により、クラスターノードが利用できなくなります。有効な値は、Kubernetes ドキュメント を参照してください。
以下のガイダンスを参照してください。
-
マシン設定プールごとに、そのプールに加える設定変更をすべて含めて、
KubeletConfig
CR を 1 つ作成します。同じコンテンツをすべてのプールに適用している場合には、すべてのプールにKubeletConfig
CR を 1 つだけ設定する必要があります。 -
既存の
KubeletConfig
CR を編集して既存の設定を編集するか、変更ごとに新規 CR を作成する代わりに新規の設定を追加する必要があります。CR を作成するのは、別のマシン設定プールを変更する場合、または一時的な変更を目的とした変更の場合のみにして、変更を元に戻すことができるようにすることをお勧めします。 -
必要に応じて、クラスターごとに 10 を制限し、複数の
KubeletConfig
CR を作成します。最初のKubeletConfig
CR について、Machine Config Operator (MCO) はkubelet
で追加されたマシン設定を作成します。それぞれの後続の CR で、コントローラーは数字の接尾辞が付いた別のkubelet
マシン設定を作成します。たとえば、kubelet
マシン設定があり、その接尾辞が-2
の場合に、次のkubelet
マシン設定には-3
が付けられます。
マシン設定を削除する場合は、制限を超えないようにそれらを逆の順序で削除する必要があります。たとえば、kubelet-3
マシン設定を、kubelet-2
マシン設定を削除する前に削除する必要があります。
接尾辞が kubelet-9
のマシン設定があり、別の KubeletConfig
CR を作成する場合には、kubelet
マシン設定が 10 未満の場合でも新規マシン設定は作成されません。
KubeletConfig
CR の例
oc get kubeletconfig
$ oc get kubeletconfig
NAME AGE set-max-pods 15m
NAME AGE
set-max-pods 15m
KubeletConfig
マシン設定を示す例
oc get mc | grep kubelet
$ oc get mc | grep kubelet
... 99-worker-generated-kubelet-1 b5c5119de007945b6fe6fb215db3b8e2ceb12511 3.2.0 26m ...
...
99-worker-generated-kubelet-1 b5c5119de007945b6fe6fb215db3b8e2ceb12511 3.2.0 26m
...
以下の手順は、ワーカーノードでノードあたりの Pod の最大数を設定する方法を示しています。
前提条件
設定するノードタイプの静的な
MachineConfigPool
CR に関連付けられたラベルを取得します。以下のいずれかの手順を実行します。マシン設定プールを表示します。
oc describe machineconfigpool <name>
$ oc describe machineconfigpool <name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc describe machineconfigpool worker
$ oc describe machineconfigpool worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ラベルが追加されると、
labels
の下に表示されます。
ラベルが存在しない場合は、キー/値のペアを追加します。
oc label machineconfigpool worker custom-kubelet=set-max-pods
$ oc label machineconfigpool worker custom-kubelet=set-max-pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
これは、選択可能なマシン設定オブジェクトを表示します。
oc get machineconfig
$ oc get machineconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトで、2 つの kubelet 関連の設定である
01-master-kubelet
および01-worker-kubelet
を選択できます。ノードあたりの最大 Pod の現在の値を確認します。
oc describe node <node_name>
$ oc describe node <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc describe node ci-ln-5grqprb-f76d1-ncnqq-worker-a-mdv94
$ oc describe node ci-ln-5grqprb-f76d1-ncnqq-worker-a-mdv94
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Allocatable
スタンザでvalue: pods: <value>
を検索します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワーカーノードでノードあたりの最大の Pod を設定するには、kubelet 設定を含むカスタムリソースファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記kubelet が API サーバーと通信する速度は、1 秒あたりのクエリー (QPS) およびバースト値により異なります。デフォルト値の
50
(kubeAPIQPS
の場合) および100
(kubeAPIBurst
の場合) は、各ノードで制限された Pod が実行されている場合には十分な値です。ノード上に CPU およびメモリーリソースが十分にある場合には、kubelet QPS およびバーストレートを更新することが推奨されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルを使用してワーカーのマシン設定プールを更新します。
oc label machineconfigpool worker custom-kubelet=large-pods
$ oc label machineconfigpool worker custom-kubelet=large-pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KubeletConfig
オブジェクトを作成します。oc create -f change-maxPods-cr.yaml
$ oc create -f change-maxPods-cr.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KubeletConfig
オブジェクトが作成されていることを確認します。oc get kubeletconfig
$ oc get kubeletconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE set-max-pods 15m
NAME AGE set-max-pods 15m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター内のワーカーノードの数によっては、ワーカーノードが 1 つずつ再起動されるのを待機します。3 つのワーカーノードを持つクラスターの場合は、10 分 から 15 分程度かかる可能性があります。
変更がノードに適用されていることを確認します。
maxPods
値が変更されたワーカーノードで確認します。oc describe node <node_name>
$ oc describe node <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Allocatable
スタンザを見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、
pods
パラメーターはKubeletConfig
オブジェクトに設定した値を報告するはずです。
KubeletConfig
オブジェクトの変更を確認します。oc get kubeletconfigs set-max-pods -o yaml
$ oc get kubeletconfigs set-max-pods -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドでは
status: "True"
とtype:Success
が表示されるはずです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. CRI-O パラメーターを編集するための ContainerRuntimeConfig CR の作成 リンクのコピーリンクがクリップボードにコピーされました!
特定のマシン設定プール (MCP) に関連付けられたノードの OpenShift Container Platform CRI-O ランタイムに関連付けられる設定の一部を変更することができます。ContainerRuntimeConfig
カスタムリソース (CR) を使用して、設定値を設定し、MCP に一致するラベルを追加します。次に、MCO は関連付けられたノードで crio.conf
および storage.conf
設定ファイルを更新された値を使用して再ビルドします。
ContainerRuntimeConfig
CR を使用して実装された変更を元に戻すには、CR を削除する必要があります。マシン設定プールからラベルを削除しても、変更は元に戻されません。
ContainerRuntimeConfig
CR を使用して以下の設定を変更することができます。
-
PIDs limit:
pidsLimit
パラメーターは、コンテナーで許可されるプロセスの最大数である CRI-Opids_limit
パラメーターを設定します。デフォルトは 1024 (pids_limit = 1024
) です。 -
Log level:
logLevel
パラメーターは CRI-Olog_level
パラメーターを設定します。これはログメッセージの詳細レベルです。デフォルトはinfo
(log_level = info
) です。他のオプションには、fatal
、panic
、error
、warn
、debug
、およびtrace
が含まれます。 -
Overlay size:
overlaySize
パラメーターは、コンテナーイメージの最大サイズである CRI-O Overlay ストレージドライバーのsize
パラメーターを設定します。 -
Maximum log size:
logSizeMax
パラメーターは CRI-Olog_size_max
パラメーターを設定します。これは、コンテナーログファイルに許可される最大サイズです。デフォルトは無制限 (log_size_max = -1
) です。これが正数に設定される場合、8192 以上にする必要があり、ConMon の読み取りバッファーよりも小さくすることはできません。ConMon は、単一コンテナーのコンテナーマネージャー (Podman、CRI-O など) と OCI ランタイム (runc または crun など) との間の通信を監視するプログラムです。
マシン設定プールごとに、そのプールに加える設定変更をすべて含めて、ContainerRuntimeConfig
CR を 1 つ割り当てる必要があります。同じコンテンツをすべてのプールに適用している場合には、すべてのプールに必要となるのは ContainerRuntimeConfig
CR 1 つだけです。
既存の ContainerRuntimeConfig
CR を編集して既存の設定を編集するか、変更ごとに新規 CR を作成する代わりに新規の設定を追加する必要があります。異なるマシン設定プールを変更する場合や、変更が一時的で元に戻すことができる場合のみ、新しい ContainerRuntimeConfig
CR の作成を推奨しています。
必要に応じて複数の ContainerRuntimeConfig
CR を作成できます。この場合、制限はクラスターごとに 10 個となっています。最初の ContainerRuntimeConfig
CR について、MCO は containerruntime
で追加されたマシン設定を作成します。それぞれの後続の CR で、コントローラーは数字の接尾辞が付いた新規の containerruntime
マシン設定を作成します。たとえば、containerruntime
マシン設定に -2
接尾辞がある場合、次の containerruntime
マシン設定が -3
を付けて追加されます。
マシン設定を削除する場合、制限を超えないようにそれらを逆の順序で削除する必要があります。たとえば、containerruntime-3
マシン設定を、containerruntime-2
マシン設定を削除する前に削除する必要があります。
接尾辞が containerruntime-9
のマシン設定があり、別の ContainerRuntimeConfig
CR を作成する場合には、containerruntime
マシン設定が 10 未満の場合でも新規マシン設定は作成されません。
複数の ContainerRuntimeConfig
CR を示す例
oc get ctrcfg
$ oc get ctrcfg
出力例
NAME AGE ctr-pid 24m ctr-overlay 15m ctr-level 5m45s
NAME AGE
ctr-pid 24m
ctr-overlay 15m
ctr-level 5m45s
複数の containerruntime
マシン設定を示す例
oc get mc | grep container
$ oc get mc | grep container
出力例
以下の例では、pids_limit
を 2048 に引き上げ、log_level
を debug
に設定し、オーバーレイサイズを 8 GB に設定し、log_size_max
を無制限に設定します。
ContainerRuntimeConfig
CR の例
手順
ContainerRuntimeConfig
CR を使用して CRI-O 設定を変更するには、以下を実行します。
ContainerRuntimeConfig
CR の YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ContainerRuntimeConfig
CR を作成します。oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CR が作成されたことを確認します。
oc get ContainerRuntimeConfig
$ oc get ContainerRuntimeConfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE overlay-size 3m19s
NAME AGE overlay-size 3m19s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の
containerruntime
マシン設定が作成されていることを確認します。oc get machineconfigs | grep containerrun
$ oc get machineconfigs | grep containerrun
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
99-worker-generated-containerruntime 2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2 3.2.0 31s
99-worker-generated-containerruntime 2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2 3.2.0 31s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてが準備状態にあるものとして表示されるまでマシン設定プールをモニターします。
oc get mcp worker
$ oc get mcp worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-169 False True False 3 1 1 0 9h
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-169 False True False 3 1 1 0 9h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が CRI-O で適用されたことを確認します。
マシン設定プールのノードに対して
oc debug
セッションを開き、chroot /host
を実行します。oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crio.conf
ファイルの変更を確認します。crio config | egrep 'log_level|pids_limit|log_size_max'
sh-4.4# crio config | egrep 'log_level|pids_limit|log_size_max'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
pids_limit = 2048 log_size_max = -1 log_level = "debug"
pids_limit = 2048 log_size_max = -1 log_level = "debug"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 'storage.conf' ファイルの変更を確認します。
head -n 7 /etc/containers/storage.conf
sh-4.4# head -n 7 /etc/containers/storage.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. CRI-O を使用した Overlay のデフォルトのコンテナールートパーティションの最大サイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
各コンテナーのルートパーティションには、基礎となるホストの利用可能なディスク領域がすべて表示されます。以下のガイダンスに従って、すべてのコンテナーのルートディスクの最大サイズを設定します。
Overlay の最大サイズ、およびログレベルや PID 制限などの他の CRI-O オプションを設定するには、以下の ContainerRuntimeConfig
カスタムリソース定義 (CRD) を作成できます。
手順
設定オブジェクトを作成します。
oc apply -f overlaysize.yml
$ oc apply -f overlaysize.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の CRI-O 設定をワーカーノードに適用するには、ワーカーのマシン設定プールを編集します。
oc edit machineconfigpool worker
$ oc edit machineconfigpool worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ContainerRuntimeConfig
CRD に設定したmatchLabels
名に基づいてcustom-crio
ラベルを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を保存して、マシン設定を表示します。
oc get machineconfigs
$ oc get machineconfigs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の
99-worker-generated-containerruntime
およびrendered-worker-xyz
オブジェクトが作成されます。出力例
99-worker-generated-containerruntime 4173030d89fbf4a7a0976d1665491a4d9a6e54f1 3.2.0 7m42s rendered-worker-xyz 4173030d89fbf4a7a0976d1665491a4d9a6e54f1 3.2.0 7m36s
99-worker-generated-containerruntime 4173030d89fbf4a7a0976d1665491a4d9a6e54f1 3.2.0 7m42s rendered-worker-xyz 4173030d89fbf4a7a0976d1665491a4d9a6e54f1 3.2.0 7m36s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのオブジェクトの作成後に、変更が適用されるようにマシン設定プールを監視します。
oc get mcp worker
$ oc get mcp worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワーカーノードには、マシン数、更新数およびその他の詳細と共に
UPDATING
がTrue
として表示されます。出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-xyz False True False 3 2 2 0 20h
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-xyz False True False 3 2 2 0 20h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完了すると、ワーカーノードは
UPDATING
をFalse
に戻し、UPDATEDMACHINECOUNT
数はMACHINECOUNT
に一致します。出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-xyz True False False 3 3 3 0 20h
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-xyz True False False 3 3 3 0 20h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワーカーマシンを見ると、新規の 8 GB の最大サイズの設定がすべてのワーカーに適用されていることを確認できます。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナー内では、ルートパーティションが 8 GB であることを確認できます。
出力例
~ $ df -h Filesystem Size Used Available Use% Mounted on overlay 8.0G 8.0K 8.0G 0% /
~ $ df -h Filesystem Size Used Available Use% Mounted on overlay 8.0G 8.0K 8.0G 0% /
Copy to Clipboard Copied! Toggle word wrap Toggle overflow