11.3.2. 配置默认和 virt-default 存储类
存储类决定了如何为工作负载置备持久性存储。在 OpenShift Virtualization 中,virt-default 存储类优先于集群默认存储类,用于虚拟化工作负载。
在一个时间点上,仅一个存储类应被设置为 virt-default 或 cluster default。如果多个存储类被标记为默认,virt-default 存储类会覆盖集群默认。为确保一致的行为,请仅配置一个存储类作为虚拟化工作负载的默认值。
引导源使用默认存储类创建。当默认存储类更改时,会使用新的默认存储类自动更新旧的引导源。如果您的集群没有默认存储类,则必须定义一个。
如果引导源镜像存储为卷快照,并且集群默认和 virt-default 存储类都未设置,则会清理卷快照,并创建新的数据卷。但是,在设置了默认存储类前,新创建的数据卷不会开始导入。
先决条件
-
已安装 OpenShift CLI(
oc)。
流程
将当前的 virt-default 或集群默认存储类进行补丁为 false:
运行以下命令,识别当前标记为 virt-default 的所有存储类:
$ oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubevirt.io/is-default-virt-class"=="true")|.name'对于返回的每个存储类,运行以下命令来删除 virt-default 注解:
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "false"}}}'运行以下命令,识别当前标记为集群默认的所有存储类:
$ oc get sc -o json| jq '.items[].metadata|select(.annotations."storageclass.kubernetes.io/is-default-class"=="true")|.name'对于返回的每个存储类,运行以下命令来删除集群默认注解:
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
设置新的默认存储类:
运行以下命令,将 virt-default 角色分配给存储类:
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'或者,运行以下命令将集群默认角色分配给存储类:
$ oc patch storageclass <storage_class_name> -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'