...
spec:
driverConfig:
driverType: ''
logLevel: Normal
managementState: Managed
observedConfig: null
operatorLogLevel: Normal
storageClassState: Unmanaged (1)
...
管理默认存储类允许您实现几个不同的目标
通过禁用动态配置来强制静态配置。
当您拥有其他首选存储类时,可以阻止存储运算符重新创建初始默认存储类。
重命名或更改默认存储类
要实现这些目标,您需要更改ClusterCSIDriver
对象中spec.storageClassState
字段的设置。此字段的可能设置是
已管理:(默认)容器存储接口 (CSI) 运算符正在积极管理其默认存储类,因此集群管理员对默认存储类进行的大多数手动更改都会被删除,如果您尝试手动删除默认存储类,则会不断重新创建默认存储类。
未管理:您可以修改默认存储类。CSI 运算符没有积极管理存储类,因此它不会协调它自动创建的默认存储类。
已删除:CSI 运算符会删除默认存储类。
访问 OpenShift Dedicated Web 控制台。
访问具有集群管理员权限的集群。
要使用 Web 控制台管理默认存储类
登录到 Web 控制台。
单击管理 > 自定义资源定义。
在自定义资源定义页面上,键入clustercsidriver
以查找ClusterCSIDriver
对象。
单击ClusterCSIDriver,然后单击实例选项卡。
单击所需实例的名称,然后单击YAML选项卡。
添加值为Managed
、Unmanaged
或Removed
的spec.storageClassState
字段。
...
spec:
driverConfig:
driverType: ''
logLevel: Normal
managementState: Managed
observedConfig: null
operatorLogLevel: Normal
storageClassState: Unmanaged (1)
...
1 | spec.storageClassState 字段设置为“Unmanaged” |
单击保存。
访问具有集群管理员权限的集群。
要使用CLI管理存储类,请运行以下命令:
oc patch clustercsidriver $DRIVERNAME --type=merge -p "{\"spec\":{\"storageClassState\":\"${STATE}\"}}" (1)
1 | 其中${STATE} 为“已移除”、“已管理”或“未管理”。其中 |
请使用以下步骤更改默认存储类。
例如,如果您定义了两个存储类gp3
和standard
,并且您想将默认存储类从gp3
更改为standard
。
访问具有集群管理员权限的集群。
更改默认存储类:
列出存储类
$ oc get storageclass
NAME TYPE
gp3 (default) kubernetes.io/aws-ebs (1)
standard kubernetes.io/aws-ebs
1 | (default) 表示默认存储类。 |
将所需的存储类设置为默认存储类。
对于所需的存储类,通过运行以下命令将storageclass.kubernetes.io/is-default-class
注释设置为true
:
$ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
您可以在短时间内拥有多个默认存储类。但是,您应该确保最终只存在一个默认存储类。 存在多个默认存储类时,任何请求默认存储类的持久卷声明 (PVC)( |
从旧的默认存储类中删除默认存储类设置。
对于旧的默认存储类,通过运行以下命令将storageclass.kubernetes.io/is-default-class
注释的值更改为false
:
$ oc patch storageclass gp3 -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
验证更改
$ oc get storageclass
NAME TYPE
gp3 kubernetes.io/aws-ebs
standard (default) kubernetes.io/aws-ebs