12.2. OpenShift Virtualization クラスターチェックアップフレームワーク
チェックアップ は、特定のクラスター機能が期待どおりに機能するかどうかを確認できる自動テストワークロードです。クラスターチェックアップフレームワークは、ネイティブの Kubernetes リソースを使用してチェックアップを設定および実行します。
OpenShift Virtualization クラスターチェックアップフレームワークは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
開発者またはクラスター管理者は、事前定義されたチェックアップを使用して、クラスターの保守性を向上させ、予期しない動作をトラブルシューティングし、エラーを最小限に抑え、時間を節約できます。チェックアップの結果を確認し、専門家と共有してさらに分析することができます。ベンダーは、提供する機能やサービスのチェックアップを作成して公開し、顧客環境が正しく設定されていることを確認できます。
12.2.1. 定義済みのレイテンシーチェックアップを実行する リンクのコピーリンクがクリップボードにコピーされました!
レイテンシーチェックアップを使用すると、ネットワーク接続を確認し、セカンダリーネットワークインターフェイスに接続された 2 つの仮想マシン (VM) 間のレイテンシーを測定できます。事前定義されたレイテンシーチェックアップでは、ping ユーティリティーが使用されます。
レイテンシーチェックアップを実行する前に、まずクラスターノードに ブリッジインターフェイスを作成 して、仮想マシンのセカンダリーインターフェイスをノード上の任意のインターフェイスに接続する必要があります。ブリッジインターフェイスを作成しないと、仮想マシンが起動せず、ジョブが失敗します。
					既存の namespace で事前定義されたチェックアップを実行するには、チェックアップ用のサービスアカウントの設定、サービスアカウント用の Role および RoleBinding オブジェクトの作成、チェックアップのパーミッションの有効化、入力 config map とチェックアップジョブの作成が含まれます。チェックアップは複数回実行できます。
				
以下が常に必要になります。
- チェックアップイメージを適用する前に、信頼できるソースからのものであることを確認します。
 - 
								
RoleおよびRoleBindingオブジェクトを作成する前に、チェックアップパーミッションを確認してください。 
12.2.1.1. 遅延チェックの実行 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を実行して、CLI を使用してレイテンシーチェックアップを実行します。
- サービスアカウント、ロール、ロールバインディングを作成して、レイテンシーチェックアップへのクラスターアクセス権を提供します。
 - config map を作成し、チェックアップを実行して結果を保存するための入力を行います。
 - チェックアップを実行するジョブを作成します。
 - config map で結果を確認します。
 - オプション: チェックアップを再実行するには、既存の config map とジョブを削除し、新しい config map とジョブを作成します。
 - 完了したら、レイテンシーチェックアップリソースを削除します。
 
前提条件
- 
								OpenShift CLI (
oc) がインストールされている。 - クラスターには少なくとも 2 つのワーカーノードがある。
 - namespace の Network Attachment Definition を設定している。
 
手順
レイテンシーチェックアップ用の
ServiceAccount、Role、RoleBindingマニフェストを作成します。例12.1 ロールマニフェストファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceAccount、Role、RoleBindingマニフェストを適用します。oc apply -n <target_namespace> -f <latency_sa_roles_rolebinding>.yaml
$ oc apply -n <target_namespace> -f <latency_sa_roles_rolebinding>.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 <target_namespace>は、チェックアップを実行する namespace です。これは、NetworkAttachmentDefinitionオブジェクトが存在する既存の namespace である必要があります。
チェックアップの入力パラメーターを含む
ConfigMapマニフェストを作成します。入力 config map の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲット namespace に config map マニフェストを適用します。
oc apply -n <target_namespace> -f <latency_config_map>.yaml
$ oc apply -n <target_namespace> -f <latency_config_map>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow チェックアップを実行する
Jobマニフェストを作成します。ジョブマニフェストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Jobマニフェストを適用します。oc apply -n <target_namespace> -f <latency_job>.yaml
$ oc apply -n <target_namespace> -f <latency_job>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ジョブが完了するまで待ちます。
oc wait job kubevirt-vm-latency-checkup -n <target_namespace> --for condition=complete --timeout 6m
$ oc wait job kubevirt-vm-latency-checkup -n <target_namespace> --for condition=complete --timeout 6mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、レイテンシーチェックアップの結果を確認します。測定された最大レイテンシーが
spec.param.maxDesiredLatencyMilliseconds属性の値よりも大きい場合、チェックアップは失敗し、エラーが返されます。oc get configmap kubevirt-vm-latency-checkup-config -n <target_namespace> -o yaml
$ oc get configmap kubevirt-vm-latency-checkup-config -n <target_namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力 config map の例 (成功)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 測定された最大レイテンシー (ナノ秒)。
 
オプション: チェックアップが失敗した場合に詳細なジョブログを表示するには、次のコマンドを使用します。
oc logs job.batch/kubevirt-vm-latency-checkup -n <target_namespace>
$ oc logs job.batch/kubevirt-vm-latency-checkup -n <target_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、以前に作成したジョブおよび config map を削除します。
oc delete job -n <target_namespace> kubevirt-vm-latency-checkup
$ oc delete job -n <target_namespace> kubevirt-vm-latency-checkupCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete config-map -n <target_namespace> kubevirt-vm-latency-checkup-config
$ oc delete config-map -n <target_namespace> kubevirt-vm-latency-checkup-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 別のチェックアップを実行する予定がない場合は、ロールマニフェストを削除します。
oc delete -f <latency_sa_roles_rolebinding>.yaml
$ oc delete -f <latency_sa_roles_rolebinding>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
12.2.2. 定義済みの DPDK チェックアップを実行する リンクのコピーリンクがクリップボードにコピーされました!
DPDK チェックアップを使用すると、ノードが Data Plane Development Kit (DPDK) ワークロードを使用して仮想マシンをパケットロスなしで実行できることを確認できます。
12.2.2.1. DPDK チェックアップ リンクのコピーリンクがクリップボードにコピーされました!
事前定義されたチェックアップを使用して、OpenShift Container Platform クラスターノードが Data Plane Development Kit (DPDK) ワークロードがある仮想マシン (VM) をパケット損失ゼロで実行できるか確認します。DPDK チェックアップは、トラフィックジェネレーターと、テスト DPDK アプリケーションを実行している仮想マシン間でトラフィックを実行します。
次の手順で DPDK チェックアップを実行します。
- DPDK チェック用のサービスアカウント、ロール、およびロールバインディングを作成します。
 - config map を作成し、チェックアップを実行して結果を保存するための入力を行います。
 - チェックアップを実行するジョブを作成します。
 - config map で結果を確認します。
 - オプション: チェックアップを再実行するには、既存の config map とジョブを削除し、新しい config map とジョブを作成します。
 - 完了したら、DPDK チェックリソースを削除します。
 
前提条件
- 
								OpenShift CLI (
oc) がインストールされている。 - クラスターは DPDK アプリケーションを実行するように設定されています。
 - プロジェクトは DPDK アプリケーションを実行するように設定されています。
 
手順
DPDK チェック用の
ServiceAccount、Role、およびRoleBindingマニフェストを作成します。例12.2 サービスアカウント、ロール、ロールバインディングマニフェストファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceAccount、Role、RoleBindingマニフェストを適用します。oc apply -n <target_namespace> -f <dpdk_sa_roles_rolebinding>.yaml
$ oc apply -n <target_namespace> -f <dpdk_sa_roles_rolebinding>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow チェックアップの入力パラメーターを含む
ConfigMapマニフェストを作成します。入力 config map の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲット namespace に
ConfigMapマニフェストを適用します。oc apply -n <target_namespace> -f <dpdk_config_map>.yaml
$ oc apply -n <target_namespace> -f <dpdk_config_map>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow チェックアップを実行する
Jobマニフェストを作成します。ジョブマニフェストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Jobマニフェストを適用します。oc apply -n <target_namespace> -f <dpdk_job>.yaml
$ oc apply -n <target_namespace> -f <dpdk_job>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ジョブが完了するまで待ちます。
oc wait job dpdk-checkup -n <target_namespace> --for condition=complete --timeout 10m
$ oc wait job dpdk-checkup -n <target_namespace> --for condition=complete --timeout 10mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、チェックアップの結果を確認します。
oc get configmap dpdk-checkup-config -n <target_namespace> -o yaml
$ oc get configmap dpdk-checkup-config -n <target_namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力 config map の例 (成功)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - チェックアップが成功したか (
true)、失敗したか (false) を示します。 - 2
 - チェックアップが失敗した場合の失敗の理由。
 - 3
 - チェックアップが開始した時刻 (RFC 3339 時刻形式)。
 - 4
 - チェックアップが完了した時刻 (RFC 3339 時刻形式)。
 - 5
 - トラフィックジェネレーターから送信されたパケットの数。
 - 6
 - トラフィックジェネレーターから送信されたエラーパケットの数。
 - 7
 - トラフィックジェネレーターが受信したエラーパケットの数。
 - 8
 - トラフィックジェネレーター仮想マシンがスケジュールされたノード。
 - 9
 - テスト対象の仮想マシンがスケジュールされたノード。
 - 10
 - テスト対象の仮想マシンで受信したパケットの数。
 - 11
 - DPDK アプリケーションによって破棄された入力トラフィックパケット。
 - 12
 - DPDK アプリケーションから破棄された出力トラフィックパケット。
 
以下のコマンドを実行して、以前に作成したジョブおよび config map を削除します。
oc delete job -n <target_namespace> dpdk-checkup
$ oc delete job -n <target_namespace> dpdk-checkupCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete config-map -n <target_namespace> dpdk-checkup-config
$ oc delete config-map -n <target_namespace> dpdk-checkup-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 別のチェックアップを実行する予定がない場合は、
ServiceAccount、Role、RoleBindingマニフェストを削除します。oc delete -f <dpdk_sa_roles_rolebinding>.yaml
$ oc delete -f <dpdk_sa_roles_rolebinding>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
12.2.2.1.1. DPDK チェックアップ config map パラメーター リンクのコピーリンクがクリップボードにコピーされました!
							次の表は、クラスターの DPDK 準備状況チェックアップを実行するときに、入力 ConfigMap マニフェストの data スタンザに設定できる必須および任意のパラメーターを示しています。
						
| パラメーター | 説明 | 必須かどうか | 
|---|---|---|
|   
											  |   チェックアップが失敗するまでの時間 (分単位)。  |   True  | 
|   
											  |   
											接続されている SR-IOV NIC の   |   True  | 
|   
											  |   
											トラフィックジェネレーターのコンテナーディスクイメージ。デフォルト値は   |   False  | 
|   
											  |   トラフィックジェネレーター仮想マシンがスケジュールされるノード。DPDK トラフィックを許可するようにノードを設定する必要があります。  |   False  | 
|   
											  |   1 秒あたりのパケット数 (キロ (k) または 100 万 (m) 単位)。デフォルト値は 8m です。  |   False  | 
|   
											  |   
											テスト対象の仮想マシンのコンテナーディスクイメージ。デフォルト値は   |   False  | 
|   
											  |   テスト対象の仮想マシンがスケジュールされるノード。DPDK トラフィックを許可するようにノードを設定する必要があります。  |   False  | 
|   
											  |   トラフィックジェネレーターが実行される期間 (分単位)。デフォルト値は 5 分です。  |   False  | 
|   
											  |   SR-IOV NIC の最大帯域幅。デフォルト値は 10Gbps です。  |   False  | 
|   
											  |   
											  |   False  | 
12.2.2.1.2. RHEL 仮想マシン用コンテナーディスクイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
							カスタムの Red Hat Enterprise Linux (RHEL) 8 OS イメージを qcow2 形式でビルドし、それを使用してコンテナーディスクイメージを作成できます。クラスターからアクセス可能なレジストリーにコンテナーディスクイメージを保存し、DPDK チェック config map の spec.param.vmContainerDiskImage 属性でイメージの場所を指定できます。
						
コンテナーディスクイメージをビルドするには、Image Builder 仮想マシン (VM) を作成する必要があります。Image Builder 仮想マシン は、カスタム RHEL イメージのビルドに使用できる RHEL 8 仮想マシンです。
前提条件
- 
									Image Builder 仮想マシンは RHEL 8.7 を実行でき、
/varディレクトリーに少なくとも 2 つの CPU コア、4 GiB RAM、20 GB の空き領域がある。 - 
									Image Builder ツールとその CLI (
composer-cli) が仮想マシンにインストールされている。 virt-customizeツールがインストールされている。dnf install libguestfs-tools
# dnf install libguestfs-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									Podman CLI ツール (
podman) がインストールされている。 
手順
RHEL 8.7 イメージをビルドできることを確認します。
composer-cli distros list
# composer-cli distros listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記非 root として
composer-cliコマンドを実行するには、ユーザーをweldrまたはrootグループに追加します。usermod -a -G weldr user
# usermod -a -G weldr userCopy to Clipboard Copied! Toggle word wrap Toggle overflow newgrp weldr
$ newgrp weldrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、インストールするパッケージ、カーネルのカスタマイズ、起動時に無効化するサービスを含むイメージブループリントファイルを TOML 形式で作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ブループリントファイルを Image Builder ツールにプッシュします。
composer-cli blueprints push dpdk-vm.toml
# composer-cli blueprints push dpdk-vm.tomlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ブループリント名と出力ファイル形式を指定して、システムイメージを生成します。作成プロセスを開始すると、イメージのユニバーサル一意識別子 (UUID) が表示されます。
composer-cli compose start dpdk_image qcow2
# composer-cli compose start dpdk_image qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成プロセスが完了するまで待ちます。作成ステータスが
FINISHEDになると次のステップに進めます。composer-cli compose status
# composer-cli compose statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力し、UUID を指定して
qcow2イメージファイルをダウンロードします。composer-cli compose image <UUID>
# composer-cli compose image <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、カスタマイズスクリプトを作成します。
cat <<EOF >customize-vm echo isolated_cores=2-7 > /etc/tuned/cpu-partitioning-variables.conf tuned-adm profile cpu-partitioning echo "options vfio enable_unsafe_noiommu_mode=1" > /etc/modprobe.d/vfio-noiommu.conf EOF
$ cat <<EOF >customize-vm echo isolated_cores=2-7 > /etc/tuned/cpu-partitioning-variables.conf tuned-adm profile cpu-partitioning echo "options vfio enable_unsafe_noiommu_mode=1" > /etc/modprobe.d/vfio-noiommu.conf EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-customizeツールを使用して、Image Builder ツールによって生成されたイメージをカスタマイズします。virt-customize -a <UUID>.qcow2 --run=customize-vm --firstboot=first-boot --selinux-relabel
$ virt-customize -a <UUID>.qcow2 --run=customize-vm --firstboot=first-boot --selinux-relabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーディスクイメージのビルドに必要なすべてのコマンドを含む Dockerfile を作成するには、次のコマンドを入力します。
cat << EOF > Dockerfile FROM scratch COPY <uuid>-disk.qcow2 /disk/ EOF
$ cat << EOF > Dockerfile FROM scratch COPY <uuid>-disk.qcow2 /disk/ EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <uuid>-disk.qcow2
 - 
												カスタムイメージの名前を 
qcow2形式で指定します。 
次のコマンドを実行し、コンテナーをビルドしてタグを追加します。
podman build . -t dpdk-rhel:latest
$ podman build . -t dpdk-rhel:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターからアクセスできるレジストリーにコンテナーディスクイメージをプッシュします。
podman push dpdk-rhel:latest
$ podman push dpdk-rhel:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									DPDK チェックアップ config map の 
spec.param.vmContainerDiskImage属性で、コンテナーディスクイメージへのリンクを指定します。