基础服务
- 1: 存储后端管理
- 1.1: 配置存储后端
- 1.1.1: 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)
- 1.1.1.1: 文件系统
- 1.1.1.2: Dtree
- 1.1.1.3: 块业务
- 1.1.1.3.1: iSCSI
- 1.1.1.3.2: FC
- 1.1.1.3.3: NVMe over RoCE
- 1.1.1.3.4: FC-NVMe
- 1.1.2: 闪存存储(OceanStor A600/A800)
- 1.1.3: 海量存储(OceanStor Pacific系列)
- 1.1.4: 海量存储(OceanDisk系列)
- 1.2: 管理存储后端
- 2: 存储类管理
- 2.1: 配置存储类
- 2.1.1: 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)
- 2.1.2: 闪存存储(OceanStor A600/A800)
- 2.1.2.1: 文件系统
- 2.1.3: 海量存储(FusionStorage Block/OceanStor Pacific系列)
- 2.1.4: 海量存储(OceanDisk系列)
- 2.2: 管理存储类
- 3: 持久卷管理
1 - 存储后端管理
后端是华为存储资源的抽象概念,每台华为存储设备可以通过租户/存储池/协议等特性抽象出多个后端资源,每个后端独立存在,其中定义了为Kubernetes集群供应持久卷时所需要的华为存储信息。
本章节用于描述使用oceanctl工具配置管理存储后端。
oceanctl工具说明
- 获取oceanctl工具,将oceanctl工具拷贝到环境目录下,例如(/usr/local/bin),且赋予可执行权限,oceanctl工具位于软件包/bin/oceanctl。
- oceanctl工具依赖kubectl(Kubernetes平台)或oc(OpenShift平台)命令,因此需要在可执行kubectl或oc命令的节点运行。
- 默认情况下,执行oceanctl命令的用户需要有/var/log目录的读写权限。如果没有该目录权限,可通过“–log-dir=/path/to/custom”指定有权限目录作为日志文件目录。
- oceanctl创建后端的命名空间默认为huawei-csi。
- oceanctl命令详细说明请参考 oceanctl命令说明 。
1.1 - 配置存储后端
- 使用oceanctl创建存储后端时,输入的账号和秘钥信息保存在 Secret 对象中,建议客户容器平台根据供应商或者K8s社区的建议自行对Secret进行加密。K8s社区对Secret加密可参考 静态加密机密数据 。
- 通过json文件创建后端时,旧版本的backend名称中可能存在大写字母或"_“字符。如果出现这种情况,旧的名称将会被重映射为一个新的名称,映射过程自动发生,不会影响原有功能。例如“ABC_123”将会被映射为“abc-123-fd68e”,具体映射规则如下:
- 大写字母转换成小写字母。
- “_“字符转换成“-”字符。
- 末尾追加5位Hash码。
- 当存储后端对接租户时,在存储后端创建完成后,不允许修改租户名称。
1.1.1 - 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)
1.1.1.1 - 文件系统
1.1.1.1.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建本地类型存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "nfs" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
创建双活类型存储后端
- 配置NAS双活前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
- 对接NAS双活后端的账号必须为存储租户的租户管理员账号。
- 除NAS双活后端外,其他后端的管理URL不能配置为在已建立双活关系的租户的逻辑管理端口的URL。
- 使用双活类型的存储后端时,请勿发放普通文件系统。否则,在逻辑端口漂移场景下,有业务中断的风险。
准备存储后端配置文件,如backend.yaml。
storage: "oceanstor-nas" name: "backend-active" namespace: "huawei-csi" urls: - "https://192.168.129.155:8088" pools: - "StoragePool001" metrovStorePairID: "2100xxxxxxxxxx0000000000600000000" metroBackend: "backend-standby" parameters: protocol: "nfs" portals: - "192.168.129.156" maxClientThreads: "30" --- storage: "oceanstor-nas" name: "backend-standby" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" metrovStorePairID: "2100xxxxxxxxxx0000000000600000000" metroBackend: "backend-active" parameters: protocol: "nfs" portals: - "192.168.129.158" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-active oceanstor-nas https://192.168.129.155:8088 2 false backend-standby oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
分别输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: user1 Please enter this backend password: Backend backend-standby is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-active oceanstor-nas https://192.168.129.155:8088 2 true backend-standby oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为"Bound" 则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-active nfs oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.155:8088 huawei-csi backend-standby nfs oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.1.2 - NFS+
本章节介绍创建NFS+协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建本地类型存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "nfs+" portals: - "10.10.30.20" - "10.10.30.30" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs+ oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
创建双活类型存储后端
- 配置NAS双活前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
- 对接NAS双活后端的账号必须为存储租户的租户管理员账号。
- 除NAS双活后端外,其他后端的管理URL不能配置为在已建立双活关系的租户的逻辑管理端口的URL。
- 使用双活类型的存储后端时,请勿发放普通文件系统。否则,在逻辑端口漂移场景下,有业务中断的风险。
操作步骤
准备存储后端配置文件,如backend.yaml。
storage: "oceanstor-nas" name: "backend-active" namespace: "huawei-csi" urls: - "https://192.168.129.155:8088" pools: - "StoragePool001" metrovStorePairID: "2100xxxxxxxxxx0000000000600000000" metroBackend: "backend-standby" parameters: protocol: "nfs+" portals: - "192.168.129.156" - "192.168.129.157" maxClientThreads: "30" --- storage: "oceanstor-nas" name: "backend-standby" namespace: "huawei-csi" urls: - "https://192.168.129.158:8088" pools: - "StoragePool001" metrovStorePairID: "2100xxxxxxxxxx0000000000600000000" metroBackend: "backend-active" parameters: protocol: "nfs+" portals: - "192.168.129.159" - "192.168.129.160" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-active oceanstor-nas https://192.168.129.155:8088 2 false backend-standby oceanstor-nas https://192.168.129.158:8088 Please enter the backend number to configure (Enter 'exit' to exit):
分别输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: user1 Please enter this backend password: Backend backend-standby is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-active oceanstor-nas https://192.168.129.155:8088 2 true backend-standby oceanstor-nas https://192.168.129.158:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为"Bound" 则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-active nfs+ oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.155:8088 huawei-csi backend-standby nfs+ oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.158:8088
1.1.1.2 - Dtree
1.1.1.2.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-dtree" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" parameters: protocol: "nfs" parentname: "parent-filesystem" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs oceanstor-dtree xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.2.2 - NFS+
本章节介绍创建NFS+协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-dtree" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" parameters: protocol: "nfs+" parentname: "parent-filesystem" portals: - "10.10.30.20" - "10.10.30.30" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs+ oceanstor-dtree xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.3 - 块业务
1.1.1.3.1 - iSCSI
本章节介绍创建iSCSI协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "iscsi" portals: - "10.10.30.20" - "10.10.30.21" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo iscsi oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.3.2 - FC
本章节介绍创建FC协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "fc" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo fc oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.3.3 - NVMe over RoCE
本章节介绍创建NVMe over RoCE协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "roce" portals: - "10.10.30.20" - "10.10.30.21" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.1.3.4 - FC-NVMe
本章节介绍创建FC-NVMe协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "fc-nvme" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo fc-nvme oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.2 - 闪存存储(OceanStor A600/A800)
1.1.2.1 - 本地文件系统
1.1.2.1.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-a-series-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "nfs" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-a-series-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-a-series-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs oceanstor-a-series-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.2.1.2 - DataTurbo
本章节介绍创建DataTurbo协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
|
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-a-series-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "dtfs" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-a-series-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-a-series-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo dtfs oceanstor-a-series-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.3 - 海量存储(OceanStor Pacific系列)
1.1.3.1 - 命名空间
1.1.3.1.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "nfs" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs fusionstorage-nas Bound true https://192.168.129.157:8088
1.1.3.1.2 - DPC
本章节介绍创建DPC协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "dpc" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo dpc fusionstorage-nas Bound true https://192.168.129.157:8088
1.1.3.2 - Dtree
1.1.3.2.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-dtree" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" parameters: protocol: "nfs" parentname: "parent-filesystem" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs fusionstorage-dtree Bound true https://192.168.129.157:8088
1.1.3.2.2 - DPC
本章节介绍创建DPC协议类型的存储后端
配置项说明
表 1 backend配置项说明
|
| |||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-dtree" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" parameters: protocol: "dpc" parentname: "parent-filesystem" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-dtree https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo dpc fusionstorage-dtree Bound true https://192.168.129.157:8088
1.1.3.3 - 块业务
1.1.3.3.1 - iSCSI
本章节介绍创建iSCSI协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "iscsi" portals: - "10.10.30.20" - "10.10.30.21" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo iscsi fusionstorage-san Bound true https://192.168.129.157:8088
1.1.3.3.2 - SCSI
本章节介绍创建SCSI协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "fusionstorage-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "scsi" portals: - {"hostname01": "192.168.125.21","hostname02": "192.168.125.22"} maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo fusionstorage-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo fusionstorage-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo scsi fusionstorage-san Bound true https://192.168.129.157:8088
1.1.4 - 海量存储(OceanDisk系列)
1.1.4.1 - 文件系统
1.1.4.1.1 - NFS
本章节介绍创建NFS协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建本地类型存储后端
准备后端配置文件,如backend.yaml。
storage: "oceanstor-nas" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "nfs" portals: - "10.10.30.20" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceanstor-nas https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo nfs oceanstor-nas xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.4.2 - 块业务
1.1.4.2.1 - iSCSI
本章节介绍创建iSCSI协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceandisk-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "iscsi" portals: - "10.10.30.20" - "10.10.30.21" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo iscsi oceandisk-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.4.2.2 - FC
本章节介绍创建FC协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceandisk-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "fc" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo fc oceandisk-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.1.4.2.3 - NVMe over RoCE
本章节介绍创建NVMe over RoCE协议类型的存储后端
配置项说明
表 1 backend配置项说明
| ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考配置存储拓扑感知。 | ||||
创建存储后端
准备后端配置文件,如backend.yaml。
storage: "oceandisk-san" name: "backend-demo" namespace: "huawei-csi" urls: - "https://192.168.129.157:8088" pools: - "StoragePool001" parameters: protocol: "roce" portals: - "10.10.30.20" - "10.10.30.21" maxClientThreads: "30"
执行以下命令创建存储后端。
oceanctl create backend -f /path/to/backend.yaml -i yaml
命令结果示例如下:
NUMBER CONFIGURED NAME STORAGE URLS 1 false backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
输入待创建后端序号,并输入账号密码。
Please enter the backend number to configure (Enter 'exit' to exit):1 Please enter this backend user name: admin Please enter this backend password: Backend backend-demo is configured NUMBER CONFIGURED NAME STORAGE URLS 1 true backend-demo oceandisk-san https://192.168.129.157:8088 Please enter the backend number to configure (Enter 'exit' to exit):
检查存储后端创建结果。
oceanctl get backend
命令结果示例如下,后端状态为Bound,则创建成功。
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-demo roce oceandisk-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088
1.2 - 管理存储后端
1.2.1 - 查询存储后端
执行以下命令获取查询后端帮助。
oceanctl get backend -h
执行以下命令查询默认命名空间下单个存储后端。
oceanctl get backend <backend-name>
执行以下命令查询指定命名空间下所有存储后端。
oceanctl get backend -n <namespace>
执行以下命令格式化输出,当前支持json,yaml和wide。
oceanctl get backend <backend-name> -o json
1.2.2 - 更新存储后端
- 当前使用oceanctl更新存储后端信息时,仅支持更新存储后端密码以及登录存储后端的认证模式。
- 若在存储侧更新了后端的账号密码,CSI插件会因登录失败而重试,可能会导致账号被锁定。如果账号被锁定,请参考 存储侧更新密码后账户被锁定 章节修改。
1.2.2.1 - 更新存储后端密码
获取更新后端帮助信息
执行以下命令获取更新存储后端帮助。
oceanctl update backend -h
命令结果示例如下:
Update a backend for Ocean Storage in Kubernetes Usage: oceanctl update backend <name> [flags] Examples: # Update backend account information in default(huawei-csi) namespace oceanctl update backend <name> --password # Update backend account information in specified namespace oceanctl update backend <name> -n namespace --password # Update backend account information with ldap authentication mode in default(huawei-csi) namespace oceanctl update backend <name> --password --authenticationMode=ldap # Update backend account information with local authentication mode in default(huawei-csi) namespace oceanctl update backend <name> --password --authenticationMode=local # Update backend account information with ldap authentication mode in specified namespace oceanctl update backend <name> -n namespace --password --authenticationMode=ldap Flags: --authenticationMode string Specify authentication mode -h, --help help for backend -n, --namespace string namespace of resources --password Update account password Global Flags: --log-dir string Specify the directory for printing log files. (default "/var/log/huawei")
更新后端密码示例
执行以下命令更新存储后端信息,其中backend-name为待更新后端名称。
oceanctl update backend backend-name --password
根据提示输入用户名和新密码:
Please enter this backend user name:admin Please enter this backend password: backend/backend-name updated
1.2.2.2 - 更新存储后端登陆认证模式
更新后端登录认证类型为LDAP示例
执行以下命令更新存储后端信息,其中backend-name为待更新后端名称。
oceanctl update backend backend-name --password --authenticationMode=ldap
根据提示输入用户名和新密码:
Please enter this backend user name:admin Please enter this backend password: backend/backend-name updated
1.2.2.3 - 更新存储后端信息
- PVC发放需要基于已配置的存储后端,因此当存储后端已经发放PVC时,请勿随便修改存储后端。
- 名称是存储后端的唯一标识,已发放PVC的存储后端不允许修改名称。
- 存储后端修改后,新增配置仅作用于新发放的卷。
- 存储后端修改期间,请勿执行卷管理操作。
操作步骤
1.2.3 - 删除存储后端
正在执行卷管理操作期间,请勿删除存储后端。
删除后端示例
执行以下命令获取存储后端。
oceanctl get backend
命令结果示例如下:
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-1 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088 huawei-csi backend-2 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.158:8088
执行以下命令删除指定存储后端。
oceanctl delete backend backend-1
执行以下命令检查删除结果。
oceanctl get backend backend-1
命令结果示例如下,如果回显为“not found”则删除成功。
Error from server (NotFound): backend "backend-1" not found
1.2.4 - 添加存储后端证书
前提条件
完成证书制作。以OceanStor Dorado为例,证书制作过程请参考: 点此前往 。
创建证书示例
提前准备好证书文件,如cert.crt。
执行以下命令获取存储后端。
oceanctl get backend
命令结果示例如下:
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-1 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088 huawei-csi backend-2 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.158:8088
执行以下命令为指定存储后端创建证书。
oceanctl create cert cert-1 -b backend-1 -f /path/to/cert.crt
检查证书创建结果。
oceanctl get cert -b backend-1
命令结果示例如下:
NAMESPACE NAME BOUNDBACKEND huawei-csi cert-1 backend-1
1.2.5 - 移除存储后端证书
操作步骤
执行以下命令获取存储后端。
oceanctl get backend
命令结果示例如下:
NAMESPACE NAME PROTOCOL STORAGETYPE SN STATUS ONLINE URL huawei-csi backend-1 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.157:8088 huawei-csi backend-2 roce oceanstor-san xxxxxxxxxxxxxxxxxxxx Bound true https://192.168.129.158:8088
执行以下命令获取指定存储后端的证书。
oceanctl get cert -b backend-1
命令结果示例如下:
NAMESPACE NAME BOUNDBACKEND huawei-csi cert-1 backend-1
执行以下命令删除指定存储后端的证书。
oceanctl delete cert -b backend-1
检查删除结果。
oceanctl get cert -b backend-1
命令结果示例如下,如果回显为“no cert found”则删除成功。
Error from server (NotFound): no cert found on backend backend-1 in huawei-csi namespace
2 - 存储类管理
存储类(StorageClass) 为管理员提供了描述存储 “类” 的方法。 不同的类型可能会映射到一组不同的能力定义。Kubernetes集群用户可基于存储类进行动态卷制备。
2.1 - 配置存储类
集群管理员可以根据需要定义多个存储类对象,在声明配置持久卷时,需要指定满足业务要求的存储类。华为CSI在从华为存储设备上申请资源时,会根据存储类的预置定义,创建满足业务要求的存储资源。
2.1.1 - 闪存存储(OceanStor Dorado/OceanStor V5/OceanStor V6及以后)
2.1.1.1 - 文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: StoragePool001
volumeType: fs
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.1 # NFS挂载时指定版本为4.1
NFS+协议配置示例
容器使用NFS+协议对接文件系统资源时,可以参考如下存储类配置示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: StoragePool001
volumeType: fs
allocType: thin
authClient: "*"
双活文件系统配置示例
容器使用NFS双活文件系统作为存储资源时,可以参考如下配置示例。该示例中,使用的后端是支持双活的后端,且配置“hyperMetro”参数为“true”。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-hypermetro-dorado-181
pool: pool001
volumeType: fs
hyperMetro: "true" # 发放双活卷
allocType: thin
authClient: "*"
- 发放NAS双活卷前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
- 若存储发生故障,逻辑管理端口可能产生漂移,在漂移状态下删除NAS双活卷后,需手动清理对应的存储资源。
文件系统支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | ||||
| |||||
| |||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | |||||
在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。 | |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
| 当使用的后端是双活类型的后端,且需要发放双活卷时,设置该参数为"true",若设置为"false",在后端对接的逻辑管理端口漂移的场景下,有业务中断的风险。 | ||||
|
| ||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}' | 支持的高级参数列表请参考表4说明。 |
表 2 常用mountOptions参数说明
表 3 支持的QoS配置
可选参数(未明确指定将使用后端存储默认值,具体参考相关存储资料)。
| |||
| |||
表 4 支持的高级创卷参数
2.1.1.2 - Dtree
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议支持的存储类配置示例
容器使用NFS协议对接Dtree资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dtree-181
parentname: parent-filesystem-name
volumeType: dtree
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.1 # NFS挂载时指定版本为4.1
NFS+协议支持的存储类配置示例
容器使用NFS+协议对接Dtree资源时,可以参考如下存储类配置示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dtree-181
parentname: parent-filesystem-name
volumeType: dtree
allocType: thin
authClient: "*"
Dtree支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
|
| |||
常见的mountOptions参数参考表2。 | ||||
若仅在StorageClass中配置了parentname,而存储后端中未配置时,要求在安装CSI时将CSIDriverObject.attachRequired设置为true。 | ||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | |||
| ||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | ||||
| ||||
| ||||
| ||||
| ||||
| ||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| ||||
表 2 常用mountOptions参数说明
2.1.1.3 - 块业务
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
块业务存储类配置示例
使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: lun-181
pool: StoragePool001
volumeType: lun
allocType: thin
fsType: ext4
块业务支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | ||||
| |||||
| |||||
| |||||
在DeviceManager管理界面,选择“服务 > 块服务 > LUN组 (Namespace组)> LUN (Namespace)> 创建 > 应用类型”,获取应用类型名称。 | |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| |||||
表 2 常用mountOptions参数说明
表 3 支持的QoS配置
| ||
2.1.2 - 闪存存储(OceanStor A600/A800)
2.1.2.1 - 文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: StoragePool001
volumeType: fs
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.1 # NFS挂载时指定版本为4.1
DataTurbo协议配置示例
当容器使用OceanStor A系列存储,且存储支持DataTurbo协议访问时,可以参考如下配置示例。该示例中,DataTurbo共享用户名为user01。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: dtfs-nas-181
pool: pool001
volumeType: fs
allocType: thin
authUser: user01
文件业务支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | ||||
| |||||
| |||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | |||||
可以同时输入多个DataTurbo用户,以英文分号隔开。如示例:"auth_user1;auth_user2;auth_user3" | |||||
在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。 | |||||
| |||||
| |||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}' | 支持的高级参数列表请参考表3说明。 |
表 2 常用mountOptions参数说明
指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 | ||||
挂载HyperScale集群文件系统dn需要填写HyperScale集群下的域名。 dn参数描述仅供参考,DataTurbo协议其他挂载详细参数说明请参考《OceanStor DataTurbo DTFS用户指南》。 |
表 3 支持的高级创卷参数
2.1.3 - 海量存储(FusionStorage Block/OceanStor Pacific系列)
2.1.3.1 - 文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: pool001
volumeType: fs
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.1 # NFS挂载时指定版本为4.1
DPC协议配置示例
存储支持DPC协议访问时,可以在StorageClass中配置DPC访问的挂载参数。本例中设置挂载时使用“acl”做鉴权参数,使用“cnflush”为设置异步刷盘模式。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dpc-101
pool: pool001
volumeType: fs
allocType: thin
mountOptions:
- acl # 鉴权参数
- cnflush # 设置异步刷盘模式
文件系统支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
| |||||
| |||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"spaceQuota": "softQuota", "gracePeriod": 100}' | 支持的配额配置请参考表4说明。 | ||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
| |||||
| |||||
| |||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
|
表 2 常用mountOptions参数说明
指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 | ||||
acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。 | ||||
DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。 支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。 | ||||
异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。 | ||||
表 3 支持的QoS配置
必填。有效值为大于0的整数,单位MB/s。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824。 | ||
必填。有效值为大于0的整数。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824000。 |
表 4 支持的配额配置
2.1.3.2 - Dtree
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议支持的存储类配置示例
容器使用NFS协议对接Dtree资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.1。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dtree-181
parentname: parent-filesystem-name
volumeType: dtree
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.1 # NFS挂载时指定版本为4.1
DPC协议支持的存储类配置示例
容器使用DPC协议对接Dtree资源时,可以参考如下存储类配置示例。本例中设置挂载时使用“acl”做鉴权参数,使用“cnflush”为设置异步刷盘模式。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-dtree-181
parentname: parent-filesystem-name
volumeType: dtree
allocType: thin
authClient: "*"
mountOptions:
- acl # 鉴权参数
- cnflush # 设置异步刷盘模式
Dtree支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
|
| |||
常见的mountOptions参数参考表2。 | ||||
若仅在StorageClass中配置了parentname,而存储后端中未配置时,要求在安装CSI时将CSIDriverObject.attachRequired设置为true。 | ||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | |||
| ||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | ||||
| ||||
| ||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
|
表 2 常用mountOptions参数说明
指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 | ||||
acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。 | ||||
DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。 支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。 | ||||
异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。 | ||||
2.1.3.3 - 块业务
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
块业务存储类配置示例
使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: lun-181
pool: StoragePool001
volumeType: lun
allocType: thin
fsType: ext4
块业务支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
| |||||
| |||||
| |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
|
表 2 常用mountOptions参数说明
表 3 支持的QoS配置
必填。有效值为大于0的整数,单位MB/s。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824。 | ||
必填。有效值为大于0的整数。最大值请参考存储设备实际限制,如OceanStor Pacific NAS最大值为1073741824000。 |
2.1.4 - 海量存储(OceanDisk系列)
2.1.4.1 - 文件系统
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
NFS协议配置示例
容器使用NFS协议对接文件系统资源时,可以参考如下存储类配置示例。该示例中,NFS挂载时指定版本为4.0。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: nfs-nas-181
pool: StoragePool001
volumeType: fs
allocType: thin
authClient: "*"
mountOptions:
- nfsvers=4.0 # NFS挂载时指定版本为4.0
文件系统支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
|
PVC命名空间为:"namespace",PVC名称为:"pvc-1",PVC UID:"c2fd3f46-bf17-4a7d-b88e-2e3232bae434"。 volumeName配置为: "prefix-{{ .PVCNamespace }}_{{ .PVCName }}"。 最终存储资源名称为:"prefix-namespace_pvc-1-c2fd3f46bf174a7db88e2e3232bae434"。 | ||||
| |||||
| |||||
可以使用“*”表示任意客户端。当您不确定访问客户端IP信息时,建议使用“*”防止客户端访问被存储拒绝。 可以同时输入多个主机名称、IP地址或IP地址段,以英文分号隔开。如示例:"192.168.0.10;192.168.0.0/24;myserver1.test" | |||||
在DeviceManager管理界面,选择“服务 > 文件服务 > 文件系统 > 创建 > 应用类型”,获取应用类型名称。 | |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"CAPACITYTHRESHOLD": 90}' | 支持的高级参数列表请参考表4说明。 |
表 2 常用mountOptions参数说明
| ||||
表 3 支持的QoS配置
可选参数(未明确指定将使用后端存储默认值,具体参考相关存储资料)。
| |||
| |||
表 4 支持的高级创卷参数
2.1.4.2 - 块业务
创建存储类
准备存储类配置文件,如本例中的mysc.yaml文件,存储类配置请参考下方示例文件。
执行命令,使用配置文件创建StorageClass。
kubectl apply -f mysc.yaml
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
块业务存储类配置示例
使用LUN作为存储资源时,且需要格式化文件系统为本地文件系统时,可以参考如下示例。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: mysc
provisioner: csi.huawei.com
parameters:
backend: lun-181
pool: StoragePool001
volumeType: lun
allocType: thin
fsType: ext4
块业务支持的存储类参数详细说明
表 1 StorageClass配置参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | |||||
|
| ||||
常见的mountOptions参数参考表2。 | |||||
如果不设置,华为CSI会在所选后端上随机选择一个满足容量要求的存储池创建资源。建议指定存储池,确保创建的资源在预期的存储池上。 | |||||
| |||||
| |||||
| |||||
在DeviceManager管理界面,选择“服务 > 块服务 > LUN组 (Namespace组)> LUN (Namespace)> 创建 > 应用类型”,获取应用类型名称。 | |||||
配置项值是字典格式的JSON字符串(字符串两边由单引号修饰,字典key由双引号修饰)。如:'{"maxMBPS": 999, "maxIOPS": 999}' | 支持的QoS配置请参考表3说明。 | ||||
是否禁用卷容量校验,禁用后将不校验卷容量是否为扇区大小整数倍。
| |||||
表 2 常用mountOptions参数说明
表 3 支持的QoS配置
| ||
2.2 - 管理存储类
2.2.1 - 查询存储类
执行命令,查看已创建的StorageClass信息。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
2.2.2 - 修改存储类
Kubernetes限制仅允许修改存储类 是否允许扩容字段 (allowVolumeExpansion),修改方式如下:
执行命令,查看存储类是否允许扩容。
kubectl get sc mysc
命令结果示例如下,存储类mysc不允许扩容:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate false 8s
执行下列命令,将存储类修改为允许扩容:
kubectl patch sc mysc --patch '{"allowVolumeExpansion":true}'
再次查看存储类,修改成功:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 8s
2.2.3 - 删除存储类
执行命令,查看存储类。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate false 8s
执行下列命令,删除存储类:
kubectl delete sc mysc
回显如下所示,表示删除成功:
storageclass.storage.k8s.io "mysc" deleted
3 - 持久卷管理
根据业务的需求,容器中的文件需要在磁盘上进行持久化。当容器被重建或者重新分配至新的节点时,可以继续使用这些持久化数据。
为了可以将数据持久化到存储设备上,您需要在发放容器时使用 持久卷(PersistentVolume,PV) 以及 持久卷申领(PersistentVolumeClaim,PVC) 。
- PV:是Kubernetes集群中的一块存储,可以由管理员事先制备, 或者使用 存储类(StorageClass) 来动态制备。
- PVC:是用户对存储的请求。PVC会耗用 PV 资源。PVC可以请求特定的大小和访问模式 (例如,可以要求 PV能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载,参见 访问模式 )。
本章将介绍如何使用华为CSI对PV/PVC进行创建、扩容、克隆等操作。
3.1 - 配置持久卷
华为CSI支持在华为存储上创建存储资源(LUN/文件系统),并根据用户的设置供给容器使用。具体支持的特性请参考存储自身的 特性表 。
配置持久卷的方式按类型可分为配置动态持久卷、配置静态持久卷和纳管持久卷。
- 配置动态持久卷不需要事先创建PV,华为CSI会根据StorageClass自动在存储设备上创建PV所需要的资源。并且可以在创建PVC时同时创建PV。
- 配置静态持久卷需要管理员事先在存储设备上创建好所需要的资源,通过创建PV的方式使用已存在的资源。并且可以在创建PVC时指定关联的PV。
- 纳管持久卷不需要事先创建PV,通过在PVC中指定StorageClass与存储上的资源信息,在创建PVC时同时创建PV,并将已有存储资源纳管至集群。
3.1.1 - 配置动态持久卷
动态卷供应(Dynamic Volume Provisioning)允许按需创建存储卷。动态卷供应依赖StorageClass对象。 集群管理员可以根据需要定义多个StorageClass对象,在声明PV或者PVC时,指定满足业务要求的StorageClass。华为CSI在从华为存储设备上申请资源时,会根据StorageClass的预置定义,创建满足业务要求的存储资源。
配置说明
请根据以下步骤配置使用动态持久卷:
前置准备
在开始配置动态持久卷前,请参考 配置存储类 ,完成StorageClass的配置。
配置PVC
准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表1 。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem storageClassName: mysc resources: requests: storage: 100Gi
执行命令,使用配置文件创建PVC。
kubectl create -f mypvc.yaml
等待一段时间后,执行以下命令,查看已经创建的PVC信息。
kubectl get pvc mypvc
命令结果示例如下,如果PVC的状态是“Bound”时,则说明该PVC已经创建成功,后续可以被Pod使用。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-840054d3-1d5b-4153-b73f-826f980abf9e 100Gi RWO mysc 12s
- 完成创建PVC操作后,如果长时间后(如一分钟后)PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending 。
- 建议每批次最多批量创建/删除100个PVC。
表 1 配置动态卷持久卷PVC参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:
|
| |||
PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。 | ||||
|
|
表 2 ext4容量的规格
表 3 XFS容量的规格
使用PVC
在完成PVC创建后,就可以使用PVC来创建Pod。如下示例是一个简单的使用PVC示例,在该示例中,创建的Pod使用了刚刚创建的_ mypvc_。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:alpine
name: container-0
volumeMounts:
- mountPath: /tmp
name: pvc-mypvc
restartPolicy: Always
volumes:
- name: pvc-mypvc
persistentVolumeClaim:
claimName: mypvc # name of PVC
若使用PVC批量创建Pod,Pod长时间处于ContainerCreating状态,且huawei-csi-node服务状态为OOMKilled,说明当前huawei-csi-node服务内存不足。请根据 表1 ,将huawei-csi-node内存限制增大。
3.1.2 - 配置静态持久卷
静态卷供应(Static Volume Provisioning)允许管理员使用已经在存储侧创建的资源做为PV,供集群中的容器使用。
配置说明
请根据以下步骤配置使用静态持久卷:
前置准备
存储侧已经存在待创建PV所需要的存储资源,如LUN或者文件系统。如果存储资源是文件系统,还需要创建文件系统的共享和客户端信息。
配置PV
准备PV配置文件mypv.yaml,示例如下,其他配置参数请参考 表1 。
kind: PersistentVolume apiVersion: v1 metadata: name: mypv spec: volumeMode: Filesystem storageClassName: "" # 必须配置为"" accessModes: - ReadWriteOnce csi: driver: csi.huawei.com # CSI驱动名称 volumeHandle: iscsi-dorado-181.lun0001 # 卷名称 fsType: xfs # 文件系统类型 capacity: storage: 100Gi
静态卷供应的配置文件中,storageClassName参数必须配置为‘“”’,如果不配置,Kubernetes会使用系统默认的StorageClass。执行以下命令,基于准备好的yaml文件创建PV。
kubectl create -f mypv.yaml
等待一段时间后,执行以下命令,查看已经创建的PV信息。
kubectl get pv
命令结果示例如下,当PV状态为“Available”时,表明PV创建成功。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE mypv 100Gi RWO Retain Available 4s
表 1 配置静态卷持久卷PV参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:
|
| |||
|
| |||
| ||||
纳管对象为Dtree资源,且存储后端中未配置parentname参数时,必须配置该参数。 若仅在PV中配置了dTreeParentName,而对应的存储后端中未配置parentname时,要求在安装CSI时根据表5将CSIDriverObject.attachRequired设置为true。 | ||||
请确保与存储上对应资源的容量保持一致。Kubernetes并不会调用CSI检查此字段值的正确性,所以在PV容量与存储上对应资源的容量不一致也能被成功创建。 | ||||
指定NFS版本挂载时,当前支持NFS 3/4.0/4.1/4.2协议(需存储设备支持且开启)。当配置参数为nfsvers=4时,因为操作系统配置的不同,实际挂载可能为NFS 4的最高版本协议,如4.2,当需要使用4.0协议时,建议配置nfsvers=4.0。 | ||||
acl、aclonlyposix、cnflush、cflush参数描述仅供参考,详细参数说明请参考《OceanStor Pacific系列 产品文档》 > 配置 > 文件服务基础业务配置指南 > 配置基础业务(DPC场景) > 客户端访问DPC共享 > 步骤2。 | ||||
DPC命名空间支持POSIX ACL功能,DPC客户端支持POSIX ACL的鉴权行为。 支持POSIX ACL的协议有:DPC、NFSv3、HDFS。如使用NFSv4 ACL或NT ACL,会导致DPC客户端无法识别该类型的ACL,从而导致该类型的ACL不会生效。 | ||||
异步刷盘模式,当文件关闭时不会同步将Cache的数据持久化到存储介质中,而是通过Cache异步刷盘的方式将数据写入存储介质,Cache的后台刷盘将在写业务完成后根据刷盘周期定时刷盘。在多客户端场景下,对同一文件进行并行操作,文件Size的更新会受刷盘周期的影响,即当刷盘动作完成后才会更新文件的Size,更新通常会在数秒内完成。同步I/O不受刷盘周期影响。 | ||||
配置PVC
当PV以静态卷供应的方式创建完成后,可以基于该PV创建PVC,从而供容器使用。
准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表2 。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: storageClassName: "" accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 100Gi volumeName: mypv # 对应PV名称
执行以下命令,基于已配置的yaml文件创建PVC。
kubectl create -f mypvc.yaml
等待一段时间后,执行以下命令,查看已经创建的PVC信息。
kubectl get pvc
命令结果示例如下,当PVC状态为“Bound“时,表明PVC创建成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-840054d3-1d5b-4153-b73f-826f980abf9e 100Gi RWO 12s
- 完成创建PVC操作后,如果长时间后PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending 。
- 建议每次最多批量创建/删除100个PVC。
表 2 配置静态持久卷PVC参数说明
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
|
| |||
可选, 支持Filesystem或Block, 默认为Filesystem。该参数在创建Pod时生效,其中Filesystem表示在PVC上创建一个文件系统访问存储, Block表示使用裸卷的方式访问存储。 | ||||
PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。 如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。 在通过静态PV创建PVC时,若PVC容量小于绑定PV容量,最终PVC容量大小为绑定PV容量,若PVC容量大于绑定PV容量,PVC将无法被创建。 | ||||
使用PVC
与动态卷供应 使用PVC 方式相同。
3.1.3 - 纳管持久卷
纳管卷供应(Manage Volume Provisioning)允许管理员使用已经在存储侧创建的资源做为PV,并能够支持动态卷的特性,例如:扩容,快照,克隆等,属于华为CSI自定义能力。使用该特性可满足如下场景:
- 容器化应用的改造场景,需要使用已有的存储卷。
- 重建Kubernetes集群。
- 容灾场景下,对存储数据进行迁移。
纳管卷供应支持将已有存储资源纳管至Kubernetes,不允许将一个存储资源纳管多次和针对同一个存储资源进行并发删除/创建操作。 当同一个存储资源被多个集群纳管时,在单个集群中针对该纳管卷的操作仅在当前集群内生效,不会同步到其他集群中,需要使用者自行在其他集群中对该纳管卷进行数据同步操作。 例如:在某一集群中对PVC进行扩容时,其他集群对应的PVC不会自动扩容,需要在其他集群中手动根据 扩容持久卷 中的扩容命令进行扩容。
配置说明
请根据以下步骤纳管使用持久卷:
前置准备
- 已在CSI中注册需要纳管卷所在存储。
- 已登录存储设备获取需要纳管卷的名称和容量。
- 已完成StorageClass的配置,参考 配置存储类 (关注表格中的“纳管卷是否生效”字段)。
配置PVC
准备PVC配置文件mypvc.yaml,示例如下,其他配置参数请参考 表1 。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc annotations: csi.huawei.com/manageVolumeName: "*" # 存储资源名称 csi.huawei.com/manageBackendName: "*" # 存储后端名称 labels: provisioner: csi.huawei.com spec: accessModes: - ReadWriteOnce volumeMode: Filesystem storageClassName: mysc resources: requests: storage: 100Gi
执行命令,使用配置文件创建PVC。
kubectl create -f mypvc.yaml
等待一段时间后,执行以下命令,查看已经创建的PVC信息。
kubectl get pvc mypvc
命令结果示例如下,如果PVC的状态是“Bound”时,则说明该PVC已经创建成功,后续可以被Pod使用。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-840054d3-1d5b-4153-b73f-826f980abf9e 100Gi RWO mysc 12s
- 完成创建PVC操作后,如果长时间后(如一分钟后)PVC的状态是Pending,请参考 创建PVC时, PVC的状态为Pending 。
- 建议每批次最多批量创建/删除100个PVC。
表 1 纳管持久卷PVC参数说明
| csi.huawei.com/manageVolumeName: * csi.huawei.com/manageBackendName: * |
| ||
以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字开头和结尾。 | ||||
卷模式。可选参数。 当使用LUN类型的卷时,支持配置以下类型:
|
| |||
PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见表2;当使用的是XFS文件系统时,容量限制见表3。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。 | ||||
|
|
使用PVC
与动态卷供应 使用PVC 方式相同。
3.2 - 管理持久卷
3.2.1 - 扩容持久卷
OceanStor V700R001C10和OceanStor Dorado V700R001C10及以后版本,扩容后文件系统的容量存在最小限制,具体限制值参考对应存储的产品手册。
当容器使用的PVC容量不足时,需要对该PVC进行扩容操作。
前提条件
PVC已创建,所在的backend存在且支持扩容。
支持扩容的存储请参考 兼容性和特性 章节中的特性表格,支持扩容的Kubernetes版本请参考 Kubernetes特性矩阵 。
huawei-csi-controller启用了csi-resizer服务。
kubectl describe deploy huawei-csi-controller -n huawei-csi | grep csi-resizer
命令回显示例如下则说明已启用csi-resizer服务。
csi-resizer: Image: k8s.gcr.io/sig-storage/csi-resizer:v1.9.0
操作步骤
执行命令,查询StorageClass是否支持扩容。其中,mysc 为需要查看的StorageClass名称。
kubectl get sc mysc
命令结果示例如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE mysc csi.huawei.com Delete Immediate true 172m
如果ALLOWVOLUMEEXPANSION的值为true,表示当前StorageClass已经支持扩容,请跳转至步骤 3 。
执行以下命令,将“allowVolumeExpansion“的值修改为“true“。其中,mysc 为需要修改的StorageClass名称。
kubectl patch sc mysc --patch '{"allowVolumeExpansion":true}'
执行命令,查询PVC的StorageClass名称。其中,mypvc 为需要扩容的PVC名称。
kubectl get pvc mypvc
命令结果示例如下:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-3383be36-537c-4cb1-8f32-a415fa6ba384 2Gi RW0 mysc 145m
执行以下命令进行扩容。
kubectl patch pvc mypvc -p '{"spec":{"resources":{"requests":{"storage":"120Gi"}}}}'
其中,"mypvc“是需要扩容的PVC名称,“120Gi”是扩容后的容量大小。请根据实际情况进行替换。
- PVC容量的规格取决于存储规格限制和主机规格限制。以OceanStor Dorado 6.1.2/OceanStor Pacific系列 8.1.0对接CentOS 7为例,当使用的是ext4文件系统时,容量限制见 表2 ;当使用的是XFS文件系统时,容量限制见 表3 。如果使用的是NFS或者裸设备,容量需满足使用的华为存储设备型号和版本所要求的规格约束。
- 如果PVC容量不在规格范围内,可能会由于存储规格限制或主机文件系统规格限制导致创建PVC或Pod失败。
- 如果扩容的目标容量超过存储池容量导致扩容失败,请参考 PVC扩容的目标容量超过存储池容量导致扩容失败 。
执行命令,检查容量修改是否生效。
kubectl get pvc
命令结果示例如下,如果CAPACITY字段已变更为指定容量,说明扩容成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mypvc Bound pvc-3383be36-537c-4cb1-8f32-a415fa6ba384 120Gi RWO mysc 24s
3.2.2 - 克隆持久卷
本章节描述如何克隆PVC。
在克隆PVC时,需要指定数据源。如下是一个克隆PVC示例,在该示例中,使用“mypvc”作为数据源,新创建了一个名叫“myclone”的PVC。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclone
spec:
storageClassName: mysc
dataSource:
name: mypvc
kind: PersistentVolumeClaim
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
- 指定的storageClassName必须和dataSource中的源卷的StorageClass需一致。
- 克隆卷的容量必须不小于源卷容量,建议和源卷容量保持一致。
前提条件
系统中已经存在源PVC,且源PVC所在的backend支持克隆。支持克隆的存储请参考 兼容性和特性 章节中的特性表格,支持克隆的Kubernetes版本请参考 Kubernetes特性矩阵 。
操作步骤
执行以下命令,基于克隆卷的配置文件创建PVC。
kubectl create -f myclone.yaml
3.2.3 - 变更持久卷
3.2.3.1 - 开启PVC变更特性
当前华为CSI安装时默认关闭PVC变更特性,如需要使用该特性,请按照以下步骤开启。
3.2.3.1.1 - 使用Helm开启PVC变更特性
前提条件
已使用Helm安装华为CSI。
操作步骤
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
执行以下命令检查PVC变更特性是否开启。
其中helm-huawei-csi为安装时指定的Helm Chart名称,huawei-csi为安装时指定的Helm Chart命名空间。组件包路径请参考 表1 。
helm get values helm-huawei-csi -n huawei-csi -a | grep volumeModify -A 1
命令结果示例如下:
- 若回显内容为“enabled: true”,则表示特性开启,可跳过后续步骤。
- 若回显内容为“enabled: false”,请按照后续步骤开启PVC变更特性。
volumeModify: enabled: false
进入/helm/esdk目录,执行命令,配置卷变更CRD。
# kubectl apply -f ./crds/volume-modify/ customresourcedefinition.apiextensions.k8s.io/volumemodifyclaims.xuanwu.huawei.io configured customresourcedefinition.apiextensions.k8s.io/volumemodifycontents.xuanwu.huawei.io configured
如回显中存在“Warning: resource customresourcedefinitions/volumemodifycontents.xuanwu.huawei.io is missing the kubectl.kubernetes.io/last-applied-configuration…”提示,可忽略该提示。该提示出现原因是由于Helm安装应用时使用的是kubectl create命令而不是kubectl apply命令。helm get values helm-huawei-csi -n huawei-csi -a > ./update-values.yaml
执行vi update-values.yaml命令打开 4 中获取的文件,修改以下配置。修改完成后,按Esc,并输入**:wq!**,保存修改。
csiExtender: volumeModify: enabled: true
执行以下命令更新华为CSI服务。
helm upgrade helm-huawei-csi ./ -n huawei-csi -f ./update-values.yaml
执行命令检查服务是否启动。
kubectl get pod -n huawei-csi
命令结果示例如下,其中huawei-csi为华为CSI部署命名空间。
NAME READY STATUS RESTARTS AGE huawei-csi-controller-6dfcc4b79f-9vjtq 10/10 Running 0 24m huawei-csi-node-tqs87 3/3 Running 0 20m
3.2.3.1.2 - 手动方式开启PVC变更特性
前提条件
已使用手动方式安装华为CSI。
操作步骤
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
进入manual/esdk工作目录下,执行以下命令,配置卷变更CRD。
kubectl apply -f ./crds/volume-modify/
执行以下命令。组件包路径请参考 表1 。
kubectl apply -f ./deploy/huawei-csi-controller-extender.yaml
执行命令检查服务是否启动。
kubectl get pod -n huawei-csi
命令结果示例如下,其中huawei-csi为华为CSI部署命名空间。
NAME READY STATUS RESTARTS AGE huawei-csi-controller-6dfcc4b79f-9vjtq 10/10 Running 0 24m huawei-csi-node-tqs87 3/3 Running 0 24m
3.2.3.2 - 配置PVC变更
PVC变更特性使用CRD实现,当前资源说明如下。
表 1 资源说明
- VolumeModifyClaim资源支持创建/删除/查询,不支持更新。
- VolumeModifyContent资源仅支持查询,用于展示单个PVC变更详情,请勿手动创建/删除/修改。
- VolumeModifyContent资源被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。
3.2.3.2.1 - 创建PVC变更
前提条件
待变更PVC关联的存储后端已经组成双活存储后端,若未组成双活存储后端,请参考 更新存储后端信息 章节配置。
PVC变更文件说明
PVC变更文件样例模板为/examples/volumemodifyclaim.yaml,具体配置项如下表所示:
表 1 参数说明
名称必须满足DNS 子域名的命名规则,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以小写字母数字字符开头和结尾,最大长度不超过63个字符。 注意:在PVC变更过程中,会对原StorageClass进行备份,备份StorageClass的名称为“<原StorageClass名称><VolumeModifyClaim名称>”,且需符合StorageClass命名规则。 | ||||
| 当且仅当spec.parameters.hyperMetro为"true"时生效。
|
- spec.source.kind和spec.source.name用于指定卷变更范围,例如配置为StorageClass和对应名称时,将会变更使用目标StorageClass发放的所有的处于Bound状态的PVC。
- 当所有关联的PVC完成变更后,华为CSI会替换原有的StorageClass,并增加VolumeModifyClaim的spec.parameters参数,使得PVC满足StorageClass定义。
典型场景配置请参考如下示例:
变更普通卷为双活卷
配置变更普通卷为双活卷示例如下:
apiVersion: xuanwu.huawei.io/v1
kind: VolumeModifyClaim
metadata:
name: myvmc
spec:
source:
kind: StorageClass
name: mysc
parameters:
hyperMetro: "true"
创建PVC变更资源
- 变更的双活卷仅支持双活AA模式。
- 如果变更场景为普通卷变更为双活卷,则仅支持变更主站点端存储卷。
- 创建PVC变更资源期间,请勿使用华为CSI管理PVC。
- 不支持对同一个PVC创建多个VolumeModifyClaim资源,若存在对目标PVC的多次变更,请在单次变更完成之后再执行。
使用PVC变更文件创建PVC变更资源步骤如下。
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
执行以下命令,创建PVC变更。
kubectl create -f volumemodifyclaim.yaml
参考 查询PVC变更 查询创建结果。
3.2.3.2.2 - 查询PVC变更
本章节介绍如何使用Kubectl查询PVC变更状态,当前华为CSI通过CRD提供以下API。
查询VolumeModifyClaim
使用kubectl查询VolumeModifyClaim步骤如下。
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
执行以下命令,查询PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。
kubectl get volumemodifyclaims <vmc-name> -owide
命令结果示例如下:
NAME STATUS READY SOURCEKIND SOURCENAME STARTEDAT COMPLETEDAT AGE myvmc Completed 1/1 StorageClass mysc 2024-06-06T03:19:13Z 2024-06-06T03:19:16Z 2m2s
表 1 回显说明
- Pending:初始状态。
- Creating:VolumeModifyClaim完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
- Completed:所有关联的PVC均完成变更。
- Rollback:关联的PVC部分完成变更时,用户执行了删除PVC变更操作。
- Deleting:关联的PVC全部完成变更时,用户执行了删除PVC变更操作。
VolumeModifyClaim支持使用kubectl查看Events信息,当VolumeModifyClaim无法满足创建要求,或者创建过程中出现错误时,服务端将记录Events信息。参考命令如下:kubectl describe volumemodifyclaims local-to-hypermetro
查询VolumeModifyContent
VolumeModifyContent由VolumeModifyClaim资源创建,记录了单个PVC的变更详情,使用kubectl查询VolumeModifyContent步骤如下。
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
执行命令,查询PVC变更。其中myvmc-uid为VolumeModifyContent资源名称。
kubectl get volumemodifycontents myvmc-uid -owide
命令结果示例如下:
NAME STATUS MODIFYCLAIMNAME SOURCEVOLUME STARTEDAT COMPLETEDAT AGE myvmc-uid Completed myvmc default/mypvc 2024-06-06T03:19:07Z 2024-06-06T03:19:09Z 36m
表 2 回显说明
VolumeModifyContent资源状态,可取值如下:
- Pending:初始状态。
- Creating:VolumeModifyContent完成基本校验,且服务端已经接收变更任务,但是该任务还未执行完成。
- Completed:关联的PVC完成变更。
- Rollback:正在回滚PVC变更。
VolumeModifyContent支持使用kubectl查看Events信息,当VolumeModifyContent无法满足创建要求,或者变更PVC出现错误时,服务端将记录Events信息。参考命令如下:kubectl describe volumemodifycontents myvmc-uid
3.2.3.2.3 - 删除PVC变更
- 当VolumeModifyClaim的STATUS值为Creating时,删除VolumeModifyClaim资源,将会在存储侧删除此次变更创建的资源,然后移除集群资源。在删除后,如果继续使用原有的StorageClass进行PVC管理,需要将关联的存储后端恢复为非双活存储后端。
- 当VolumeModifyClaim的STATUS值为Pending或Completed时,删除VolumeModifyClaim资源,仅会移除集群资源,不会和存储交互,即不会在存储侧删除变更创建的资源。
- VolumeModifyContent被VolumeModifyClaim管理,请勿手动管理VolumeModifyContent资源。
- 若待变更PVC中已有部分PVC满足变更要求,当批量变更失败时,会移除掉所有PVC的变更,导致已满足变更条件的PVC不再满足。
- 若待变更PVC已经在存储侧被手动管理,则可能导致变更失败。使用变更特性时,请勿手动管理存储卷。
当前章节介绍如何使用kubectl删除PVC变更,基于步骤如下。
操作步骤
使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
执行 命令,删除PVC变更。其中 vmc-name 为VolumeModifyClaim资源名称。
kubectl delete volumemodifyclaims <vmc-name>
参考 查询PVC变更 查询创建结果。