3.5. 在经过存储优化的 Amazon EC2 - i3en.2xlarge 实例类型上创建 OpenShift Container Storage 集群


使用这个流程在 Amazon EC2 上创建 OpenShift Container Storage 集群(存储优化 - i3en.2xlarge 实例类型)基础架构,这将:

  1. 使用 LocalVolume CR 创建 PV
  2. 创建一个新的 StorageClass

经过存储优化的 Amazon EC2 - i3en.2xlarge 实例类型包括两个 NVMe 磁盘。此流程中的示例演示了实例类型附带的两个磁盘的使用。

当您使用 Amazon EC2 I3 的临时存储时

  • 使用三个可用区来降低丢失所有数据的风险。
  • 限制具有 ec2:StopInstances 权限的用户数量,以避免错误地关闭实例。
警告

不建议将 Amazon EC2 I3 的临时存储用于 OpenShift Container Storage 的持久数据,因为停止所有三个节点可能会导致数据丢失。

建议仅在以下情况下使用 Amazon EC2 I3 的临时存储:

  • 云突发,数据从另一个位置复制到特定数据膨胀,但时间有限
  • 开发或测试环境
重要

使用 Local Storage Operator 在进行了存储优化的 Amazon EC2 i3en.2xlarge 实例上安装 OpenShift Container Storage 是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

先决条件

  • 确保满足使用本地存储设备安装 OpenShift Container Storage 的要求部分中的所有要求
  • 验证 OpenShift Container Platform worker 节点是否已标记为 OpenShift Container Storage,它用作 nodeSelector

    oc get nodes -l cluster.ocs.openshift.io/openshift-storage -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}'
    Copy to Clipboard Toggle word wrap

    输出示例:

    ip-10-0-135-71.us-east-2.compute.internal
    ip-10-0-145-125.us-east-2.compute.internal
    ip-10-0-160-91.us-east-2.compute.internal
    Copy to Clipboard Toggle word wrap

步骤

  1. 使用 LocalVolume 自定义资源 (CR) 在存储节点上创建本地持久性卷 (PV)。

    使用 OpenShift Storage Container 标签作为节点选择器和 by-id 设备标识符的 LocalVolume CR local-storage- block.yaml 示例:

    apiVersion: local.storage.openshift.io/v1
    kind: LocalVolume
    metadata:
      name: local-block
      namespace: openshift-local-storage
      labels:
        app: ocs-storagecluster
    spec:
      tolerations:
      - key: "node.ocs.openshift.io/storage"
        value: "true"
        effect: NoSchedule
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: cluster.ocs.openshift.io/openshift-storage
                operator: In
                values:
                  - ''
      storageClassDevices:
        - storageClassName: localblock
          volumeMode: Block
          devicePaths:
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84FE3E9   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE4   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441464EP   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84F43E7   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE8   # <-- modify this line
    Copy to Clipboard Toggle word wrap

    每个 Amazon EC2 I3 实例都具有两个磁盘,本例在每个节点上同时使用两个磁盘。

  2. 创建 LocalVolume CR。

    $ oc create -f local-storage-block.yaml
    Copy to Clipboard Toggle word wrap

    输出示例:

    localvolume.local.storage.openshift.io/local-block created
    Copy to Clipboard Toggle word wrap
  3. 检查是否创建了 pod。

    $ oc -n openshift-local-storage get pods
    Copy to Clipboard Toggle word wrap
  4. 检查是否创建了 PV。

    您必须为三个 worker 节点上的每个本地存储设备看到一个新的 PV。请参阅查找可用存储设备部分的示例,其中显示了每个 worker 节点的两个可用存储设备,每个节点的大小为 2.3 TiB。

    $ oc get pv
    Copy to Clipboard Toggle word wrap

    输出示例:

    NAME               CAPACITY ACCESS MODES  RECLAIM POLICY STATUS       CLAIM     STORAGECLASS  REASON   AGE
    local-pv-1a46bc79  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-429d90ee  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-4d0a62e3  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-55c05d76  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-5c7b0990  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-a6b283b   2328Gi   RWO           Delete         Available              localblock             14m
    Copy to Clipboard Toggle word wrap
  5. 检查在创建 LocalVolume CR 时存在新的 StorageClass。这个 StorageClass 用于在以下步骤中提供 StorageCluster PVC。

    $ oc get sc | grep localblock
    Copy to Clipboard Toggle word wrap

    输出示例:

    NAME            PROVISIONER                    RECLAIMPOLICY
    VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION     AGE
    localblock      kubernetes.io/no-provisioner   Delete
    WaitForFirstConsumer  false                15m
    Copy to Clipboard Toggle word wrap
  6. 创建 StorageCluster CR,它使用 localblock StorageClass 使用 Local Storage Operator 创建的 PV。

    使用 monDataDirHostPathlocalblock StorageClass 的 StorageCluster CR ocs-cluster-service.yaml 示例。

    apiVersion: ocs.openshift.io/v1
    kind: StorageCluster
    metadata:
      name: ocs-storagecluster
      namespace: openshift-storage
    spec:
      manageNodes: false
      resources:
        mds:
          limits:
            cpu: 3
            memory: 8Gi
          requests:
            cpu: 1
            memory: 8Gi
      monDataDirHostPath: /var/lib/rook
      storageDeviceSets:
        - count: 2
          dataPVCTemplate:
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 2328Gi
              storageClassName: localblock
              volumeMode: Block
          name: ocs-deviceset
          placement: {}
          portable: false
          replica: 3
          resources:
            limits:
              cpu: 2
              memory: 5Gi
            requests:
              cpu: 1
              memory: 5Gi
    Copy to Clipboard Toggle word wrap
    重要

    为确保 OSD 在节点上具有有保证的大小,storageDeviceSet 的存储大小必须指定为小于或等于节点上创建的 PV 的大小。

  7. 创建 StorageCluster CR。

    $ oc create -f ocs-cluster-service.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    storagecluster.ocs.openshift.io/ocs-cluster-service created
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat