本章节介绍如何创建存储后端,当前支持根据配置的后端yaml文件和导出的configmap.json文件两种方式创建后端。
如果通过新增后端yaml文件创建后端,请参考典型场景存储后端配置文件示例章节配置后端文件。
如果已存在导出的configmap.json文件,请参考创建存储后端章节创建存储后端。
本章节介绍如何创建存储后端,当前支持根据配置的后端yaml文件和导出的configmap.json文件两种方式创建后端。
如果通过新增后端yaml文件创建后端,请参考典型场景存储后端配置文件示例章节配置后端文件。
如果已存在导出的configmap.json文件,请参考创建存储后端章节创建存储后端。
- 使用oceanctl创建存储后端时,输入的账号和秘钥信息保存在Secret对象中,建议客户容器平台根据供应商或者K8s社区的建议自行对Secret进行加密。K8s社区对Secret加密可参考启用静态加密。
- 通过json文件创建后端时,旧版本的backend名称中可能存在大写字母或"_“字符。如果出现这种情况,旧的名称将会被重映射为一个新的名称,映射过程自动发生,不会影响原有功能。例如“ABC_123”将会被映射为“abc-123-fd68e”,具体映射规则如下:
- 大写字母转换成小写字母。
- “_“字符转换成“-”字符。
- 末尾追加5位Hash码。
- 当存储后端对接租户时,在存储后端创建完成后,不允许修改租户名称。
参考典型场景存储后端配置文件示例章节准备后端配置文件,如backend.yaml,若需创建多个后端,请使用’”—“分隔。
storage: "oceanstor-san"
name: "backend-1"
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"
---
storage: "oceanstor-san"
name: "backend-2"
namespace: "huawei-csi"
urls:
- "https://192.168.129.158: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-1 oceanstor-san https://192.168.129.157:8088
2 false backend-2 oceanstor-san 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:admin
Please enter this backend password:
Backend backend-1 is configured
NUMBER CONFIGURED NAME STORAGE URLS
1 true backend-1 oceanstor-san https://192.168.129.157:8088
2 false backend-2 oceanstor-san 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-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
典型场景的backend配置请参考下列示例,详细的参数配置请参考存储后端配置项说明。
如果要使用iSCSI协议类型,请确保在安装华为CSI前,主机上已安装iSCSI客户端,可通过检查主机依赖软件状态章节检查。如未安装iSCSI客户端,请在安装iSCSI客户端之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:
kubectl delete pods -n huawei-csi -l app=huawei-csi-node
企业存储配置iSCSI协议类型的后端配置文件示例如下:
storage: "oceanstor-san"
name: "dorado-iscsi-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "iscsi"
portals:
- "192.168.128.120"
- "192.168.128.121"
maxClientThreads: "30"
分布式存储配置iSCSI协议类型的后端配置文件示例如下:
storage: "fusionstorage-san"
name: "pacific-iscsi-125"
namespace: "huawei-csi"
urls:
- "https://192.168.129.125:8088"
- "https://192.168.129.126:8088"
pools:
- "StoragePool001"
parameters:
protocol: "iscsi"
portals:
- "192.168.128.122"
- "192.168.128.123"
maxClientThreads: "30"
如果要使用FC协议类型,请确保在安装华为CSI前,主机和存储的FC网络已联通,如未FC网络未打通,请在打通FC网络之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:
kubectl delete pods -n huawei-csi -l app=huawei-csi-node
企业存储配置FC协议类型的后端配置文件示例如下:
storage: "oceanstor-san"
name: "fc-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "fc"
maxClientThreads: "30"
如果要使用NVMe over RoCE协议类型,请确保在安装华为CSI前,主机和存储的NVMe over RoCE网络已联通,如未NVMe over RoCE网络未打通,请在打通NVMe over RoCE网络之后重启huawei-csi-node服务,重启期间,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。参考命令如下:
kubectl delete pods -n huawei-csi -l app=huawei-csi-node
企业存储配置NVMe over RoCE协议类型的后端配置文件示例如下:
storage: "oceanstor-san"
name: "roce-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "roce"
portals:
- "192.168.128.120"
- "192.168.128.121"
maxClientThreads: "30"
企业存储配置NVMe over FC协议类型的后端配置文件示例如下:
storage: "oceanstor-san"
name: "fc-nvme-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "fc-nvme"
maxClientThreads: "30"
企业存储配置NFS协议类型的后端配置文件示例如下:
storage: "oceanstor-nas"
name: "nfs-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "nfs"
portals:
- "192.168.128.155"
maxClientThreads: "30"
分布式存储配置NFS协议类型的后端配置文件示例如下:
storage: "fusionstorage-nas"
name: "nfs-126"
namespace: "huawei-csi"
urls:
- "https://192.168.129.125:8088"
- "https://192.168.129.126:8088"
pools:
- "StoragePool001"
parameters:
protocol: "nfs"
portals:
- "192.168.128.123"
maxClientThreads: "30"
分布式存储配置SCSI协议类型的后端配置文件示例如下:
storage: "fusionstorage-san"
name: "scsi-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
pools:
- "StoragePool001"
parameters:
protocol: "scsi"
portals:
- {"hostname01": "192.168.125.21","hostname02": "192.168.125.22"}
maxClientThreads: "30"
分布式存储配置DPC协议类型的后端配置文件示例如下:
storage: "fusionstorage-nas"
name: "dpc-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
parameters:
protocol: "dpc"
maxClientThreads: "30"
企业存储配置Dtree类型后端配置文件示例如下:
storage: "oceanstor-dtree"
name: "nfs-dtree"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
parameters:
protocol: "nfs"
parentname: "parent-filesystem"
portals:
- "192.168.128.155"
maxClientThreads: "30"
- 配置NAS双活前,需要在两台存储设备之间配置双活关系,包含远端设备、双活域等,仅支持文件系统双活域工作模式为双活AA模式,配置操作请参考对应存储型号的产品文档。
- 对接NAS双活后端的账号必须为存储租户的租户管理员账号。
- 除NAS双活后端外,其他后端的管理URL不能配置为在已建立双活关系的租户的逻辑管理端口的URL。
- 使用双活类型的存储后端时,请勿发放普通文件系统。否则,在逻辑端口漂移场景下,有业务中断的风险。
CSI支持在对接OceanStor或OceanStor Dorado,并在存储侧发放NFS类型的双活卷时。需要配置互为双活的存储后端,具体操作为分别创建两个配置文件,逐一创建后端。
本示例展示了如何为华为OceanStor或OceanStor Dorado存储配置双活类型的后端。首先创建本端的存储后端配置文件nfs-hypermetro-155.yaml:
storage: "oceanstor-nas"
name: "nfs-hypermetro-155"
namespace: "huawei-csi"
urls:
- "https://192.168.129.155:8088"
- "https://192.168.129.156:8088"
pools:
- "StoragePool001"
metrovStorePairID: "f09838237b93c000"
metroBackend: "nfs-hypermetro-157"
parameters:
protocol: "nfs"
portals:
- "192.168.129.155"
maxClientThreads: "30"
创建本端后端完成后,创建远端的存储后端配置文件nfs-hypermetro-157.yaml:
storage: "oceanstor-nas"
name: "nfs-hypermetro-157"
namespace: "huawei-csi"
urls:
- "https://192.168.129.157:8088"
- "https://192.168.129.158:8088"
pools:
- "StoragePool001"
metrovStorePairID: "f09838237b93c000"
metroBackend: "nfs-hypermetro-155"
parameters:
protocol: "nfs"
portals:
- "192.168.129.157"
maxClientThreads: "30"
后端配置文件样例模板为/examples/backend/backend.yaml,该文件为一个示例文件,具体配置项如下表所示:
表 1 backend配置项说明
| 一个后端只允许提供一种存储服务。如果单套华为存储系统可以同时提供SAN和NAS的存储服务时,可以配置创建多个后端,每个后端使用不同的存储服务类型。 | |||
存储侧的账户名称。当对接资源是OceanStor Pacific NAS存储,需要在指定账户下发放NAS资源时,需要指定该参数。 | ||||
当对接后端是OceanStor或OceanStor Dorado存储,需要在指定租户下发放资源时,该参数配置为指定租户的逻辑管理端口URL。 | ||||
|
| |||
业务访问端口。节点会使用该端口对存储资源进行读写访问。参数格式为一个列表 iscsi,roce协议支持配置多个端口,nfs协议仅支持配置一个端口,fc、fc-nvme、dpc协议无需配置业务端口,scsi协议的端口形式为字典格式,key为主机名称,value为IP地址,仅支持IPv4。 |
| |||
如果主机多路径配置启用了ALUA,请确保后端ALUA配置和主机的ALUA配置一致。 ALUA详细配置请参考通过Helm配置ALUA特性。 | ||||
如果启用存储拓扑感知,需要配置该参数。具体请参考通过Helm配置存储拓扑感知。 | ||||
请参考查询存储后端节,使用oceanctl命令查询存储后端信息。
- 当前使用oceanctl更新存储后端信息时,仅支持更新存储后端密码。
- 若在存储侧更新了后端的账号密码,CSI插件会因登录失败而重试,可能会导致账号被锁定。如果账号被锁定,请参考存储侧更新密码后账户被锁定章节修改。
执行以下命令获取更新存储后端帮助。
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
Flags:
-h, --help help for backend
-n, --namespace string namespace of resources
--password Update account password
执行以下命令更新存储后端信息。
oceanctl update backend backend-1 --password
根据提示输入新的用户名和密码:
Please enter this backend user name:admin
Please enter this backend password:
backend/backend-1 updated
- PVC发放需要基于已配置的存储后端,因此当存储后端已经发放PVC时,请勿随便修改存储后端。
- 名称是存储后端的唯一标识,已发放PVC的存储后端不允许修改名称。
- 存储后端修改后,新增配置仅作用于新发放的卷。
- 存储后端修改期间,请勿执行卷管理操作。
正在执行卷管理操作期间,请勿删除存储后端。
执行以下命令获取存储后端。
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