这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

升级/回退华为CSI

本章节介绍如何升级/回退华为CSI。

当前版本华为CSI添加了资源请求和限制,具体详情请参考华为CSI资源管理

1 - 使用Helm升级/回退华为CSI

如果您从2.x版本升级至4.5.0版本,请参考旧版本用户指南卸载CSI,然后参考使用Helm安装华为CSI章节安装华为CSI。

如果您从2.x或3.x版本升级至4.5.0版本,请参考从2.x或3.x升级至4.x版本章节升级华为CSI。

如果您从4.x版本升级至4.5.0版本,请参考Kubernetes、OpenShift、Tanzu升级华为CSI章节升级华为CSI。

1.1 - 升级华为CSI

本章节介绍如何升级华为CSI。

升级/回退过程中,已经存在的PVC/快照/Pod等资源会正常运行,不会影响您的业务访问。

  • 部分2.x版本CSI已经下架,若升级失败,可能无法回退到已下架版本的CSI。
  • 从2.x或3.x版本或4.x版本升级至4.5.0版本,可能存在旧版本已发放Pod重新挂载时失败的问题,具体请参考从2.x或3.x升级至4.x版本
  • 在升级/回退过程中,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。
  • 在升级/回退过程中,请勿卸载Snapshot依赖组件服务。

1.1.1 - 从2.x或3.x升级至4.x版本


在CSI 2.x或3.x 版本中,使用块存储时,与存储建立映射的操作是在huawei-csi-node服务进行的,所以huawei-csi-node服务需要和存储管理网络通信。又由于huawei-csi-node服务是以DaemonSet部署的,在集群中每个节点都会部署一个huawei-csi-node服务,这样部署模型导致了在大规模集群下,每个huawei-csi-node服务都会向存储发起请求,可能导致存储连接数被占满,使得huawei-csi-node不能提供正常服务。 在CSI 4.x版本优化了该部署模型,将与存储建立映射操作迁移至huawei-csi-controller服务,huawei-csi-node服务不再需要和存储管理网络通信,降低了华为CSI依赖的组网复杂度,同时huawei-csi-controller服务以Deployment形式部署,副本数根据客户可靠性要求设置,一般情况下,副本数为1~3。所以极大的减少了华为CSI与存储的连接数量,使得华为CSI服务能够接入大规模集群。 该架构变化可能会导致一个问题:升级后,使用2.x或3.x发放的工作负载,升级CSI至4.x版本之后,如果产生了一次新的挂载流程,并且CO(Container Orchestration system)未调用华为CSI提供的huawei-csi-controller服务,会导致挂载失败。问题请参考创建Pod失败,Events日志显示“publishInfo doesn’t exist”

备份存储后端配置

如果您已按照以上须知评估风险后,确认需要从2.x或3.x版本的CSI升级至4.5.0版本,请按照以下操作步骤备份存储后端配置:

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行以下命令备份后端信息到configmap.json文件中。OpenShift平台使用oc替换kubectl命令。

    kubectl get cm huawei-csi-configmap -n huawei-csi -o json > configmap.json
    

升级华为CSI

请按照升级华为CSI中的步骤进行升级。

配置存储后端

请将备份存储后端配置中备份的后端信息,按照管理存储后端章节的说明配置存储后端,存储后端配置成功后,请务必按照以上须知所述的风险处理方法进行操作,避免Pod在漂移过程中出现问题。

1.1.2 - Kubernetes、OpenShift、Tanzu升级华为CSI

前提条件

  • 旧版本华为CSI使用Helm安装。
  • 新版本华为CSI镜像已制作完成,并且按照上传华为CSI镜像章节说明,上传到镜像仓库或者导入到所有节点。

升级华为CSI

如果您旧版本CSI使用Helm部署,请按照以下操作步骤升级华为CSI。

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 将目标版本CSI组件包拷贝到master节点的任意目录下。

  3. 进入到helm/esdk的工作目录下,目录路径请参见表 软件包组件描述

    cd helm/esdk
    
  4. 执行kubectl apply -f ./crds/backend/命令,更新存储后端CRD

    kubectl apply -f ./crds/backend/
    
  5. (可选) 请务必按照检查卷快照依赖组件章节检查快照依赖组件,确认无误后执行执行kubectl apply -f ./crds/snapshot-crds/ –validate=false命令更新快照CRD,如果controller.snapshot.enabled参数设置为false或Kubernetes版本低于v1.17,可跳过本步骤,详情请参考表 controller配置项说明

    kubectl apply -f ./crds/snapshot-crds/ --validate=false
    
  6. 执行以下命令,获取原有服务配置文件。其中helm-huawei-csi为旧版本安装时指定的Helm Chart名称,huawei-csi为旧版本安装时指定的Helm Chart命名空间。

    helm get values helm-huawei-csi -n huawei-csi -a > ./update-values.yaml
    
  7. 执行vi update-values.yaml命令打开6中获取的文件,修改images配置项,更新镜像至最新版本。需要修改的参数请参考表 images配置项

    表 1 images配置项

    参数

    描述

    修改为

    images.huaweiCSIService

    huawei-csi镜像。

    huawei-csi:4.5.0

    images.storageBackendSidecar

    华为后端管理storageBackendContent资源的镜像

    storage-backend-sidecar:4.5.0

    images.storageBackendController

    华为后端管理storageBackendClaim资源的镜像。

    storage-backend-controller:4.5.0

    images.huaweiCSIExtender

    huawei-csi-extender镜像

    huawei-csi-extender:4.5.0

    images.sidecar.livenessProbe

    livenessprobe sidecar镜像。

    k8s.gcr.io/sig-storage/livenessprobe:v2.5.0

    images.sidecar.provisioner

    csi-provisioner sidecar镜像。

    k8s.gcr.io/sig-storage/csi-provisioner:v3.0.0

    images.sidecar.attacher

    csi-attacher sidecar镜像。

    k8s.gcr.io/sig-storage/csi-attacher:v3.4.0

    images.sidecar.resizer

    csi-resizer sidecar镜像。

    k8s.gcr.io/sig-storage/csi-resizer:v1.4.0

    images.sidecar.snapshotter

    csi-snapshotter sidecar镜像。

    k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.1

    images.sidecar.snapshotController

    snapshot-controller sidecar镜像。

    k8s.gcr.io/sig-storage/snapshot-controller:v4.2.1

    images.sidecar.registrar

    csi-node-driver-registrar sidecar镜像。

    k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.3.0

  8. (可选)在升级过程中如需自定义更新配置项信息或者需要新增配置信息,可参考Helm values.yaml参数说明修改update-values.yaml文件中配置信息。

    升级时,如果update-values.yaml与values.yaml配置文件中存在相同配置项,update-values.yaml中的配置将会优先生效。

  9. 执行以下命令,升级华为CSI。其中helm-huawei-csi为指定的Helm Chart名称,huawei-csi为指定的Helm Chart命名空间,update-values.yaml为步骤6中获取的文件。

    helm upgrade helm-huawei-csi ./ -n huawei-csi -f ./values.yaml -f ./update-values.yaml
    
  10. 完成huawei-csi服务部署后,执行命令检查服务是否启动。

    kubectl get pod -n huawei-csi
    

    命令结果示例如下,Pod状态为“Running“表明服务启动成功。

    NAME                                     READY   STATUS    RESTARTS   AGE
    huawei-csi-controller-6dfcc4b79f-9vjtq   9/9     Running   0          24m
    huawei-csi-controller-6dfcc4b79f-csphc   9/9     Running   0          24m
    huawei-csi-node-g6f4k                    3/3     Running   0          20m
    huawei-csi-node-tqs87                    3/3     Running   0          20m
    

1.1.3 - CCE和CCE Agile升级华为CSI

前提条件

已下载新版本CSI的软件包。

操作步骤

  1. 参考CCE和CCE Agile卸载华为CSI卸载CSI。
  2. 参考CCE和CCE Agile平台安装华为CSI安装新版本的CSI。

1.2 - 回退华为CSI

如果您从2.x和3.x版本的CSI升级至4.5.0版本失败,需要回退时,请参考Helm卸载华为CSI卸载CSI,然后下载安装升级之前版本的CSI。

  • 在升级/回退过程中,已经存在的PVC/快照/Pod等资源会正常运行,不会影响您的业务访问。
  • 在升级/回退过程中,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。
  • 在升级/回退过程中,请勿卸载Snapshot依赖组件服务。

1.2.1 - Kubernetes、OpenShift、Tanzu回退华为CSI

前提条件

  • 已使用Helm 3完成CSI的更新。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 进入到helm/esdk的工作目录下,目录路径请参见表 软件包组件描述

    cd helm/esdk
    
  3. 执行命令,查看Helm部署CSI服务的历史版本。

    helm history helm-huawei-csi -n huawei-csi 
    

    命令结果示例如下。

    REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION     
    1       	Mon Jan  8 04:15:40 2024	superseded	esdk-4.4.0	4.4.0      	Install complete
    2       	Mon Jan  8 04:16:12 2024	deployed  	esdk-4.5.0	4.5.0      	Upgrade complete
    
  4. 执行命令,回退CSI服务到指定版本。

    其中,revision-number为3查询到的版本号。例如版本为:1。

    helm rollback helm-huawei-csi -n huawei-csi 1
    

    命令结果示例如下,回显中有Rollback was a success,则表示回退CSI服务到指定版本成功。

    Rollback was a success! Happy Helming!
    

1.2.2 - CCE和CCE Agile回退华为CSI

  • 在升级/回退过程中,已经存在的PVC/快照/Pod等资源会正常运行,不会影响您的业务访问。
  • 在升级/回退过程中,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。
  • 在升级/回退过程中,请勿卸载Snapshot依赖组件服务。

前提条件

已下载原版本CSI的软件包。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
  2. 参考操作步骤卸载CSI。
  3. 参考CCE和CCE Agile平台安装华为CSI重新安装原版本的CSI。

2 - 手动升级/回退

2.1 - 升级华为CSI

本章节介绍如何手动升级华为CSI。

升级/回退过程中,已经存在的PVC/快照/Pod等资源会正常运行,不会影响您的业务访问。

  • 部分2.x版本CSI已经下架,若升级失败,可能无法回退到已下架版本的CSI。
  • 在升级/回退过程中,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。
  • 在升级/回退过程中,请勿卸载Snapshot依赖组件服务。

2.x和3.x版本的CSI升级至4.5.0版本

如果您从2.x和3.x版本的CSI升级至4.5.0版本,请按照以下操作步骤升级:

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。

  2. 执行命令备份后端信息到configmap.json文件中。OpenShift平台使用oc替换kubectl命令。

    kubectl get cm huawei-csi-configmap -n huawei-csi -o json > configmap.json
    
  3. 参考手动卸载华为CSI卸载CSI。

  4. 参考手动安装华为CSI安装当前版本的CSI。

  5. 2中备份的后端信息,按照管理存储后端章节的说明安装。

从4.x版本的CSI升级至4.5.0版本。

如果您从4.x版本的CSI升级至4.5.0版本,请按照以下操作步骤升级:

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
  2. 参考手动卸载华为CSI卸载CSI。
  3. 参考手动安装华为CSI安装当前版本的CSI。

2.2 - 回退华为CSI

请参考手动卸载华为CSI卸载CSI,然后下载安装升级之前版本的CSI。

  • 在升级/回退过程中,已经存在的PVC/快照/Pod等资源会正常运行,不会影响您的业务访问。
  • 在升级/回退过程中,不能使用华为CSI创建新的资源,或者对已有的PVC做挂载/卸载操作。
  • 在升级/回退过程中,请勿卸载Snapshot依赖组件服务。

前提条件

已下载原版本CSI的软件包。

操作步骤

  1. 使用远程访问工具(以PuTTY为例),通过管理IP地址,登录Kubernetes集群的任意master节点。
  2. 参考手动卸载华为CSI卸载CSI。
  3. 参考手动安装华为CSI重新安装原版本的CSI。