根据镜像导入的不同,HBlock CSI插件使用HELM方式安装时,可以根据情况选择其中一种方法:
逐台导入镜像的方式:适用于Kubernetes集群的节点数量不多的部署场景。
Docker私仓导入镜像的方式:适用于节点多的部署场景。
前置条件
安装驱动前:
执行kubectl get csidrivers,确认无同名驱动配置;若存在,则删除。
已经安装HELM 3.12及以上版本。
安装HBlock CSI时,需打开iscsiOnHost(1.5.1之前版本不支持设置该参数)的开关,即iscsid、multipathd守护进程由宿主机启动,需要配置宿主机的iscsid和multipathd。
配置宿主机的iscsid和multipathd步骤如下:
在Kubernetes所有的slave节点宿主机安装iSCSI工具,并配置/etc/iscsi/iscsid.conf。
安装宿主机的iSCSI工具。
如果操作系统是CentOS/RHEL,请安装iscsi-initiator-utils,安装命令如下:
yum -y install iscsi-initiator-utils注意
安装iSCSI initiator 6.2.0-874-10 或以上版本。
如果操作系统是Ubuntu/Debian,安装命令如下:
apt install open-iscsi
修改/etc/iscsi/iscsid.conf配置文件。
#如需启用iscsi target迁移自动恢复, 那么得将iscsid.safe_logout设置为No iscsid.safe_logout = No在各宿主机启动iSCSI进程。
systemctl enable iscsid systemctl restart iscsid # 确认iSCSI进程状态正常 systemctl status iscsid
在Kubernetes所有的slave节点宿主机配置MPIO。
安装 MPIO。
说明
如果已安装MPIO,忽略此步骤。
对于CentOS:
yum -y install device-mapper-multipath device-mapper-multipath-libs对于Ubuntu:
apt install multipath-tools
配置 MPIO。
复制 /usr/share/doc/device-mapper-multipath-X.Y.Z/multipath.conf(其中X.Y.Z为multipath的实际版本号,请根据实际情况查找multipath.conf)到/etc/multipath.conf。
在/etc/multipath.conf中增加如下配置:
注意
配置文件multipath.conf中,如果multipath部分与devices部分中有相同参数,multipath中的参数值会覆盖devices中的参数值。为了正常使用HBlock卷,需要删除multipath中的与下列字段相同的参数。
defaults { user_friendly_names yes find_multipaths yes uid_attribute "ID_WWN" } devices { device { vendor "CTYUN" product "iSCSI LUN Device" path_grouping_policy failover path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry queue prio alua } }说明
user_friendly_names可以设置为yes,也可以设置为no。一旦设定,不能更改。
user_friendly_names yes:
系统根据/etc/multipath/bindings中的设置为多路径设备分配别名,默认格式为mpathn(例如mpatha、mpathb等)。
若同时设置alias_prefix "<前缀>",则别名以前缀重新编号,例如:设置alias_prefix "disk",多路径设备的别名是/dev/mapper/diska、/dev/mapper/diskb等。
建议前缀使用默认设置,易于维护。
user_friendly_names no:系统会使用 WWID (全球唯一标识符)作为多路径设备的别名。
重启multipathd服务。
对于CentOS:
systemctl restart multipathd systemctl enable multipathd对于Ubuntu:
systemctl restart multipath-tools.service
逐台导入镜像的方式
执行以下安装步骤(适用于Kubernetes集群的节点数量不多的部署场景,以1.6.1的X86版本为例):
在Kubernetes master和node上解压安装包。
unzip stor-csi-driver-1.6.1_x64.zip在Kubernetes master和node上导入插件镜像。
cd stor-csi-driver-1.6.1_x64 docker load < stor-csi-driver.tar在Kubernetes master节点执行部署脚本,进行插件的安装。
注意
若在同一 Kubernetes 集群中安装多套HBlock CSI,需将charts分放不同文件夹,重复此步骤多次。
根据前置条件,判断是否修改charts/csi-driver-stor/value.yaml中iscsiOnHost。如果安装多套HBlock CSI,还需要修改charts/csi-driver-stor/value.yaml中的driverName和driverNamespace。
参数 描述 是否必填 driverName HBlock CSI驱动名称。
取值:字符串形式,长度范围是1~63,只能由小写字母、数字、句点(.)和短横线(-)组成,且仅支持以字母或数字开头。禁止出现连续符号。
默认值为stor.csi.k8s.io。
注意
在同一Kubernetes集群中,HBlock CSI驱动名称必须唯一,不能重复。
是 driverNamespace HBlock CSI绑定的Kubernetes命名空间。若需安装多套HBlock CSI,必须为每套指定不同的命名空间。
注意
必须为已经存在的Kubernetes命名空间。
默认值为:default。
是 iscsiOnHost iscsid、multipathd守护进程由宿主机启动,而非CSI POD启动。
取值:true:iscsid、multipathd守护进程由宿主机启动的模式。
是 执行安装脚本。
如果已经安装了快照相关的CRDs,请执行下列命令:
说明
需要已安装的快照相关CRDs支持Kubernetes Snapshot的v1 API。
cd charts/csi-driver-stor/ helm install stor ./ --skip-crds如果未安装快照相关的CRDs,请执行下列命令:
cd charts/csi-driver-stor/ helm install stor ./
安装完成后,可以看到以下pod、HBlock的plugin以及Sidecar容器正常启动:
说明
如果Kubernetes命名空间非default,需要使用命令kubectl get pod -n namespace查询。
[root@server csi-driver-stor]# kubectl get pod NAME READY STATUS RESTARTS AGE csi-snapshot-updater-cronjob-1758160800-8r7pq 0/1 Completed 0 8s csi-storplugin-controller-79df7bf49c-dbcgx 4/4 Running 0 2m19s csi-storplugin-node-kggmj 2/2 Running 0 2m18s csi-storplugin-node-lngll 2/2 Running 0 2m18s snapshot-controller-0 1/1 Running 0 2m19s
docker 私仓导入镜像的方式
若节点数量较多,可以使用私仓方式安装HBlock CSI插件,避免在Kubernetes的所有节点上都导入插件。用户可先将插件镜像推送到私仓中,修改插件YAML文件的image地址为私仓中镜像地址,执行安装脚本即可完成安装。
在集群中任意一台服务器上执行下面的操作(以1.6.1的X86版本为例):
解压安装包。
unzip stor-csi-driver-1.6.1_x64.zip导入插件镜像。
cd stor-csi-driver-1.6.1_x64 docker load < stor-csi-driver.tar推送镜像到私仓。
docker tag stor-csi-driver:1.6.1 xxx.xxx.xxx.xxx:port/stor-csi-driver:1.6.1 docker push xxx.xxx.xxx.xxx:port/stor-csi-driver:1.6.1其中,xxx.xxx.xxx.xxx:port为私仓地址。
查看私仓。
cat /etc/docker/daemon.json修改YAML镜像拉取地址。
修改charts\csi-driver-stor\values.yaml文件中csiStorPlugin的值为xxx.xxx.xxx.xxx:port/stor-csi-driver:1.6.1。
images: csiProvisioner: registry.aliyuncs.com/google_containers/csi-provisioner:v3.5.0 csiAttacher: registry.aliyuncs.com/google_containers/csi-attacher:v4.3.0 csiResizer: registry.aliyuncs.com/google_containers/csi-resizer:v1.8.0 csiDriverRegistrar: registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.8.0 csiSnapshotter: registry.aliyuncs.com/google_containers/csi-snapshotter:v6.3.0 csiSnapshotController: registry.aliyuncs.com/google_containers/snapshot-controller:v6.3.0 csiStorPlugin: xxx.xxx.xxx.xxx:port/stor-csi-driver:1.6.1在Kubernetes master节点执行部署脚本,进行插件的安装。
注意
若在同一 Kubernetes 集群中安装多套HBlock CSI,需将charts分放不同文件夹,重复此步骤多次。
根据前置条件,判断是否修改charts/csi-driver-stor/value.yaml中iscsiOnHost。如果安装多套HBlock CSI,还需要修改charts/csi-driver-stor/value.yaml中的driverName和driverNamespace。
参数 描述 是否必须 driverName HBlock CSI驱动名称。
取值:字符串形式,长度范围是1~63,只能由小写字母、数字、句点(.)和短横线(-)组成,且仅支持以字母或数字开头。禁止出现连续符号。
默认值为stor.csi.k8s.io。
注意
在同一Kubernetes集群中,HBlock CSI驱动名称必须唯一,不能重复。
是 driverNamespace HBlock CSI绑定的Kubernetes命名空间。若需安装多套HBlock CSI,必须为每套指定不同的命名空间。
注意
必须为已经存在的Kubernetes命名空间。
默认值为:default。
是 iscsiOnHost iscsid、multipathd守护进程由宿主机启动,而非CSI POD启动。
取值:true:iscsid、multipathd守护进程由宿主机启动的模式。
是 执行安装脚本:
如果已经安装了快照相关的CRDs,请执行下列命令:
说明
需要已安装的快照相关CRDs支持Kubernetes Snapshot的v1 API。
cd charts/csi-driver-stor/ helm install stor ./ --skip-crds如果未安装快照相关的CRDs,请执行下列命令:
cd charts/csi-driver-stor/ helm install stor ./
安装完成后,可以看到以下pod、HBlock的plugin以及Sidecar容器正常启动:
说明
如果Kubernetes命名空间非default,需要使用命令kubectl get pod -n namespace查询。
[root@k8s-master csi-driver-stor]# kubectl get pod NAME READY STATUS RESTARTS AGE csi-snapshot-updater-cronjob-1758161700-x8xmv 0/1 Completed 0 10m csi-storplugin-controller-79df7bf49c-qtvkd 4/4 Running 0 28m csi-storplugin-node-d2tkb 2/2 Running 0 28m csi-storplugin-node-x9w2h 2/2 Running 0 28m snapshot-controller-0 1/1 Running 0 28m