iscsid守护进程位置不变的升级
下列情况使用该方案升级:
升级前版本安装时中没设置参数--iscsi-on-host(1.5.1之前版本不能设置该参数),升级后版本也没有设置该参数。
升级前升级后版本都设置了参数--iscsi-on-host。
升级步骤
更新驱动镜像:请根据逐台导入镜像的方式或docker私仓导入镜像的方式章节的步骤,导入最新安装包的驱动。
在升级版本的对应文件下修改HBlock相关配置:
修改deploy/csi-plugin-conf/csi-configMap.yaml,确保与升级前版本的配置一致。
修改deploy/csi-plugin-conf/csi-secret.yaml,确保与升级前版本的配置一致。
修改deploy/csi-plugin-conf/csi-secret-decrypt.yaml ,确保与升级前版本的配置一致。
在升级版本的/deploy下执行下列命令升级:
升级前版本安装时中没设置参数--iscsi-on-host(1.5.1之前版本不能设置该参数),升级后版本也没有设置该参数,执行下列命令:
./deploy.sh
升级前升级后版本都设置了参数--iscsi-on-host,执行下列命令:
./deploy.sh [ --iscsi-on-host ] [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
说明
如果升级前--iscsi-on-host打开状态,则
--iscsi-on-host:是必选参数。
--driver-name:升级前版本的驱动名称,如果升级前版本的驱动名称为默认值stor.csi.k8s.io,可以不填此参数。
--driver-namespace:升级前版本绑定的Kubernetes命名空间,如果升级前版本绑定的Kubernetes命名空间为默认值default,此参数可以不填写。
iscsid守护进程移动到宿主机的升级
下列情况使用该方案升级:升级前版本安装时中没设置参数--iscsi-on-host(1.5.1之前版本不能设置该参数),升级后版本设置设置参数--iscsi-on-host。
升级步骤
暂停CSI相关业务,以及存量计算节点POD所有业务,留出升级时间。执行下列命令后,禁止用户执行创建PV、删除PV、POD挂载存储、卸载POD等CSI相关的业务。
kubectl delete daemonset csi-storplugin-node
在Kubernetes所有的slave节点宿主机安装iSCSI工具,并配置/etc/iscsi/iscsid.conf。
安装iSCSI工具。
如果操作系统是CentOS/RHEL,请安装iscsi-initiator-utils,安装命令如下:
yum -y install iscsi-initiator-utils
如果操作系统是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 } }
重启multipathd服务。
对于CentOS:
systemctl restart multipathd systemctl enable multipathd
对于Ubuntu:
systemctl restart multipath-tools.service
删除多余的配置文件:
kubectl delete cm stor-multipath-conf -n namespace
更新驱动镜像:请根据逐台导入镜像的方式或docker私仓导入镜像的方式章节的步骤,导入最新安装包的驱动。
在升级版本的对应文件下修改HBlock相关配置:
修改deploy/csi-plugin-conf/csi-configMap.yaml,确保与升级前版本的配置一致。
修改deploy/csi-plugin-conf/csi-secret.yaml,确保与升级前版本的配置一致。
修改deploy/csi-plugin-conf/csi-secret-decrypt.yaml,确保与升级前版本的配置一致。
在升级版本的/depoly目录下执行下列命令升级:
./deploy.sh --iscsi-on-host [ --driver-name=driver_name ] [ --driver-namespace=driver_namespace ]
说明
- --iscsi-on-host:是必选参数。
- --driver-name:升级前版本的驱动名称,如果升级前版本的驱动名称为默认值stor.csi.k8s.io,可以不填此参数。
- --driver-namespace:升级前版本绑定的Kubernetes命名空间,如果升级前版本绑定的Kubernetes命名空间为默认值default,此参数可以不填写。
升级后检查:
进入各CSI POD, 执行ps -ef , 确认容器内没有进程:multipathd -f , iscsid -f。
可以在宿主机启动样例POD,进行基础流程测试,确认功能正常。
重启Kubernetes所有的slave宿主机节点,确认各存量POD能正确启动。(如果不验证重启恢复的场景,可跳过这步。)