根據鏡像導入的不同,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