8.3. 升级 glusterfs registry 组中的节点和 pod

按照小节中的步骤升级 gluster 节点,并在 glusterfs registry 命名空间中的 heketi pod。

8.3.1. 升级 Red Hat Gluster Storage Registry 集群

要升级 Red Hat Gluster Storage 集群,请参阅 In-Service Software Upgrade

8.3.1.1. 升级 Heketi Registry pod

注意

如果 Heketi 不在 Openshift 节点,则必须将 RHGS 节点中的 Heketi 迁移到 Openshift 节点。有关如何迁移的详情请参考 第 8.2.2 节 “在 RHGS 节点升级/迁移 Heketi”

要升级 Heketi registry pod,请执行以下步骤:

必须在客户端计算机上执行以下命令。

  1. 执行以下命令来更新 heketi 客户端:

    # yum update heketi-client -y
  2. 备份 Heketi registry 数据库文件:

    # heketi-cli db dump > heketi-db-dump-$(date -I).json
  3. 执行以下命令以获取当前的 HEKETI_ADMIN_KEY:

    只要用户密钥没有用于其基础架构,OCS 管理员就可以为用户密钥设置任何短语。它没有被任何 OCS 默认安装的资源使用。

    # oc get secret heketi-registry-admin-secret -o jsonpath='{.data.key}'|base64 -d;echo

    要获取 HEKETI_USER_KEY,请运行以下命令:

    # oc describe pod <heketi-pod> |grep "HEKETI_USER_KEY"
  4. 执行以下命令来删除 heketi 模板。

    # oc delete templates heketi
  5. 执行以下命令来安装 heketi 模板。

    # oc create -f /usr/share/ansible/openshift-ansible/roles/openshift_storage_glusterfs/files/heketi-template.yml
    template "heketi" created
  6. 执行以下步骤编辑模板:

    # oc get templates
    NAME			     DESCRIPTION		           PARAMETERS	OBJECTS
    glusterblock-  glusterblock provisioner  3 (2 blank)	4
    provisioner    template
    heketi         Heketi service deployment 7 (3 blank)	3
    template

如果现有模板包含 IMAGE_NAME 和 IMAGE_VERSION 作为两个参数,则编辑模板以更改 HEKETI_USER_KEY、HEKETI_ADMIN_KEY、HEKETI_EXECUTOR、HEKETI_FSTAB、HEKETI_ROUTE、IMAGE_NAME、IMAGE_VERSION、HEKETI_NAME、HEKETI_NAME、HEKETI_IN、HEKETI

注意

HEKETI_LVM_WRAPPER 参数的值指向 LVM 的 wrapper 命令。在独立模式中,不需要设置打包程序,将改为空字符串,如下所示。

# oc edit template heketi
parameters:
- description: Set secret for those creating volumes as type _user_
  displayName: Heketi User Secret
  name: HEKETI_USER_KEY
  value: heketiuserkey
- description: Set secret for administration of the Heketi service as
  user _admin_
  displayName: Heketi Administrator Secret
  name: HEKETI_ADMIN_KEY
  value: adminkey
- description: Set the executor type, kubernetes or ssh
  displayName: heketi executor type
  name: HEKETI_EXECUTOR
  value: ssh
- description: Set the fstab path, file that is populated with bricks
  that heketi creates
  displayName: heketi fstab path
  name: HEKETI_FSTAB
  value: /etc/fstab
- description: Set the hostname for the route URL
  displayName: heketi route name
  name: HEKETI_ROUTE
  value: heketi-registry
- displayName: heketi container image name
  name: IMAGE_NAME
  required: true
  value: registry.redhat.io/rhgs3/rhgs-volmanager-rhel7
- displayName: heketi container image version
  name: IMAGE_VERSION
  required: true
  value: v3.11.8
- description: A unique name to identify this heketi service, useful
  for running multiple heketi instances
  displayName: GlusterFS cluster name
  name: CLUSTER_NAME
  value: registry
- description: Heketi can use a wrapper to execute LVM commands, i.e. run commands in the host namespace instead of in the Gluster container
  name: HEKETI_LVM_WRAPPER
  displayName: Wrapper for executing LVM commands
  value: ""

如果模板只有 IMAGE_NAME,则编辑模板以更改 HEKETI_USER_KEY、HEKETI_ADMIN_KEY、HEKETI_EXECUTOR、HEKETI_FSTAB、HEKETI_ROUTE、IMAGE_NAME、CLUSTER_NAME 和 HEKETI_LVM_ES_RAWPPER,如下所示:

parameters:
  - description: Set secret for those creating volumes as type user
   displayName: Heketi User Secret
   name: HEKETI_USER_KEY
   value: heketiuserkey
 - description: Set secret for administration of the Heketi service as
    user admin
    displayName: Heketi Administrator Secret
    name: HEKETI_ADMIN_KEY
    value: adminkey
  - description: Set the executor type, kubernetes or ssh
    displayName: heketi executor type
    name: HEKETI_EXECUTOR
    value: ssh
  - description: Set the fstab path, file that is populated with bricks that heketi creates
    displayName: heketi fstab path
    name: HEKETI_FSTAB
    value: /etc/fstab
  - description: Set the hostname for the route URL
    displayName: heketi route name
    name: HEKETI_ROUTE
    value: heketi-registry
  - displayName: heketi container image name
    name: IMAGE_NAME
    required: true
    value: registry.redhat.io/rhgs3/rhgs-volmanager-rhel7:v3.11.7
  - description: A unique name to identify this heketi service, useful for running multiple heketi instances
    displayName: GlusterFS cluster name
    name: CLUSTER_NAME
    value: registry
  - description: Heketi can use a wrapper to execute LVM commands, i.e. run commands in the host namespace instead of in the Gluster container
    name: HEKETI_LVM_WRAPPER
    displayName: Wrapper for executing LVM commands
    value:""
注意

如果集群有超过 1000 个卷,请参阅 如何更改 Openshift Container Storage 的默认 PVS 限制 ,并在进行升级前添加必要的参数。

  1. 执行以下命令删除 heketi 的部署配置、服务和路由:

    # oc delete deploymentconfig,service,route heketi-registry
  2. 执行以下命令来部署用于为 OpenShift 创建持久性卷的 Heketi 服务、路由和 deploymentconfig:

    # oc process heketi | oc create -f -
    service "heketi-registry" created route "heketi-registry" created deploymentconfig "heketi-registry" created
    注意

    建议为数据库工作负载调整 heketidbstorage 卷。新安装的 Openshift Container Storage 部署会自动调整 heketidbstorage 卷。对于旧的部署,请按照 KCS 文章 规划在 Openshift Container Storage 上运行容器化 DB 或 nosql 工作负载? 并为卷 heketidbstorage 执行卷设置操作。

  3. 执行以下命令来验证容器是否正在运行:

    # oc get pods

    例如:

    # oc get pods
    NAME                                          READY     STATUS    RESTARTS   AGE
    glusterblock-storage-provisioner-dc-1-ffgs5   1/1       Running   0          3m
    heketi-storage-4-9fnvz                        2/2       Running   0          8d