6.2.4. 使用 Ansible 升级现有版本
6.2.4.1. 升级 Heketi Server 复制链接链接已复制到粘贴板!
必须在客户端计算机上执行以下命令。
如果 OCS 3.10 通过 Ansible 部署,则不需要使用 "yum update cns-deploy -y"。
执行以下步骤停止 Heketi pod,以防止它接受任何新卷创建或卷删除请求:
执行以下命令访问项目:
# oc project <project_name>例如:
# oc project storage-project执行以下命令以获取
DeploymentConfig:# oc get ds执行以下命令,将 heketi 服务器设置为仅接受来自 local-client 的请求:
# heketi-cli server mode set local-client等待持续操作完成,并执行以下命令来监控是否有持续操作:
# heketi-cli server operations info
备份 Heketi 数据库文件
# heketi-cli db dump > heketi-db-dump-$(date -I).json注意创建的 json 文件可用于恢复,因此应存储在您选择的持久性存储中。
执行以下命令来更新 heketi 客户端软件包。更新其安装的所有 OCP 节点上的
heketi-client软件包。较新的安装可能没有在任何 OCP 节点上安装了heketi-clientrpm:# yum update heketi-client -y执行以下命令以获取当前的 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>执行以下步骤编辑模板:
如果现有模板有 IMAGE_NAME,则编辑模板以更改 HEKETI_USER_KEY、HEKETI_ADMIN_KEY、HEKETI_ROUTE、IMAGE_NAME、CLUSTER_NAME 和 HEKETI_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: kubernetes - 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.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: /usr/sbin/exec-on-host如果现有模板的 IMAGE_NAME 和 IMAGE_VERSION 为两个参数,请编辑模板以更改 HEKETI_USER_KEY、HEKETI_ADMIN_KEY、HEKETI_ROUTE、IMAGE_NAME、IMAGE_VERSION、CLUSTER_NAME 和 HEKETI_LVM_RAPPER,如下例所示。
# 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: kubernetes - 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-registry 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: /usr/sbin/exec-on-host注意如果集群有超过 1000 个卷,请参阅 如何更改 Openshift Container Storage 的默认 PVS 限制 ,并在进行升级前添加必要的参数。
执行以下命令删除 heketi 的部署配置、服务和路由:
# oc delete deploymentconfig,service,route heketi-registry执行以下命令来部署用于为 OpenShift 创建持久性卷的 Heketi 服务、路由和部署配置:
# oc process heketi | oc create -f - service "heketi-registry" created route "heketi-registry" created deploymentconfig-registry "heketi" 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 glusterfs-storage-5thpc 1/1 Running 0 9d glusterfs-storage-hfttr 1/1 Running 0 9d glusterfs-storage-n8rg5 1/1 Running 0 9d heketi-storage-4-9fnvz 2/2 Running 0 8d