Menu Close
Settings Close

Language and Page Formatting Options

存储

OpenShift Dedicated 4

为 OpenShift Dedicated 集群配置存储

摘要

本文档提供有关为 OpenShift Dedicated 集群设置存储的信息。

第 1 章 持久性存储

1.1. 为 OpenShift Dedicated 设置 AWS EFS

Amazon Web Services Elastic File System(AWS EFS)是一个可在 OpenShift Dedicated 集群上置备的网络文件系统(NFS)。AWS 还提供并支持 CSI EFS 驱动程序,以便 Kubernetes 工作负载利用这种共享文件存储。

本文档描述了设置 AWS 帐户以准备 OpenShift Dedicated 使用 EFS 的基本步骤。有关 AWS EFS 的详情,请查看 AWS EFS 文档

重要

红帽不提供对这个功能的官方支持,包括备份和恢复。客户负责备份 EFS 数据并在出现停机或数据丢失的情况下恢复。

在集群中启用 EFS 的高级别流程是:

  1. 在集群使用的 AWS 帐户中创建一个 AWS EFS。
  2. 从 OperatorHub 安装 AWS EFS Operator。
  3. 创建 SharedVolume 自定义资源。
  4. 使用 pod spec.volumes 中生成的持久性卷声明。

1.1.1. 先决条件

  • OpenShift Dedicated 集群的客户云订阅(CCS)
  • 管理员访问集群的 AWS 帐户

1.1.2. 配置 AWS 帐户

设置 AWS 帐户,以准备由 OpenShift Dedicated 使用的 AWS EFS。

流程

  1. 登录 AWS EC2 控制台
  2. 选择与集群区域匹配的区域。
  3. 仅过滤 worker EC2 实例,然后选择一个实例。请注意 VPC ID 和安全组 ID。稍后需要这些值。
  4. 单击 Security 选项卡,再单击 Security Group Name。
  5. 操作 下拉菜单中,单击 Edit Inbound Rules。滚动到底部,然后单击 Add Rule
  6. 添加一个 NFS 规则,允许来自 VPC 专用 CIDR 的 NFS 流量。
  7. 打开 Amazon EFS 页面。要创建 EFS,请点击 创建文件系统
  8. Customize and proceed the wizard。

    1. 在第 2 步: 配置网络访问权限:

      1. 点之前记录的集群的 VPC。
      2. 确保选择了专用子网。
      3. 选择您之前为 EC2 worker 实例记录的 Security Group Name。
      4. 点击 Next
    2. 在第 3 步: 配置客户端访问权限:

      1. Add access point
      2. 输入唯一路径,如 /access_point_1
      3. 使用允许 worker pod 进行写入访问权限的所有权或权限配置 Owner 字段。例如,如果您的 worker pod 使用组 ID 100 运行,您可以将该 ID 设置为您的 所有者组 ID,并确保权限包含 g+rwx
  9. 继续浏览向导步骤,然后点击 Create File System
  10. 创建文件系统后:

    1. 记下文件系统 ID 以供以后使用。
    2. 单击 Manage client access,再记下接入点 ID。

您可以使用步骤 5-10 添加更多 NFS 规则来创建单独的共享数据存储。在每个情况下,记录相应文件系统 ID 和访问点 ID。

1.1.3. 安装 EFS Operator

流程

  1. 登录到集群的 OpenShift Web UI。
  2. OperatorsOperatorHub
  3. 搜索并选择 AWS EFS Operator。点 Install
  4. 接受默认设置,并点击 Subscribe

1.1.4. 使用控制台创建 SharedVolume 资源

您必须为每个要 pod 访问它的每个项目创建一个 SharedVolume 资源:access point 对。

流程

  1. 在 OpenShift Web 控制台中,创建并前往项目。
  2. OperatorsInstalled Operators。找到 AWS EFS Operator 的条目,并点击 Provided APIs 下的 SharedVolume
  3. Create SharedVolume
  4. 编辑 YAML 示例:

    1. 名称 输入一个合适的值。
    2. accessPointIDfileSystemID 的值替换为您之前创建的 EFS 资源中的值。

        apiVersion: aws-efs.managed.openshift.io/v1alpha1
        kind: SharedVolume
        metadata:
          name: sv1
          namespace: efsop2
        spec:
          accessPointID: fsap-0123456789abcdef
          fileSystemID: fs-0123cdef
  5. Create

    创建了 SharedVolume 资源,并触发 AWS EFS Operator 生成并关联一个 PersistentVolume:PersistentVolumeClaim 对和指定的 EFS 访问点。

  6. 要验证持久性卷声明(PVC)是否存在并绑定,点 StoragePersistent Volume Claims

    PVC 名称是 pvc-<shared_volume_name>。关联的 PV 名称是 pv-<project_name>-<shared_volume_name>

1.1.5. 使用 CLI 创建 SharedVolume 资源

您必须为每个要 pod 访问它的每个项目创建一个 SharedVolume 资源:access point 对。您可以通过输入 YAML 或 JSON 定义来手动创建 SharedVolume,或者将文件拖放到编辑器中。

流程

  1. 使用 oc CLI,使用您之前创建的 EFS 资源中的 accessPointIDfileSystemID 值创建 YAML 文件。

      apiVersion: aws-efs.managed.openshift.io/v1alpha1
      kind: SharedVolume
      metadata:
        name: sv1
        namespace: efsop2
      spec:
        accessPointID: fsap-0123456789abcdef
        fileSystemID: fs-0123cdef
  2. 使用以下命令将该文件应用到集群:

    $ oc apply -f <filename>.yaml

    创建了 SharedVolume 资源,并触发 AWS EFS Operator 生成并关联一个 PersistentVolume:PersistentVolumeClaim 对和指定的 EFS 访问点。

  3. 要验证 PVC 是否存在并绑定,请导航到 Storage > Persistent Volume Claims

    PVC 名称是 pvc-{shared_volume_name}。关联的 PV 名称是 pv-{project_name}-{shared_volume_name}

1.1.6. 连接 pod

项目中创建的持久性卷声明(PVC)可供使用。您可以创建一个 pod 来测试这个 PVC。

流程

  1. 创建并导航到项目。
  2. WorkloadsPodsCreate Pod
  3. 输入 YAML 信息。使用 .spec.volumes[].persistentVolumeClaim.claimName 下的 PersistentVolumeClaim 对象的名称。

    示例

    apiVersion: v1
    kind: Pod
    metadata:
     name: test-efs
    spec:
     volumes:
       - name: efs-storage-vol
         persistentVolumeClaim:
           claimName: pvc-sv1
     containers:
       - name: test-efs
         image: centos:latest
         command: [ "/bin/bash", "-c", "--" ]
         args: [ "while true; do touch /mnt/efs-data/verify-efs && echo 'hello efs' && sleep 30; done;" ]
         volumeMounts:
           - mountPath: "/mnt/efs-data"
             name: efs-storage-vol

  4. 创建 pod 后,点击 WorkloadsPodsLogs 来验证 pod 日志。

1.1.7. 卸载 EFS Operator

流程

从集群中删除 Operator:

  1. 使用 Operator 生成的持久性卷声明删除所有工作负载。
  2. 从所有命名空间中删除所有共享卷。Operator 会自动删除关联的持久性卷和持久性卷声明。
  3. 卸载 Operator:

    1. OperatorsInstalled Operators
    2. 找到 AWS EFS Operator 的条目,并点击 Operator 右侧的菜单按钮。
    3. 点击 Uninstall 并确认删除。
  4. 删除共享卷 CRD。此操作会触发删除剩余的 Operator 拥有的资源。