第 5 章 Red Hat Openshift Container Storage 环境中的 S3 兼容对象存储


重要

对 Container-Native Storage 中的 S3 兼容对象存储的支持技术预览。红帽服务级别协议(SLA)不支持技术预览功能,且功能可能并不完善,且不适用于生产环境。

技术预览功能提供早期对最新的产品创新访问权限,使客户能够在开发过程中测试功能并提供反馈。

红帽一般会考虑使"技术预览"功能的未来迭代保持可用,我们以商业上合理的努力来解决客户在使用这些功能时遇到的任何问题。

对象存储为数据存储提供了一个系统,允许用户访问与对象和文件相同的数据,从而简化管理并控制存储成本。S3 API 是基于 HTTP 对对象存储服务访问的事实标准。

注意

S3 兼容对象存储仅适用于 Red Hat Openshift Container Storage 3.11.4 和旧版本。

注意

在设置 S3 Compatible Object Store 前,确保已安装了 cns-deploy 软件包。有关如何安装 cns-deploy 软件包的详情,请参考 https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage/3.11/html-single/deployment_guide/#part-Appendix

从 /usr/share/heketi/templates/ 目录中执行以下步骤来为 Red Hat Openshift Container Storage 设置 S3 兼容对象存储:

  1. (可选):如果要为 heketi 创建 secret,请执行以下命令:

    # oc create secret generic heketi-${NAMESPACE}-admin-secret
    --from-literal=key=${ADMIN_KEY} --type=kubernetes.io/glusterfs

    例如:

    # oc create secret generic heketi-storage-project-admin-secret
    --from-literal=key=abcd  --type=kubernetes.io/glusterfs
    1. 执行以下命令标记 secret:

      # oc label --overwrite secret heketi-${NAMESPACE}-admin-secret
      glusterfs=s3-heketi-${NAMESPACE}-admin-secret
      gluster-s3=heketi-${NAMESPACE}-admin-secret

      例如:

      # oc label --overwrite secret heketi-storage-project-admin-secret
      glusterfs=s3-heketi-storage-project-admin-secret
      gluster-s3=heketi-storage-project-admin-secret
  2. 创建 GlusterFS StorageClass 文件。使用当前设置的 HEKETI_URLNAMESPACE,并设置 STORAGE_CLASS 名称。

    # sed -e 's/${HEKETI_URL}/<HEKETI_URL>/g'  -e 's/${STORAGE_CLASS}/<STORAGE_CLASSNAME>/g' -e  's/${NAMESPACE}/<NAMESPACE_NAME>/g'   /usr/share/heketi/templates/gluster-s3-storageclass.yaml | oc create -f -

    例如:

    # sed  -e 's/${HEKETI_URL}/heketi-storage-project.cloudapps.mystorage.com/g'  -e 's/${STORAGE_CLASS}/gluster-s3-store/g' -e 's/${NAMESPACE}/storage-project/g' /usr/share/heketi/templates/gluster-s3-storageclass.yaml | oc create -f -storageclass "gluster-s3-store" created
    注意
    • 您可以运行以下命令来获取 HEKETI_URL:

      # oc get routes --all-namespaces | grep heketi

      命令输出示例如下:

      glusterfs   heketi-storage
      heketi-storage-glusterfs.router.default.svc.cluster.local
      heketi-storage   <all>          None

      如果输出中有多个行,您可以选择最相关的选项。

    • 您可以运行以下命令来获取 NAMESPACE:

      oc get project

      命令输出示例如下:

      # oc project
      Using project "glusterfs" on server "master.example.com:8443"

      其中,glusterfs 是 NAMESPACE。

  3. 使用存储类创建持久性卷声明。

    # sed -e 's/${VOLUME_CAPACITY}/<NEW SIZE in Gi>/g'  -e  's/${STORAGE_CLASS}/<STORAGE_CLASSNAME>/g'  /usr/share/heketi/templates/gluster-s3-pvcs.yaml | oc create -f -

    例如:

    # sed -e 's/${VOLUME_CAPACITY}/2Gi/g'  -e  's/${STORAGE_CLASS}/gluster-s3-store/g'  /usr/share/heketi/templates/gluster-s3-pvcs.yaml | oc create -f -
    persistentvolumeclaim "gluster-s3-claim" created
    persistentvolumeclaim "gluster-s3-meta-claim" created

    使用上一步中创建的 STORAGE_CLASS。根据环境要求修改 VOLUME_CAPACITY。等待 PVC 已被绑定。使用以下命令验证相同的命令:

    # oc get pvc
    NAME                    STATUS    VOLUME                                     CAPACITY   ACCESSMODES   AGE
    gluster-s3-claim        Bound     pvc-0b7f75ef-9920-11e7-9309-00151e000016   2Gi        RWX           2m
    gluster-s3-meta-claim   Bound     pvc-0b87a698-9920-11e7-9309-00151e000016   1Gi        RWX           2m
  4. 使用模板启动 glusters3 对象存储服务。设置 S3_account 名称、S3_USER 名称和 S3_PASSWORDPVCMETA_PVC 从上一步中获得。

    # oc new-app  /usr/share/heketi/templates/gluster-s3-template.yaml \
    --param=S3_ACCOUNT=testvolume  --param=S3_USER=adminuser \
    --param=S3_PASSWORD=itsmine --param=PVC=gluster-s3-claim \
    --param=META_PVC=gluster-s3-meta-claim
    --> Deploying template "storage-project/gluster-s3" for "/usr/share/heketi/templates/gluster-s3-template.yaml" to project storage-project
    
         gluster-s3
         ---------
         Gluster s3 service template
    
    
         * With parameters:
            * S3 Account Name=testvolume
            * S3 User=adminuser
            * S3 User Password=itsmine
            * Primary GlusterFS-backed PVC=gluster-s3-claim
            * Metadata GlusterFS-backed PVC=gluster-s3-meta-claim
    
    --> Creating resources ...
        service "gluster-s3-service" created
        route "gluster-s3-route" created
        deploymentconfig "gluster-s3-dc" created
    --> Success
    Run 'oc status' to view your app.
  5. 执行以下命令验证 S3 pod 是否正在运行:

    # oc get pods -o wide
    NAME                             READY     STATUS    RESTARTS   AGE       IP             NODE
    gluster-s3-azkys                 1/1       Running   0          4m        10.130.0.29    node3
    ..
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部