7.2. vDU アプリケーションを実行するための推奨クラスター設定
仮想化分散ユニット (vDU) アプリケーションを実行するクラスターには、高度に調整かつ最適化された設定が必要です。以下では、OpenShift Container Platform 4.16 クラスターで vDU ワークロードをサポートするために必要なさまざまな要素を説明します。
7.2.1. シングルノード OpenShift クラスター用の推奨クラスター MachineConfig CR
ztp-site-generate
コンテナーから抽出した MachineConfig
カスタムリソース (CR) がクラスターに適用されていることを確認します。CR は、抽出した out/source-crs/extra-manifest/
フォルダーにあります。
ztp-site-generate
コンテナーからの次の MachineConfig
CR は、クラスターホストを設定します。
MachineConfig CR | 説明 |
---|---|
| コンテナーマウント namespace と kubelet 設定を設定します。 |
|
SCTP カーネルモジュールをロードします。これらの |
| クラスターの kdump クラッシュレポートを設定します。 |
| クラスターの SR-IOV カーネル引数を設定します。 |
|
クラスターの再起動後に |
| クラスター再起動後の自動 CRI-O キャッシュワイプを無効にします。 |
| Chrony サービスによるシステムクロックのワンタイムチェックと調整を設定します。 |
|
|
| クラスターのインストール時および RHACM クラスターポリシーの生成時に cgroups v1 を有効にします。 |
OpenShift Container Platform 4.14 以降では、SiteConfig
CR の cpuPartitioningMode
フィールドを使用してワークロードの分割を設定します。
7.2.2. 推奨されるクラスター Operator
次の Operator は、仮想化分散ユニット (vDU) アプリケーションを実行するクラスターに必要であり、ベースライン参照設定の一部です。
- Node Tuning Operator (NTO)。NTO は、以前は Performance Addon Operator で提供されていた機能をパッケージ化し、現在は NTO の一部になっています。
- PTP Operator
- SR-IOV Network Operator
- Red Hat OpenShift Logging Operator
- Local Storage Operator
7.2.3. 推奨されるクラスターカーネル設定
クラスターでは常に、サポートされている最新のリアルタイムカーネルバージョンを使用してください。クラスターに次の設定を適用していることを確認します。
次の
additionalKernelArgs
がクラスターパフォーマンスプロファイルに設定されていることを確認します。apiVersion: performance.openshift.io/v2 kind: PerformanceProfile # ... spec: additionalKernelArgs: - "rcupdate.rcu_normal_after_boot=0" - "efi=runtime" - "vfio_pci.enable_sriov=1" - "vfio_pci.disable_idle_d3=1" - "module_blacklist=irdma" # ...
オプション:
hardwareTuning
フィールドで CPU 周波数を設定します。ハードウェアチューニングを使用して、予約済みコア CPU と分離コア CPU の CPU 周波数を調整できます。FlexRAN のようなアプリケーションの場合、ハードウェアベンダーは、デフォルトで提供される周波数よりも低い CPU 周波数で実行することを推奨しています。周波数を設定する前に、プロセッサー世代の最大周波数設定に関するハードウェアベンダーのガイドラインを参照することを強く推奨します。この例では、Sapphire Rapid ハードウェアの予約済み CPU と分離された CPU の周波数を示しています。
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: openshift-node-performance-profile spec: cpu: isolated: "2-19,22-39" reserved: "0-1,20-21" hugepages: defaultHugepagesSize: 1G pages: - size: 1G count: 32 realTimeKernel: enabled: true hardwareTuning: isolatedCpuFreq: 2500000 reservedCpuFreq: 2800000
Tuned
CR のperformance-patch
プロファイルが、関連するPerformanceProfile
CR のisolated
CPU セットと一致する正しい CPU 分離セットを設定していることを確認します。次に例を示します。apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: performance-patch namespace: openshift-cluster-node-tuning-operator annotations: ran.openshift.io/ztp-deploy-wave: "10" spec: profile: - name: performance-patch # The 'include' line must match the associated PerformanceProfile name, for example: # include=openshift-node-performance-${PerformanceProfile.metadata.name} # When using the standard (non-realtime) kernel, remove the kernel.timer_migration override from the [sysctl] section data: | [main] summary=Configuration changes profile inherited from performance created tuned include=openshift-node-performance-openshift-node-performance-profile [scheduler] group.ice-ptp=0:f:10:*:ice-ptp.* group.ice-gnss=0:f:10:*:ice-gnss.* group.ice-dplls=0:f:10:*:ice-dplls.* [service] service.stalld=start,enable service.chronyd=stop,disable # ...
7.2.4. リアルタイムカーネルバージョンの確認
OpenShift Container Platform クラスターでは常にリアルタイムカーネルの最新バージョンを使用してください。クラスターで使用されているカーネルバージョンが不明な場合は、次の手順で現在のリアルタイムカーネルバージョンとリリースバージョンを比較できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 -
podman
がインストールされている。
手順
次のコマンドを実行して、クラスターのバージョンを取得します。
$ OCP_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')
リリースイメージの SHA 番号を取得します。
$ DTK_IMAGE=$(oc adm release info --image-for=driver-toolkit quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64)
リリースイメージコンテナーを実行し、クラスターの現在のリリースにパッケージ化されているカーネルバージョンを抽出します。
$ podman run --rm $DTK_IMAGE rpm -qa | grep 'kernel-rt-core-' | sed 's#kernel-rt-core-##'
出力例
4.18.0-305.49.1.rt7.121.el8_4.x86_64
これは、リリースに同梱されているデフォルトのリアルタイムカーネルバージョンです。
注記リアルタイムカーネルは、カーネルバージョンの文字列
.rt
で示されます。
検証
クラスターの現在のリリース用にリストされているカーネルバージョンが、クラスターで実行されている実際のリアルタイムカーネルと一致することを確認します。次のコマンドを実行して、実行中のリアルタイムカーネルバージョンを確認します。
クラスターノードへのリモートシェル接続を開きます。
$ oc debug node/<node_name>
リアルタイムカーネルバージョンを確認します。
sh-4.4# uname -r
出力例
4.18.0-305.49.1.rt7.121.el8_4.x86_64