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

重启节点以使最新的内核更新生效。

  1. 执行以下命令,以删除旧的 glusterblock provisioner 模板。

     # oc delete templates glusterblock-provisioner
  2. 创建 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
  3. 如果 gluster-block-provisoner-pod 已存在,则通过执行以下命令来删除它:

    对于 glusterfs 命名空间:

    # oc delete dc glusterblock-storage-provisioner-dc

    对于 glusterfs-registry 命名空间:

    oc delete dc glusterblock-registry-provisioner-dc
  4. 编辑 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
  5. 从旧 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
  6. 在运行 oc process 前,请确定正确的置备程序名称。如果集群中有多个 gluster 块置备程序,该名称必须与所有其他 置备程序 不同。
    例如,

    • 如果有 2 个或多个置备程序,则名称应该为 gluster.org/glusterblock-<namespace>,使用置备程序部署在的命名空间名称替换 <namespace>。
    • 如果只有一个置备程序,在 3.11.8 之前安装,gluster.org/glusterblock 就足够。如果当前使用的名称已经有唯一的命名空间后缀,则重复利用现有名称。
  7. 编辑模板后,执行以下命令创建部署配置:

    # 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
  8. 使用 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
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部