8.2.2. 在 RHGS 节点升级/迁移 Heketi
如果 Heketi 位于 Openshift 节点,则跳过这个部分并查看 第 8.2.4.1 节 “在 Openshift 节点升级 Heketi”。
- 在 OCS 3.11 中,不支持在 RHGS 节点升级 Heketi。因此,您需要将 heketi 迁移到一个新的 heketi pod。
- 确保现在迁移到受支持的 heketi 部署,因为未来版本可能没有迁移路径。
确保 master 节点中安装 cns-deploy rpm。这提供了设置 heketi pod 所需的模板文件。
# subscription-manager repos --enable=rh-gluster-3-for-rhel-7-server-rpms
# yum install cns-deploy
在 master 节点上使用新创建的容器化 Red Hat Gluster Storage 项目:
# oc project <project-name>例如:
# oc project gluster在 master 节点上执行以下命令来创建服务帐户:
# oc create -f /usr/share/heketi/templates/heketi-service-account.yaml serviceaccount/heketi-service-account created在 master 节点上执行以下命令来安装 heketi 模板:
# oc create -f /usr/share/heketi/templates/heketi-template.yaml template.template.openshift.io/heketi created验证模板是否创建
# oc get templates NAME DESCRIPTION PARAMETERS OBJECTS heketi Heketi service deployment template 5 (3 blank) 3在 master 节点上执行以下命令,为 heketi 服务帐户授予必要的权限:
# oc policy add-role-to-user edit system:serviceaccount:gluster:heketi-service-account role "edit" added: "system:serviceaccount:gluster:heketi-service-account"# oc adm policy add-scc-to-user privileged -z heketi-service-account scc "privileged" added to: ["system:serviceaccount:gluster:heketi-service-account"]在运行 heketi 的 RHGS 节点上,执行以下命令:
创建 heketidbstorage 卷:
# heketi-cli volume create --size=2 --name=heketidbstorage挂载卷:
# mount -t glusterfs 192.168.11.192:heketidbstorage /mnt/其中 192.168.11.192 是 RHGS 节点之一。
停止 heketi 服务:
# systemctl stop heketi禁用 heketi 服务:
# systemctl disable heketi将 heketi db 复制到 heketidbstorage 卷:
# cp /var/lib/heketi/heketi.db /mnt/卸载卷:
# umount /mnt将 heketi 节点的以下文件复制到 master 节点:
# scp /etc/heketi/heketi.json topology.json /etc/heketi/heketi_key OCP_master_node:/root/其中 OCP_master_node 是 master 节点的主机名。
在 master 节点上,设置从 heketi 节点复制的以下三个文件的环境变量。将下面几行添加到 ~/.bashrc 文件中,并运行 bash 命令来应用并保存更改:
export SSH_KEYFILE=heketi_key export TOPOLOGY=topology.json export HEKETI_CONFIG=heketi.json注意如果您已将 /etc/heketi/heketi.json 中的 "keyfile" 的值改为不同的值,请相应地更改。
执行以下命令来创建一个 secret 来保存配置文件:
# oc create secret generic heketi-config-secret --from-file=${SSH_KEYFILE} --from-file=${HEKETI_CONFIG} --from-file=${TOPOLOGY} secret/heketi-config-secret created执行以下命令来标记 secret:
# oc label --overwrite secret heketi-config-secret glusterfs=heketi-config-secret heketi=config-secret secret/heketi-config-secret labeled创建
heketi-gluster-endpoints.yaml文件,并获取所有 glusterfs 节点的 IP 地址。创建
heketi-gluster-endpoints.yaml文件。# oc create -f ./heketi-gluster-endpoints.yaml获取所有 glusterfs 节点的 IP 地址。
# cat heketi-gluster-endpoints.yaml apiVersion: v1 kind: Endpoints metadata: name: heketi-storage-endpoints subsets: - addresses: - ip: 192.168.11.208 ports: - port: 1 - addresses: - ip: 192.168.11.176 ports: - port: 1 - addresses: - ip: 192.168.11.192 ports: - port: 1在上例中,192.168.11.208, 192.168.11.176, 192.168.11.192 是 glusterfs 节点。
执行以下命令来创建服务:
# oc create -f ./heketi-gluster-service.yaml例如:
# cat heketi-gluster-service.yaml apiVersion: v1 kind: Service metadata: name: heketi-storage-endpoints spec: ports: - port: 1执行以下命令来部署用于为 OpenShift 创建持久性卷的 Heketi 服务、路由和部署配置:
# oc process heketi | oc create -f - service/heketi created route.route.openshift.io/heketi created deploymentconfig.apps.openshift.io/heketi created注意建议为数据库工作负载调整
heketidbstorage卷。新安装的 Openshift Container Storage 部署会自动调整 heketidbstorage 卷。对于旧的部署,请按照 KCS 文章 规划在 Openshift Container Storage 上运行容器化 DB 或 nosql 工作负载? 并为卷heketidbstorage执行卷设置操作。验证 Heketi 是否已迁移在 master 节点上执行以下命令:
# oc rsh po/<heketi-pod-name>例如:
# oc rsh po/heketi-1-p65c6执行以下命令检查集群 ID
# heketi-cli cluster list输出中验证集群 ID 与旧集群匹配。