8.3.2. 升级 glusterblock-provisioner Pod
要升级 glusterblock-provisioner pod,请执行以下步骤:
执行以下命令,以删除旧的 glusterblock provisioner 模板。
# oc delete templates glusterblock-provisioner创建 glusterblock provisioner 模板。例如:
# oc create -f /usr/share/ansible/openshift-ansible/roles/openshift_storage_glusterfs/files/glusterblock-provisioner.yml template.template.openshift.io/glusterblock-provisioner created如果 glusterblock-provisoner pod 已经存在,则执行以下命令来删除它:
# oc delete dc <gluster-block-registry-dc>例如:
# oc delete dc glusterblock-registry-provisioner-dc编辑 glusterblock-provisioner 模板,以更改 IMAGE_NAME、IMAGE_VERSION 和 NAMESPACE。
# oc get templates NAME DESCRIPTION PARAMETERS OBJECTS glusterblock- glusterblock 3 (2 blank) 4 provisioner provisioner template heketi Heketi service 7 (3 blank) 3 deployment template如果模板包含 IMAGE_NAME 和 IMAGE_VERSION,请更新 glusterblock-provisioner 模板,如下所示:
oc edit template glusterblock-provisioner - displayName: glusterblock provisioner container image name name: IMAGE_NAME required: true value: registry.redhat.io/rhgs3/rhgs-gluster-block-prov-rhel7 - displayName: glusterblock provisioner container image version name: IMAGE_VERSION required: true value: v3.11.8 - description: The namespace in which these resources are being created displayName: glusterblock provisioner namespace name: NAMESPACE required: true value: glusterfs-registry - description: A unique name to identify which heketi service manages this cluster, useful for running multiple heketi instances displayName: GlusterFS cluster name name: CLUSTER_NAME value: registry根据您要升级到的版本,将
IMAGE_VERSION中的值替换为v3.11.5或v3.11.8。- displayName: glusterblock provisioner container image version name: IMAGE_VERSION required: true value: v3.11.8如果模板只有一个 IMAGE_NAME 作为参数,请按如下所示更新 glusterblock-provisioner 模板:
# oc edit template glusterblock-provisioner - displayName: glusterblock provisioner container image name name: IMAGE_NAME required: true value: registry.redhat.io/rhgs3/rhgs-gluster-block-prov-rhel7:v3.11.8 - description: The namespace in which these resources are being created - displayName: glusterblock provisioner namespace name: NAMESPACE required: true value: glusterfs-registry - description: A unique name to identify which heketi service manages this cluster, useful for running multiple heketi instances displayName: GlusterFS cluster name name: CLUSTER_NAME value: registry根据您要升级到的版本,将
IMAGE_NAME中的值替换为v3.11.5或v3.11.8。- displayName: glusterblock provisioner container image name name: IMAGE_NAME required: true value: rhgs3/rhgs-gluster-block-prov-rhel7:v3.11.8从旧 pod 中删除以下资源:
# oc delete clusterroles.authorization.openshift.io glusterblock-provisioner-runner # oc delete serviceaccounts glusterblock-registry-provisioner # oc delete clusterrolebindings.authorization.openshift.io glusterblock-registry-provisioner在运行 oc process 前,请确定正确的
置备程序名称。如果集群中有多个gluster 块置备程序,该名称必须与所有其他置备程序不同。
例如,
-
如果有 2 个或多个置备程序,则名称应该为
gluster.org/glusterblock-<namespace>,使用置备程序部署在的命名空间名称替换 <namespace>。 -
如果只有一个置备程序,在 3.11.8 之前安装,
gluster.org/glusterblock就足够。如果当前使用的名称已经有唯一的命名空间后缀,则重复利用现有名称。
-
如果有 2 个或多个置备程序,则名称应该为
编辑模板后,执行以下命令创建部署配置:
# oc process glusterblock-provisioner -o yaml | oc create -f -例如:
# oc process glusterblock-provisioner -o yaml | oc create -f - clusterrole.authorization.openshift.io/glusterblock-provisioner-runner created serviceaccount/glusterblock-registry-provisioner created clusterrolebinding.authorization.openshift.io/glusterblock-registry-provisioner created deploymentconfig.apps.openshift.io/glusterblock-registry-provisioner-dc created使用 gluster 块卷置备的所有存储类必须与集群中的一个置备程序名称完全匹配。要检查在给定
命名空间中引用块置备程序的存储类列表,请运行以下命令:# oc get sc -o custom-columns=NAME:.metadata.name,PROV:.provisioner,RSNS:.parameters.restsecretnamespace | grep 'gluster.org/glusterblock' | grep <namespace>例如:
# oc get sc -o custom-columns=NAME:.metadata.name,PROV:.provisioner,RSNS:.parameters.restsecretnamespace | grep 'gluster.org/glusterblock' | grep infra-storage glusterfs-registry-block gluster.org/glusterblock infra-storage如果每个存储类
置备程序名称,如果它与为那个命名空间配置的块置备程序名称不匹配,则需要更新它。如果块置备程序名称已与配置的置备程序名称匹配,则不需要进行任何其他操作。使用上面生成的列表,并包括必须更新指定名称的所有存储类名称。
对于此列表中的每个存储类,请执行以下操作:# oc get sc -o yaml <storageclass> > storageclass-to-edit.yaml # oc delete sc <storageclass> # sed 's,gluster.org/glusterblock$,gluster.org/glusterblock-<namespace>,' storageclass-to-edit.yaml | oc create -f -例如:
# oc get sc -o yaml glusterfs-registry-block > storageclass-to-edit.yaml # oc delete sc glusterfs-registry-block storageclass.storage.k8s.io "glusterfs-registry-block" deleted # sed 's,gluster.org/glusterblock$,gluster.org/glusterblock-infra-storage,' storageclass-to-edit.yaml | oc create -f - storageclass.storage.k8s.io/glusterfs-registry-block created