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,请执行以下步骤:
必须在客户端计算机上执行以下命令。
执行以下命令来更新 heketi 客户端:
# yum update heketi-client -y
备份 Heketi registry 数据库文件:
# heketi-cli db dump > heketi-db-dump-$(date -I).json
执行以下命令以获取当前的 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"
执行以下命令来删除 heketi 模板。
# oc delete templates heketi
执行以下命令来安装 heketi 模板。
# oc create -f /usr/share/ansible/openshift-ansible/roles/openshift_storage_glusterfs/files/heketi-template.yml template "heketi" created
执行以下步骤编辑模板:
# 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 限制 ,并在进行升级前添加必要的参数。
执行以下命令删除 heketi 的部署配置、服务和路由:
# oc delete deploymentconfig,service,route heketi-registry
执行以下命令来部署用于为 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
执行卷设置操作。执行以下命令来验证容器是否正在运行:
# 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