12.2.5. 스토리지 점검 실행
사전 정의된 점검을 사용하여 OpenShift Container Platform 클러스터 스토리지가 OpenShift Virtualization 워크로드를 실행하도록 최적으로 구성되었는지 확인합니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. 클러스터 관리자가 다음 예와 같이 스토리지 점검 서비스 계정 및 네임스페이스에 필요한
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>1 - 1
- 점검을 실행할 네임스페이스입니다.
프로세스
스토리지 점검에 대한
ServiceAccount,Role,RoleBinding매니페스트 파일을 생성합니다.예 12.3. 서비스 계정, 역할 및 역할 바인딩 매니페스트의 예
--- 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대상 네임스페이스에
ServiceAccount,Role,RoleBinding매니페스트를 적용합니다.$ oc apply -n <target_namespace> -f <storage_sa_roles_rolebinding>.yamlConfigMap및작업매니페스트 파일을 생성합니다. 구성 맵에는 검사 작업에 대한 입력 매개변수가 포함되어 있습니다.입력 구성 맵 및 작업 매니페스트 예
--- apiVersion: v1 kind: ConfigMap metadata: name: storage-checkup-config namespace: $CHECKUP_NAMESPACE data: spec.timeout: 10m --- 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대상 네임스페이스에
ConfigMap및작업매니페스트 파일을 적용하여 점검을 실행합니다.$ 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출력 구성 맵 예(성공)
apiVersion: v1 kind: ConfigMap metadata: name: storage-checkup-config labels: kiagnose/checkup-type: kubevirt-storage data: spec.timeout: 10m status.succeeded: "true"1 status.failureReason: ""2 status.startTimestamp: "2023-07-31T13:14:38Z"3 status.completionTimestamp: "2023-07-31T13:19:41Z"4 status.result.cnvVersion: 4.16.2 status.result.defaultStorageClass: trident-nfs5 status.result.goldenImagesNoDataSource: <data_import_cron_list>6 status.result.goldenImagesNotUpToDate: <data_import_cron_list>7 status.result.ocpVersion: 4.16.0 status.result.storageMissingVolumeSnapshotClass: <storage_class_list> status.result.storageProfilesWithEmptyClaimPropertySets: <storage_profile_list>8 status.result.storageProfilesWithSpecClaimPropertySets: <storage_profile_list> status.result.storageWithRWX: |- 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>9 status.result.vmsWithUnsetEfsStorageClass: <vm_list>10 - 1
- 검사 성공(
true)인지(false)인지 여부를 지정합니다. - 2
- 검사에 실패하는 경우 실패 이유
- 3
- 검사 시작 시간(RFC 3339 시간 형식)입니다.
- 4
- 검사 완료 시간(RFC 3339 시간 형식)입니다.
- 5
- 기본 스토리지 클래스가 있는지 여부를 지정합니다.
- 6
- 데이터 소스가 준비되지 않은 골든 이미지 목록입니다.
- 7
- 데이터 가져오기 cron이 최신 상태가 아닌 골든 이미지 목록입니다.
- 8
- 알 수 없는 프로비저너가 있는 스토리지 프로필 목록입니다.
- 9
- 가상화 스토리지 클래스가 있는 경우 Ceph RBD 스토리지 클래스를 사용하는 가상 머신 목록입니다.
- 10
- 스토리지 클래스에 GID 및 UID가 설정되지 않은 EFS(Elastic File Store) 스토리지 클래스를 사용하는 가상 머신 목록입니다.
다음 명령을 실행하여 이전에 생성한 작업 및 구성 맵을 삭제합니다.
$ 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