14.4.3. コマンドラインを使用したストレージチェックアップの実行
事前定義されたチェックアップを使用して、OpenShift Container Platform クラスターストレージが OpenShift Virtualization ワークロードを実行するために最適に設定されていることを確認します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 クラスター管理者が、次の例のように、ストレージチェックアップのサービスアカウントと namespace に必要な
cluster-reader権限を作成した。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubevirt-storage-checkup-clustereader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-reader subjects: - kind: ServiceAccount name: storage-checkup-sa namespace: <target_namespace>各項目の説明:
<target_namespace>- チェックアップを実行する namespace を指定します。
手順
ストレージチェックアップ用の
ServiceAccount、Role、およびRoleBindingマニフェストファイルを作成します。サービスアカウント、ロール、およびロールバインディングマニフェストの例:
--- apiVersion: v1 kind: ServiceAccount metadata: name: storage-checkup-sa --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: storage-checkup-role rules: - apiGroups: [ "" ] resources: [ "configmaps" ] verbs: ["get", "update"] - apiGroups: [ "kubevirt.io" ] resources: [ "virtualmachines" ] verbs: [ "create", "delete" ] - apiGroups: [ "kubevirt.io" ] resources: [ "virtualmachineinstances" ] verbs: [ "get" ] - apiGroups: [ "subresources.kubevirt.io" ] resources: [ "virtualmachineinstances/addvolume", "virtualmachineinstances/removevolume" ] verbs: [ "update" ] - apiGroups: [ "kubevirt.io" ] resources: [ "virtualmachineinstancemigrations" ] verbs: [ "create" ] - apiGroups: [ "cdi.kubevirt.io" ] resources: [ "datavolumes" ] verbs: [ "create", "delete" ] - apiGroups: [ "" ] resources: [ "persistentvolumeclaims" ] verbs: [ "delete" ] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: storage-checkup-role subjects: - kind: ServiceAccount name: storage-checkup-sa roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: storage-checkup-roleターゲット namespace に
ServiceAccount、Role、RoleBindingマニフェストを適用します。$ oc apply -n <target_namespace> -f <storage_sa_roles_rolebinding>.yamlConfigMapとJobマニフェストファイルを作成します。この config map に、チェックアップジョブの入力パラメーターを含めます。入力 config map とジョブマニフェストの例:
--- apiVersion: v1 kind: ConfigMap metadata: name: storage-checkup-config namespace: $CHECKUP_NAMESPACE data: spec.timeout: 10m spec.param.storageClass: ocs-storagecluster-ceph-rbd-virtualization spec.param.vmiTimeout: 3m --- apiVersion: batch/v1 kind: Job metadata: name: storage-checkup namespace: $CHECKUP_NAMESPACE spec: backoffLimit: 0 template: spec: serviceAccount: storage-checkup-sa restartPolicy: Never containers: - name: storage-checkup image: quay.io/kiagnose/kubevirt-storage-checkup:main imagePullPolicy: Always env: - name: CONFIGMAP_NAMESPACE value: $CHECKUP_NAMESPACE - name: CONFIGMAP_NAME value: storage-checkup-configターゲット namespace に
ConfigMapとJobマニフェストファイルを適用し、チェックアップを実行します。$ oc apply -n <target_namespace> -f <storage_configmap_job>.yamlジョブが完了するまで待ちます。
$ oc wait job storage-checkup -n <target_namespace> --for condition=complete --timeout 10m次のコマンドを実行して、チェックアップの結果を確認します。
$ oc get configmap storage-checkup-config -n <target_namespace> -o yaml出力 config map の例 (成功):
apiVersion: v1 kind: ConfigMap metadata: name: storage-checkup-config labels: kiagnose/checkup-type: kubevirt-storage data: spec.timeout: 10m status.succeeded: "true" status.failureReason: "" status.startTimestamp: "2023-07-31T13:14:38Z" status.completionTimestamp: "2023-07-31T13:19:41Z" status.result.cnvVersion: 4.21.2 status.result.defaultStorageClass: trident-nfs status.result.goldenImagesNoDataSource: <data_import_cron_list> status.result.goldenImagesNotUpToDate: <data_import_cron_list> status.result.ocpVersion: 4.21.0 status.result.pvcBound: "true" status.result.storageProfileMissingVolumeSnapshotClass: <storage_class_list> status.result.storageProfilesWithEmptyClaimPropertySets: <storage_profile_list> status.result.storageProfilesWithSmartClone: <storage_profile_list> status.result.storageProfilesWithSpecClaimPropertySets: <storage_profile_list> status.result.storageProfilesWithRWX: |- ocs-storagecluster-ceph-rbd ocs-storagecluster-ceph-rbd-virtualization ocs-storagecluster-cephfs trident-iscsi trident-minio trident-nfs windows-vms status.result.vmBootFromGoldenImage: VMI "vmi-under-test-dhkb8" successfully booted status.result.vmHotplugVolume: |- VMI "vmi-under-test-dhkb8" hotplug volume ready VMI "vmi-under-test-dhkb8" hotplug volume removed status.result.vmLiveMigration: VMI "vmi-under-test-dhkb8" migration completed status.result.vmVolumeClone: 'DV cloneType: "csi-clone"' status.result.vmsWithNonVirtRbdStorageClass: <vm_list> status.result.vmsWithUnsetEfsStorageClass: <vm_list>-
data.status.succeededは、チェックが成功したか (true) 失敗したか (false) を定義します。 -
data.status.failureReasonは、チェックが失敗した場合の失敗理由を定義します。 -
data.status.startTimestampは、RFC 3339 の時刻形式で、チェックが開始された時刻を定義します。 -
data.status.completionTimestampは、RFC 3339 の時刻形式で、チェックアップが完了した時刻を定義します。 -
data.status.result.cnvVersionは、OpenShift Virtualization のバージョンを定義します。 -
data.status.result.defaultStorageClassは、デフォルトのストレージクラスが存在するかどうかを定義します。 -
data.status.result.goldenImagesNoDataSourceは、データソースが準備できていないゴールデンイメージのリストを定義します。 -
data.status.result.goldenImagesNotUpToDateは、データインポート cron が最新ではないゴールデンイメージのリストを定義します。 -
data.status.result.ocpVersionは、OpenShift Container Platform のバージョンを定義します。 -
data.status.result.pvcBoundは、10Mi の PVC が作成され、プロビジョナーによってバインドされたかどうかを定義します。 -
data.status.result.storageProfileMissingVolumeSnapshotClassは、スナップショットベースのクローンを使用しているが VolumeSnapshotClass が欠落しているストレージプロファイルのリストを定義します。 -
data.status.result.storageProfilesWithEmptyClaimPropertySetsは、プロビジョナーが不明なストレージプロファイルのリストを定義します。 -
data.status.result.storageProfilesWithSmartCloneは、スマートクローン (CSI/スナップショット) をサポートするストレージプロファイルのリストを定義します。 -
data.status.result.storageProfilesWithSpecClaimPropertySetsは、仕様でオーバーライドされたストレージプロファイル claimPropertySets のリストを定義します。 -
data.status.result.vmsWithNonVirtRbdStorageClassは、仮想化ストレージクラスが存在する場合に、Ceph RBD ストレージクラスを使用する仮想マシンのリストを定義します。 -
data.status.result.vmsWithUnsetEfsStorageClassは、ストレージクラスで GID と UID が設定されていない Elastic File Store (EFS) ストレージクラスを使用する仮想マシンのリストを定義します。
-
以下のコマンドを実行して、以前に作成したジョブおよび config map を削除します。
$ oc delete job -n <target_namespace> storage-checkup$ oc delete config-map -n <target_namespace> storage-checkup-configオプション: 別のチェックアップを実行する予定がない場合は、
ServiceAccount、Role、RoleBindingマニフェストを削除します。$ oc delete -f <storage_sa_roles_rolebinding>.yaml