8.2.4.2. 如果使用 Ansible 部署,请升级 Gluster 块
执行以下步骤升级 gluster 块。
推荐的用于块存储的 Red Hat Enterprise Linux(RHEL)版本是 RHEL-7.5.4。请确定您的内核版本与 3.10.0-862.14.4.el7.x86_64 匹配。验证执行:
# uname -r
重启节点以使最新的内核更新生效。
执行以下命令,以删除旧的 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如果 gluster-block-provisoner-pod 已存在,则通过执行以下命令来删除它:
对于 glusterfs 命名空间:
# oc delete dc glusterblock-storage-provisioner-dc对于 glusterfs-registry 命名空间:
oc delete dc glusterblock-registry-provisioner-dc编辑 glusterblock-provisioner 模板,以更改 IMAGE_NAME、IMAGE_VERSION 和 NAMESPACE。
# oc get templates NAME DESCRIPTION PARAMETERS OBJECTS glusterblock-provisioner glusterblock provisioner template 3 (2 blank) 4 glusterfs GlusterFS DaemonSet template 5 (1 blank) 1 heketi Heketi service deployment template 7 (3 blank)3如果模板包含 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 - 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: storage如果模板只有一个 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 - 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: storage从旧 pod 中删除以下资源。
如果您有 glusterfs pod:
# oc delete clusterroles.authorization.openshift.io glusterblock-provisioner-runner# oc delete serviceaccounts glusterblock-storage-provisioner # oc delete clusterrolebindings.authorization.openshift.io glusterblock-storage-provisioner如果您有 registry 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-storage-provisioner created clusterrolebinding.authorization.openshift.io/glusterblock-storage-provisioner created deploymentconfig.apps.openshift.io/glusterblock-storage-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 app-storage glusterfs-storage-block gluster.org/glusterblock-app-storage app-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 gluster-storage-block > storageclass-to-edit.yaml # oc delete sc gluster-storage-block # sed 's,gluster.org/glusterblock$,gluster.org/glusterblock-app-storage,' storageclass-to-edit.yaml | oc create -f - storageclass.storage.k8s.io/glusterfs-registry-block created