根据镜像导入的不同,HBlock CSI插件使用HELM方式安装时,可以根据情况选择其中一种方法:
逐台导入镜像的方式:适用于Kubernetes集群的节点数量不多的部署场景。
Docker私仓导入镜像的方式:适用于节点多的部署场景。
前置条件
已经安装HELM 3.12及以上版本。
iscsiOnHost(1.5.1之前版本不支持设置该参数)的开关是两种不同的安装模式:
打开状态(安装时设置values.yaml参数iscsidOnHost为true):iscsid、multipathd守护进程由宿主机启动的模式。
关闭状态(安装时设置values.yaml参数iscsidOnHost为false): iscsid、multipathd守护进程由CSI POD启动的模式。
用户可以根据具体情况,选择是否打开iscsiOnHost开关:
如果计划Kubernetes集群安装一套HBlock CSI插件,可以选择下列两种方案中的一种:
只计划安装一套HBlock CSI插件且不安装其他插件,或者同一台宿主机上当前且未来没有安装iscsid、multiapthd守护进程的其它需求或计划,安装时设置values.yaml参数iscsidOnHost为false,卸载宿主机的iSCSI initiator以及MPIO,并重启node节点。
目前安装一套HBlock CSI,且后续不确定是否再安装HBlock CSI插件或者其他插件,安装HBlock CSI时设置values.yaml参数iscsidOnHost为true,宿主机自行安装iscsid、multipathd。
说明
建议使用设置values.yaml参数iscsidOnHost为true,宿主机自行安装iscsid、multipathd。
计划安装多套HBlock CSI,或者除了安装HBlock CSI外,还安装其他插件,安装HBlock CSI时设置values.yaml参数iscsidOnHost为true,宿主机自行安装iscsid、multipathd。
安装HBlock CSI时iscsiOnHost为关闭状态
安装HBlock CSI时设置values.yaml参数iscsidOnHost为false,卸载宿主机的iSCSI initiator以及MPIO,并重启node节点:
卸载宿主机的iSCSI initiator。
停止并禁用iSCSI服务。
systemctl stop iscsid systemctl disable iscsid
卸载iSCSI。
如果操作系统是CentOS/RHEL,卸载命令如下:
yum remove iscsi-initiator-utils
如果操作系统是Ubuntu/Debian,卸载命令如下:
apt-get remove --purge open-iscsi
注意
执行卸载iSCSI命令,除了卸载 iSCSI 软件本身,通常还会自动卸载一些与之关联的依赖软件包,建议先在测试环境下验证,确定对生产环境无影响时再执行。
卸载宿主机的multipathd。
停止并禁用multipathd服务。
systemctl stop multipathd systemctl disable multipathd
卸载宿主机的multipathd。
如果操作系统是CentOS/RHEL,卸载命令如下:
yum remove device-mapper-multipath device-mapper-multipath-libs
如果操作系统是Ubuntu/Debian,卸载命令如下:
apt-get remove multipath-tools
注意
执行卸载multipathd命令时,建议先在测试环境下验证,确定对生产环境无影响时再执行。
安装HBlock CSI时iscsiOnHost为打开状态
安装HBlock CSI时设置values.yaml参数iscsidOnHost为true,配置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中增加如下配置:
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.51的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,需将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 守护进程是否由宿主机启动。
取值:
true:打开状态,iscsid、multipathd守护进程由宿主机启动的模式。
false:关闭状态,iscsid、multipathd守护进程由CSI POD启动的模式。
默认值为false。
注意
如果计划在同一Kubernetes集群中安装多套HBlock CSI或者其他插件,取值为true。
是 执行安装脚本。
如果已经安装了快照相关的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-storplugin-controller-79df7bf49c-wr4tb 4/4 Running 0 5m10s csi-storplugin-node-4lzr9 2/2 Running 0 5m10s csi-storplugin-node-jx95c 2/2 Running 0 5m10s snapshot-controller-0 1/1 Running 0 5m10s
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镜像拉取地址。
修改charts\csi-driver-stor\values.yaml文件中csiStorPlugin的值为xxx.xxx.xxx.xxx:port/stor-csi-driver:1.5.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.5.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 守护进程是否由宿主机启动。
取值:
true:打开状态,iscsid、multipathd守护进程由宿主机启动的模式。
false:关闭状态,iscsid、multipathd守护进程由CSI POD启动的模式。
默认值为false。
说明
如果计划在同一Kubernetes集群中安装多套HBlock CSI或者其他插件,取值为true。
是 执行安装脚本:
如果已经安装了快照相关的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-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