根据镜像导入的不同,HBlock CSI插件使用脚本方式安装时,可以根据情况选择其中一种方法:
逐台导入镜像的方式:适用于Kubernetes集群的节点数量不多的部署场景。
Docker私仓导入镜像的方式:适用于节点多的部署场景。
前置条件
安装HBlock CSI时iscsiOnHost为关闭状态
iscsiOnHost(1.5.1之前版本不支持设置该参数)的开关是两种不同的安装模式:
打开状态(安装时设置参数--iscsi-on-host):iscsid、multipathd守护进程由宿主机启动的模式。
关闭状态(安装时不设置参数--iscsi-on-host): iscsid、multipathd守护进程由CSI POD启动的模式。
用户可以根据具体情况,选择是否打开iscsiOnHost开关:
如果计划Kubernetes集群安装一套HBlock CSI插件,可以选择下列两种方案中的一种:
只计划安装一套HBlock CSI插件且不安装其他插件,或者同一台宿主机上当前且未来没有安装iscsid、multiapthd守护进程的其它需求或计划,安装时不设置--iscsi-on-hos,卸载宿主机的iSCSI initiator以及MPIO,并重启node节点。
目前安装一套HBlock CSI,且后续不确定是否再安装HBlock CSI插件或者其他插件,安装HBlock CSI时设置--iscsi-on-host,宿主机自行安装iscsid、multipathd。
说明
建议使用打开iscsiOnHost为打开状态,宿主机自行安装iscsid、multipathd。
计划安装多套HBlock CSI,或者除了安装HBlock CSI外,还安装其他插件,安装HBlock CSI时设置--iscsi-on-host,宿主机自行安装iscsid、multipathd。
安装HBlock CSI时iscsiOnHost为关闭状态
安装HBlock CSI时不设置--iscsi-on-host,卸载宿主机的iSCSI initiator以及MPIO,并重启node节点:
在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中增加如下配置:
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 } }
重启multipathd服务。
对于CentOS:
systemctl restart multipathd systemctl enable multipathd
对于Ubuntu:
systemctl restart multipath-tools.service
逐台导入镜像的方式
执行以下安装步骤(适用于Kubernetes集群的节点数量不多的部署场景,以1.5.1的X86版本为例):
在Kubernetes master和node上解压安装包。
unzip stor-csi-driver-1.5.1_x64.zip
在Kubernetes master和node上导入插件镜像。
cd stor-csi-driver-1.5.1_x64 docker load < stor-csi-driver.tar
在Kubernetes master节点执行部署脚本,完成插件的安装。
注意
若在同一 Kubernetes集群中安装多套HBlock CSI,需将deploy分放不同文件夹,重复此步骤多次。
如果已经安装了快照相关的CRDs,请执行下列命令:
说明
需要已安装的快照相关CRDs支持Kubernetes Snapshot的v1 API。
cd deploy ./deploy.sh --iscsi-on-host [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
如果未安装快照相关的CRDs,请执行下列命令:
cd deploy ./deploy.sh --include-snapshot-crd [ --iscsi-on-host ] [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
参数 描述 --driver-name HBlock CSI驱动名称。
取值:字符串形式,长度范围是1~63,只能由小写字母、数字、句点(.)和短横线(-)组成,且仅支持以字母或数字开头。禁止出现连续符号。
默认值为stor.csi.k8s.io。
注意
在同一Kubernetes集群中,HBlock CSI驱动名称必须唯一,不能重复。
--driver-namespace HBlock CSI绑定的Kubernetes命名空间。
如果命名空间为默认值default,此参数可以不填写,其他情况必填。若需安装多套HBlock CSI,必须为每套指定不同的命名空间。
注意
绑定的Kubernetes命名空间必须已经存在。
--iscsi-on-host 守护进程是否由宿主机启动。
取值:
设置该参数:打开状态,iscsid、multipathd守护进程由宿主机启动的模式。
不设置该参数:关闭状态,iscsid、multipathd守护进程由CSI POD启动的模式。
说明
如果计划在同一Kubernetes集群中安装多套HBlock CSI或者其他插件,--iscsi-on-host是必选参数。
安装完成后,可以看到以下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-storplugin-controller-79df7bf49c-gtwvd 4/4 Running 0 58s csi-storplugin-node-6gjhh 2/2 Running 0 58s csi-storplugin-node-fqv5c 2/2 Running 0 58s snapshot-controller-0 1/1 Running 0 58s
docker私仓导入镜像的方式
若节点数量较多,可以使用私仓方式安装HBlock CSI插件,避免在Kubernetes的所有节点上都导入插件。用户可先将插件镜像推送到私仓中,修改插件YAML文件的image地址为私仓中镜像地址,执行安装脚本即可完成安装。
在集群中任意一台服务器上执行下面的操作(以1.5.1的X86版本为例):
解压安装包。
unzip stor-csi-driver-1.5.1_x64.zip
导入插件镜像。
cd stor-csi-driver-1.5.1_x64 docker load < stor-csi-driver.tar
推送镜像到私仓。
docker tag stor-csi-driver:1.5.1 xxx.xxx.xxx.xxx:port/stor-csi-driver:1.5.1 docker push xxx.xxx.xxx.xxx:port/stor-csi-driver:1.5.1
其中,xxx.xxx.xxx.xxx:port为私仓地址。
查看私仓。
cat /etc/docker/daemon.json
修改YAML镜像拉取地址。
修改deploy/csi-storplugin-node.yaml文件中storplugin对应image的value为xxx.xxx.xxx.xxx:port/stor-csi-driver:1.5.1。volumeMounts: - mountPath: /csi name: socket-dir - mountPath: /registration name: registration-dir - name: storplugin-node #私仓镜像地址 image: xxx.xxx.xxx.xxx:port/stor-csi-driver:1.5.1
执行部署脚本。
注意
若在同一Kubernetes集群中安装多套HBlock CSI,需将deploy分放不同文件夹,重复此步骤多次。
如果已经安装了快照相关的CRDs,请执行下列命令:
说明
需要已安装的快照相关CRDs支持Kubernetes Snapshot的v1 API。
cd deploy ./deploy.sh --iscsi-on-host [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
如果未安装快照相关的CRDs,请执行下列命令:
cd deploy ./deploy.sh --include-snapshot-crd [ --iscsi-on-host ] [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
参数 描述 --driver-name HBlock CSI驱动名称。
取值:字符串形式,长度范围是1~63,只能由小写字母、数字、句点(.)和短横线(-)组成,且仅支持以字母或数字开头。禁止出现连续符号。
默认值为stor.csi.k8s.io。
注意
在同一Kubernetes集群中,HBlock CSI驱动名称必须唯一,不能重复。
--driver-namespace HBlock CSI绑定的Kubernetes命名空间。
如果命名空间为默认值default,此参数可以不填写,其他情况必填。若需安装多套HBlock CSI,必须为每套指定不同的命名空间。
注意
绑定的Kubernetes命名空间必须已经存在。
--iscsi-on-host 守护进程是否由宿主机启动。
取值:
- 设置该参数:打开状态,iscsid、multipathd守护进程由宿主机启动的模式。
- 不设置该参数:关闭状态,iscsid、multipathd守护进程由CSI POD启动的模式。
说明
如果计划在同一Kubernetes集群中安装多套HBlock CSI或者其他插件,--iscsi-on-host是必选参数。
安装完成后,可以看到以下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-storplugin-controller-79df7bf49c-qtvkd 4/4 Running 0 44m csi-storplugin-node-d2tkb 2/2 Running 0 44m csi-storplugin-node-x9w2h 2/2 Running 0 44m snapshot-controller-0 1/1 Running 0 44m