×

OpenShift Container Platform 可以使用本地卷预配持久存储。本地持久卷允许您使用标准持久卷声明接口访问本地存储设备,例如磁盘或分区。

本地卷无需手动将 Pod 调度到节点即可使用,因为系统知道卷节点约束。但是,本地卷仍然受底层节点可用性的影响,并不适用于所有应用程序。

本地卷只能用作静态创建的持久卷。

安装本地存储操作符

默认情况下,OpenShift Container Platform 中未安装本地存储操作符。请使用以下步骤安装和配置此操作符以启用集群中的本地卷。

先决条件
  • 访问 OpenShift Container Platform Web 控制台或命令行界面 (CLI)。

步骤
  1. 创建 `openshift-local-storage` 项目

    $ oc adm new-project openshift-local-storage
  2. 可选:允许在基础设施节点上创建本地存储。

    您可能希望使用本地存储操作符在基础设施节点上创建卷,以支持日志记录和监控等组件。

    您必须调整默认节点选择器,以便本地存储操作符包含基础设施节点,而不仅仅是工作节点。

    要阻止本地存储操作符继承集群范围的默认选择器,请输入以下命令

    $ oc annotate namespace openshift-local-storage openshift.io/node-selector=''
  3. 可选:允许本地存储在单节点部署中的 CPU 管理池中运行。

    在使用管理工作负载分区的单节点部署中使用本地存储操作符,并允许使用属于 `management` 池的 CPU。在使用管理工作负载分区的单节点安装中执行此步骤。

    要允许本地存储操作符在管理 CPU 池中运行,请运行以下命令

    $ oc annotate namespace openshift-local-storage workload.openshift.io/allowed='management'
从 UI

要从 Web 控制台安装本地存储操作符,请按照以下步骤操作

  1. 登录到 OpenShift Container Platform Web 控制台。

  2. 导航到 **操作符** → **OperatorHub**。

  3. 在筛选框中键入 **本地存储** 以查找本地存储操作符。

  4. 点击 **安装**。

  5. 在 **安装操作符** 页面上,选择 **集群上的特定命名空间**。从下拉菜单中选择 **openshift-local-storage**。

  6. 将 **更新通道** 和 **批准策略** 的值调整为您想要的值。

  7. 点击 **安装**。

完成后,本地存储操作符将列在 Web 控制台的 **已安装操作符** 部分。

从 CLI
  1. 从 CLI 安装本地存储操作符。

    1. 创建一个对象 YAML 文件以定义本地存储操作符的操作符组和订阅,例如 `openshift-local-storage.yaml`

      示例 openshift-local-storage.yaml
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: local-operator-group
        namespace: openshift-local-storage
      spec:
        targetNamespaces:
          - openshift-local-storage
      ---
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: local-storage-operator
        namespace: openshift-local-storage
      spec:
        channel: stable
        installPlanApproval: Automatic (1)
        name: local-storage-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      1 安装计划的用户批准策略。
  2. 通过输入以下命令来创建本地存储操作符对象

    $ oc apply -f openshift-local-storage.yaml

    此时,操作符生命周期管理器 (OLM) 现在已知晓本地存储操作符。操作符的集群服务版本 (CSV) 应出现在目标命名空间中,并且操作符提供的 API 应可用于创建。

  3. 通过检查所有 Pod 和本地存储操作符是否已创建来验证本地存储安装

    1. 检查所有必需的 Pod 是否已创建

      $ oc -n openshift-local-storage get pods
      示例输出
      NAME                                      READY   STATUS    RESTARTS   AGE
      local-storage-operator-746bf599c9-vlt5t   1/1     Running   0          19m
    2. 检查集群服务版本 (CSV) YAML 清单以查看本地存储操作符是否在 `openshift-local-storage` 项目中可用

      $ oc get csvs -n openshift-local-storage
      示例输出
      NAME                                         DISPLAY         VERSION               REPLACES   PHASE
      local-storage-operator.4.2.26-202003230335   Local Storage   4.2.26-202003230335              Succeeded

所有检查都通过后,本地存储操作符已成功安装。

使用本地存储操作符预配本地卷

本地卷无法通过动态预配创建。相反,持久卷可以由本地存储操作符创建。本地卷预配程序会在定义的资源中指定的路径查找任何文件系统或块卷设备。

先决条件
  • 已安装本地存储操作符。

  • 您有一个满足以下条件的本地磁盘

    • 它已附加到节点。

    • 它未挂载。

    • 它不包含分区。

步骤
  1. 创建本地卷资源。此资源必须定义节点和本地卷的路径。

    不要对同一设备使用不同的存储类名称。这样做会创建多个持久卷 (PV)。

    示例:文件系统
    apiVersion: "local.storage.openshift.io/v1"
    kind: "LocalVolume"
    metadata:
      name: "local-disks"
      namespace: "openshift-local-storage" (1)
    spec:
      nodeSelector: (2)
        nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - ip-10-0-140-183
              - ip-10-0-158-139
              - ip-10-0-164-33
      storageClassDevices:
        - storageClassName: "local-sc" (3)
          forceWipeDevicesAndDestroyAllData: false (4)
          volumeMode: Filesystem (5)
          fsType: xfs (6)
          devicePaths: (7)
            - /path/to/device (8)
    1 安装本地存储操作符的命名空间。
    2 可选:包含附加本地存储卷的节点列表的节点选择器。此示例使用从 `oc get node` 获取的节点主机名。如果未定义值,则本地存储操作符将尝试在所有可用节点上查找匹配的磁盘。
    3 创建持久卷对象时使用的存储类的名称。如果本地存储操作符(Local Storage Operator)不存在该存储类,它会自动创建。请务必使用唯一标识此组本地卷的存储类。
    4 此设置定义是否调用wipefs,该命令会删除分区表签名(魔术字符串),使磁盘准备好用于本地存储操作符 (LSO) 配置。除了签名之外,不会擦除其他任何数据。默认值为“false”(不调用wipefs)。在需要重新使用磁盘但可能存在先前数据的场景中,将forceWipeDevicesAndDestroyAllData设置为“true”可能很有用。在这种情况下,将此字段设置为 true 可避免管理员手动擦除磁盘。此类情况可能包括单节点 OpenShift (SNO) 集群环境(其中节点可以多次重新部署),或使用 OpenShift 数据基金会 (ODF) 时,先前数据可能保留在计划用作对象存储设备 (OSD) 的磁盘上。
    5 卷模式,FilesystemBlock,定义本地卷的类型。

    原始块卷 (volumeMode: Block) 未格式化为文件系统。仅当 pod 上运行的任何应用程序可以使用原始块设备时,才使用此模式。

    6 首次挂载本地卷时创建的文件系统。
    7 包含要从中选择的本地存储设备列表的路径。
    8 将此值替换为指向LocalVolume资源by-id的实际本地磁盘文件路径,例如/dev/disk/by-id/wwn。成功部署供应程序后,将为这些本地磁盘创建 PV。

    如果在运行带有 RHEL KVM 的 OpenShift Container Platform,则必须为虚拟机磁盘分配序列号。否则,重新引导后将无法识别虚拟机磁盘。可以使用virsh edit <VM>命令添加<serial>mydisk</serial>定义。

    示例:Block
    apiVersion: "local.storage.openshift.io/v1"
    kind: "LocalVolume"
    metadata:
      name: "local-disks"
      namespace: "openshift-local-storage" (1)
    spec:
      nodeSelector: (2)
        nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - ip-10-0-136-143
              - ip-10-0-140-255
              - ip-10-0-144-180
      storageClassDevices:
        - storageClassName: "local-sc" (3)
          forceWipeDevicesAndDestroyAllData: false (4)
          volumeMode: Block (5)
          devicePaths: (6)
            - /path/to/device (7)
    1 安装本地存储操作符的命名空间。
    2 可选:包含附加本地存储卷的节点列表的节点选择器。此示例使用从 `oc get node` 获取的节点主机名。如果未定义值,则本地存储操作符将尝试在所有可用节点上查找匹配的磁盘。
    3 创建持久卷对象时使用的存储类的名称。
    4 此设置定义是否调用wipefs,该命令会删除分区表签名(魔术字符串),使磁盘准备好用于本地存储操作符 (LSO) 配置。除了签名之外,不会擦除其他任何数据。默认值为“false”(不调用wipefs)。在需要重新使用磁盘但可能存在先前数据的场景中,将forceWipeDevicesAndDestroyAllData设置为“true”可能很有用。在这种情况下,将此字段设置为 true 可避免管理员手动擦除磁盘。此类情况可能包括单节点 OpenShift (SNO) 集群环境(其中节点可以多次重新部署),或使用 OpenShift 数据基金会 (ODF) 时,先前数据可能保留在计划用作对象存储设备 (OSD) 的磁盘上。
    5 卷模式,FilesystemBlock,定义本地卷的类型。
    6 包含要从中选择的本地存储设备列表的路径。
    7 将此值替换为指向LocalVolume资源by-id的实际本地磁盘文件路径,例如dev/disk/by-id/wwn。成功部署供应程序后,将为这些本地磁盘创建 PV。

    如果在运行带有 RHEL KVM 的 OpenShift Container Platform,则必须为虚拟机磁盘分配序列号。否则,重新引导后将无法识别虚拟机磁盘。可以使用virsh edit <VM>命令添加<serial>mydisk</serial>定义。

  2. 在 OpenShift Container Platform 集群中创建本地卷资源。指定您刚刚创建的文件。

    $ oc create -f <local-volume>.yaml
  3. 验证是否已创建供应程序以及相应的守护程序集。

    $ oc get all -n openshift-local-storage
    示例输出
    NAME                                          READY   STATUS    RESTARTS   AGE
    pod/diskmaker-manager-9wzms                   1/1     Running   0          5m43s
    pod/diskmaker-manager-jgvjp                   1/1     Running   0          5m43s
    pod/diskmaker-manager-tbdsj                   1/1     Running   0          5m43s
    pod/local-storage-operator-7db4bd9f79-t6k87   1/1     Running   0          14m
    
    NAME                                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/local-storage-operator-metrics   ClusterIP   172.30.135.36   <none>        8383/TCP,8686/TCP   14m
    
    NAME                               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/diskmaker-manager   3         3         3       3            3           <none>          5m43s
    
    NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/local-storage-operator   1/1     1            1           14m
    
    NAME                                                DESIRED   CURRENT   READY   AGE
    replicaset.apps/local-storage-operator-7db4bd9f79   1         1         1       14m

    注意守护程序集进程的期望数量和当前数量。“0”的期望数量表示标签选择器无效。

  4. 验证是否已创建持久卷。

    $ oc get pv
    示例输出
    NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    local-pv-1cec77cf   100Gi      RWO            Delete           Available           local-sc                88m
    local-pv-2ef7cd2a   100Gi      RWO            Delete           Available           local-sc                82m
    local-pv-3fa1c73    100Gi      RWO            Delete           Available           local-sc                48m

编辑LocalVolume对象不会更改现有持久卷的fsTypevolumeMode,因为这样做可能会导致破坏性操作。

无需本地存储操作符即可配置本地卷

无法通过动态配置创建本地卷。而是可以通过在对象定义中定义持久卷 (PV) 来创建持久卷。本地卷供应程序会在定义的资源中指定路径的任何文件系统或块卷设备中查找。

手动配置 PV 包括在删除 PVC 时跨 PV 重用可能发生数据泄漏的风险。建议使用本地存储操作符来自动执行配置本地 PV 时的设备生命周期。

先决条件
  • 本地磁盘附加到 OpenShift Container Platform 节点。

步骤
  1. 定义 PV。创建一个文件,例如example-pv-filesystem.yamlexample-pv-block.yaml,其中包含PersistentVolume对象定义。此资源必须定义节点和本地卷的路径。

    不要对同一设备使用不同的存储类名称。这样做会创建多个 PV。

    example-pv-filesystem.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv-filesystem
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Filesystem (1)
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-sc (2)
      local:
        path: /dev/xvdf (3)
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - example-node
    1 卷模式,FilesystemBlock,定义 PV 的类型。
    2 创建 PV 资源时使用的存储类的名称。使用唯一标识此组 PV 的存储类。
    3 包含要从中选择的本地存储设备列表的路径,或目录。您只能使用Filesystem volumeMode指定目录。

    原始块卷 (volumeMode: block) 未格式化为文件系统。仅当 pod 上运行的任何应用程序可以使用原始块设备时,才使用此模式。

    example-pv-block.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv-block
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Block (1)
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-sc (2)
      local:
        path: /dev/xvdf (3)
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - example-node
    1 卷模式,FilesystemBlock,定义 PV 的类型。
    2 创建 PV 资源时使用的存储类的名称。请务必使用唯一标识此组 PV 的存储类。
    3 包含要从中选择的本地存储设备列表的路径。
  2. 在 OpenShift Container Platform 集群中创建 PV 资源。指定您刚刚创建的文件。

    $ oc create -f <example-pv>.yaml
  3. 验证是否已创建本地 PV。

    $ oc get pv
    示例输出
    NAME                    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                STORAGECLASS    REASON   AGE
    example-pv-filesystem   100Gi      RWO            Delete           Available                        local-sc            3m47s
    example-pv1             1Gi        RWO            Delete           Bound       local-storage/pvc1   local-sc            12h
    example-pv2             1Gi        RWO            Delete           Bound       local-storage/pvc2   local-sc            12h
    example-pv3             1Gi        RWO            Delete           Bound       local-storage/pvc3   local-sc            12h

创建本地卷持久卷声明

本地卷必须作为持久卷声明 (PVC) 静态创建才能被 pod 访问。

先决条件
  • 已使用本地卷供应程序创建持久卷。

步骤
  1. 使用相应的存储类创建 PVC。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: local-pvc-name (1)
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem (2)
      resources:
        requests:
          storage: 100Gi (3)
      storageClassName: local-sc (4)
    1 PVC 的名称。
    2 PVC 的类型。默认为Filesystem
    3 PVC 可用的存储量。
    4 声明所需的存储类的名称。
  2. 在 OpenShift Container Platform 集群中创建 PVC,指定您刚刚创建的文件。

    $ oc create -f <local-pvc>.yaml

附加本地声明

将本地卷映射到持久卷声明后,可以在资源中指定它。

先决条件
  • 持久卷声明存在于相同的命名空间中。

步骤
  1. 在资源规范中包含定义的声明。以下示例在 pod 中声明持久卷声明。

    apiVersion: v1
    kind: Pod
    spec:
    # ...
      containers:
        volumeMounts:
        - name: local-disks (1)
          mountPath: /data (2)
      volumes:
      - name: local-disks
        persistentVolumeClaim:
          claimName: local-pvc-name (3)
    # ...
    1 要挂载的卷的名称。
    2 在 pod 内挂载卷的路径。不要挂载到容器根目录/或主机和容器中相同的任何路径。如果容器具有足够的权限(例如主机/dev/pts文件),这可能会损坏您的主机系统。可以使用/host安全地挂载主机。
    3 要使用的现有持久卷声明的名称。
  2. 在 OpenShift Container Platform 集群中创建资源,指定您刚刚创建的文件。

    $ oc create -f <local-pod>.yaml

自动化本地存储设备的发现和配置

本地存储操作符自动化本地存储的发现和配置。使用此功能,可以在部署期间动态配置不可用时(例如在裸机、VMware 或带有附加设备的 AWS 存储实例中)简化安装。

自动发现和配置功能仅为技术预览版功能。技术预览版功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览版功能的支持范围的更多信息,请参阅 技术预览版功能支持范围

用于部署 Red Hat OpenShift Data Foundation 本地部署或与平台无关的部署时,自动发现和配置功能完全受支持。

请使用以下步骤自动发现本地设备并自动为选定的设备配置本地卷。

谨慎使用 LocalVolumeSet 对象。当您从本地磁盘自动配置持久卷 (PV) 时,本地 PV 可能会声明所有匹配的设备。如果您正在使用 LocalVolumeSet 对象,请确保本地存储操作员是节点上唯一管理本地设备的实体。不支持创建多个针对同一节点的 LocalVolumeSet 实例。

先决条件
  • 您拥有集群管理员权限。

  • 您已安装本地存储操作员。

  • 您已将本地磁盘连接到 OpenShift Container Platform 节点。

  • 您可以访问 OpenShift Container Platform Web 控制台和 oc 命令行界面 (CLI)。

步骤
  1. 要从 Web 控制台启用本地设备的自动发现

    1. 单击 **操作员** → **已安装的操作员**。

    2. openshift-local-storage 命名空间中,单击 **本地存储**。

    3. 单击 **本地卷发现** 选项卡。

    4. 单击 **创建本地卷发现**,然后选择 **表单视图** 或 **YAML 视图**。

    5. 配置 LocalVolumeDiscovery 对象参数。

    6. 单击 **创建**。

      本地存储操作员将创建一个名为 auto-discover-devices 的本地卷发现实例。

  2. 要显示节点上可用设备的连续列表

    1. 登录到 OpenShift Container Platform Web 控制台。

    2. 导航到 **计算** → **节点**。

    3. 单击要打开的节点名称。将显示“节点详细信息”页面。

    4. 选择 **磁盘** 选项卡以显示所选设备的列表。

      添加或移除本地磁盘时,设备列表会持续更新。您可以按名称、状态、类型、型号、容量和模式筛选设备。

  3. 要从 Web 控制台为已发现的设备自动配置本地卷

    1. 导航到 **操作员** → **已安装的操作员**,然后从操作员列表中选择 **本地存储**。

    2. 选择 **本地卷集** → **创建本地卷集**。

    3. 输入卷集名称和存储类名称。

    4. 选择 **所有节点** 或 **选择节点** 以相应地应用过滤器。

      无论您使用 **所有节点** 还是 **选择节点** 筛选,都只有工作节点可用。

    5. 选择要应用于本地卷集的磁盘类型、模式、大小和限制,然后单击 **创建**。

      几分钟后,将显示一条消息,指示“操作员已成功协调”。

  4. 或者,要从 CLI 为已发现的设备配置本地卷

    1. 创建一个对象 YAML 文件来定义本地卷集,例如 local-volume-set.yaml,如下例所示

      apiVersion: local.storage.openshift.io/v1alpha1
      kind: LocalVolumeSet
      metadata:
        name: example-autodetect
      spec:
        nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                    - worker-0
                    - worker-1
        storageClassName: local-sc (1)
        volumeMode: Filesystem
        fsType: ext4
        maxDeviceCount: 10
        deviceInclusionSpec:
          deviceTypes: (2)
            - disk
            - part
          deviceMechanicalProperties:
            - NonRotational
          minSize: 10G
          maxSize: 100G
          models:
            - SAMSUNG
            - Crucial_CT525MX3
          vendors:
            - ATA
            - ST2000LM
      1 确定为从已发现的设备配置的持久卷创建的存储类。如果存储类不存在,本地存储操作员会自动创建它。请务必使用唯一标识此本地卷集的存储类。
      2 使用本地卷集功能时,本地存储操作员不支持使用逻辑卷管理 (LVM) 设备。
    2. 创建本地卷集对象

      $ oc apply -f local-volume-set.yaml
    3. 验证是否已根据存储类动态配置本地持久卷

      $ oc get pv
      示例输出
      NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
      local-pv-1cec77cf   100Gi      RWO            Delete           Available           local-sc                88m
      local-pv-2ef7cd2a   100Gi      RWO            Delete           Available           local-sc                82m
      local-pv-3fa1c73    100Gi      RWO            Delete           Available           local-sc                48m

从节点中移除后,结果将被删除。符号链接必须手动删除。

将容忍度与本地存储操作员 Pod 配合使用

可以将污点应用于节点以阻止它们运行常规工作负载。要允许本地存储操作员使用被污点的节点,必须将容忍度添加到 PodDaemonSet 定义中。这允许在这些被污点的节点上运行已创建的资源。

您可以通过 LocalVolume 资源将容忍度应用于本地存储操作员 Pod,并通过节点规范将污点应用于节点。节点上的污点指示节点排斥所有不耐受该污点的 Pod。使用其他 Pod 上没有的特定污点可确保本地存储操作员 Pod 也可在该节点上运行。

污点和容忍度包含键、值和效果。作为参数,它表示为 key=value:effect。操作员允许您将其中一个参数留空。

先决条件
  • 已安装本地存储操作符。

  • 本地磁盘连接到带有污点的 OpenShift Container Platform 节点。

  • 预期被污点的节点将配置本地存储。

步骤

要配置在被污点的节点上调度的本地卷

  1. 修改定义 Pod 的 YAML 文件并添加 LocalVolume 规范,如下例所示

      apiVersion: "local.storage.openshift.io/v1"
      kind: "LocalVolume"
      metadata:
        name: "local-disks"
        namespace: "openshift-local-storage"
      spec:
        tolerations:
          - key: localstorage (1)
            operator: Equal (2)
            value: "localstorage" (3)
        storageClassDevices:
            - storageClassName: "local-sc"
              volumeMode: Block (4)
              devicePaths: (5)
                - /dev/xvdg
    1 指定您添加到节点的键。
    2 指定 Equal 运算符以要求 key/value 参数匹配。如果运算符为 Exists,则系统会检查键是否存在并忽略值。如果运算符为 Equal,则键和值必须匹配。
    3 指定被污点节点的值 local
    4 卷模式,FilesystemBlock,定义本地卷的类型。
    5 包含要从中选择的本地存储设备列表的路径。
  2. 可选:要仅在被污点的节点上创建本地持久卷,请修改 YAML 文件并添加 LocalVolume 规范,如下例所示

    spec:
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists

定义的容忍度将传递给生成的守护程序集,允许为包含指定污点的节点创建 diskmaker 和 provisioner Pod。

本地存储操作员指标

OpenShift Container Platform 为本地存储操作员提供以下指标

  • lso_discovery_disk_count:每个节点上已发现的设备总数

  • lso_lvset_provisioned_PV_count:由 LocalVolumeSet 对象创建的 PV 总数

  • lso_lvset_unmatched_disk_count:由于条件不匹配,本地存储操作员未选择进行配置的磁盘总数

  • lso_lvset_orphaned_symlink_count:不再匹配 LocalVolumeSet 对象条件的设备数量

  • lso_lv_orphaned_symlink_count:不再匹配 LocalVolume 对象条件的设备数量

  • lso_lv_provisioned_PV_count:为 LocalVolume 配置的 PV 总数

要使用这些指标,请务必

  • 在安装本地存储操作员时启用对监控的支持。

  • 升级到 OpenShift Container Platform 4.9 或更高版本时,请通过向命名空间添加 operator-metering=true 标签手动启用指标支持。

有关指标的更多信息,请参阅 管理指标

删除本地存储操作员资源

移除本地卷或本地卷集

有时必须删除本地卷和本地卷集。虽然删除资源中的条目并删除持久卷通常就足够了,但如果您想重用相同的设备路径或让不同的存储类对其进行管理,则需要执行其他步骤。

以下步骤概述了移除本地卷的示例。相同的步骤也可用于移除针对本地卷集自定义资源的符号链接。

先决条件
  • 持久卷必须处于已释放可用状态。

    删除仍在使用的持久卷可能会导致数据丢失或损坏。

步骤
  1. 编辑之前创建的本地卷以移除任何不需要的磁盘。

    1. 编辑集群资源

      $ oc edit localvolume <name> -n openshift-local-storage
    2. 导航到devicePaths下的行,并删除任何表示不需要的磁盘的行。

  2. 删除任何已创建的持久卷。

    $ oc delete pv <pv-name>
  3. 删除节点上的目录和包含的符号链接。

    以下步骤涉及以root用户身份访问节点。超出本步骤中步骤修改节点状态可能会导致集群不稳定。

    $ oc debug node/<node-name> -- chroot /host rm -rf /mnt/local-storage/<sc-name> (1)
    1 用于创建本地卷的存储类的名称。

卸载本地存储操作符

要卸载本地存储操作符,必须移除操作符和在openshift-local-storage项目中创建的所有资源。

不建议在本地存储PV仍在使用时卸载本地存储操作符。虽然在移除操作符后PV将保留,但如果在未移除PV和本地存储资源的情况下卸载并重新安装操作符,则可能会出现不确定的行为。

先决条件
  • 访问OpenShift Container Platform Web控制台。

步骤
  1. 删除项目中安装的任何本地卷资源,例如localvolumelocalvolumesetlocalvolumediscovery

    $ oc delete localvolume --all --all-namespaces
    $ oc delete localvolumeset --all --all-namespaces
    $ oc delete localvolumediscovery --all --all-namespaces
  2. 从Web控制台卸载本地存储操作符。

    1. 登录到 OpenShift Container Platform Web 控制台。

    2. 导航到**操作符** → **已安装的操作符**。

    3. 在筛选框中键入 **本地存储** 以查找本地存储操作符。

    4. 单击本地存储操作符末尾的选项菜单kebab

    5. 单击**卸载操作符**。

    6. 在出现的窗口中单击**移除**。

  3. 由本地存储操作符创建的PV将保留在集群中,直到删除。在这些卷不再使用后,通过运行以下命令删除它们

    $ oc delete pv <pv-name>
  4. 删除openshift-local-storage项目

    $ oc delete project openshift-local-storage