第 5 章 更新后配置更改

在某些情况下,更新后还需要额外的配置步骤,以确保所有功能都能按预期工作。

5.1. 由本地存储支持的集群更新后配置

在 Red Hat OpenShift Container Platform 4.6 及之后,Local Storage operator 提供了新的自定义资源类型来管理本地存储:

  • LocalVolumeDiscovery
  • LocalVolumeSet

这些资源类型不会作为之前版本更新的一部分自动处理,必须手动创建。

5.1.1. 使用命令行创建 LocalVolumeDiscovery 自定义资源

创建 LocalVolumeDiscovery 自定义资源,以确保设备管理用户界面可以发现本地设备的状态,并提供有关集群节点中可用设备的信息。

先决条件

  • 对 OpenShift Container Platform 集群的管理访问权限。

流程

  1. 更改到安装有 Local Storage operator 的项目。

    $ oc project local-storage-project

    local-storage-project 替换为 Local Storage 项目的名称。

    在版本 4.5 及更早版本中,默认本地存储项目的名称为 local-storage。在版本 4.6 及更新的版本中,默认本地存储项目的名称为 openshift-local-storage

  2. 定义 LocalVolumeDiscovery 自定义资源。

    例如,在 local-volume-discovery.yaml 文件中定义以下内容:

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeDiscovery
    metadata:
      name: auto-discover-devices
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
  3. 创建 LocalVolumeDiscovery 自定义资源。

    $ oc create -f local-volume-discovery.yaml

验证步骤

  1. 登录 OpenShift Web 控制台。
  2. ComputeNode,然后点击节点的名称。
  3. 点击 Disks 选项卡,检查您是否可以看到该节点上可用的设备。

5.1.2. 使用命令行创建 LocalVolumeSet 自定义资源

创建 LocalVolumeSet 自定义资源,根据您指定的条件自动将某些存储设备置备为持久性卷。对于任何符合 nodeSelector 条件的节点中的 deviceInclusionSpec 条件的设备都会创建持久性卷。

先决条件

  • 对 OpenShift Container Platform 集群的管理访问权限。

流程

  1. local-volume-set.yaml 文件中定义 LocalVolumeSet 自定义资源。

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeSet
    metadata:
      name: localblock
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
      storageClassName: localblock
      volumeMode: Block
      maxDeviceCount: 10 # optional, limit devices provisioned per node
      deviceInclusionSpec:
        deviceTypes: # list of types to allow
          - disk
          - part # omit this to use only whole devices
        deviceMechanicalProperty:
          - NonRotational
        minSize: 100Gi # optional, minimum size of device to allow
        maxSize: 100Ti # optional, maximum size of device to allow
        models: # (optional) list of models to allow
          - SAMSUNG
          - Crucial_CT525MX3
        vendors: # (optional) list of device vendors to allow
          - ATA
          - ST2000LM

    以上定义从 worker 1、worker2 和 worker 3 节点选择特定类型的非轮转设备上的整个磁盘或分区,这些分区的大小为 100 GB 到 100 TB。创建 本地块存储 类,并从发现的设备置备持久性卷。

    重要

    minSize 选择一个适当的值,以确保未选择系统分区。

  2. 创建 LocalVolumeSet

    $ oc create -f local-volume-set.yaml

验证步骤

  1. 使用以下命令,跟踪与 deviceInclusionSpec 匹配的设备的持久性卷置备。调配持久卷可能需要几分钟时间。

    $ oc describe localvolumeset localblock
    [...]
    Status:
      Conditions:
        Last Transition Time:          2020-11-17T05:03:32Z
        Message:                       DiskMaker: Available, LocalProvisioner: Available
        Status:                        True
        Type:                          DaemonSetsAvailable
        Last Transition Time:          2020-11-17T05:03:34Z
        Message:                       Operator reconciled successfully.
        Status:                        True
        Type:                          Available
      Observed Generation:             1
      Total Provisioned Device Count: 4
    Events:
    Type    Reason      Age          From                Message
    ----    ------      ----         ----                -------
    Normal  Discovered  2m30s (x4    localvolumeset-     ip-10-0-147-124.us-east-
            NewDevice   over 2m30s)  symlink-controller  2.compute.internal -
                                                         found possible matching
                                                         disk, waiting 1m to claim
    Normal  FoundMatch  89s (x4      localvolumeset-     ip-10-0-147-124.us-east-
            ingDisk     over 89s)    symlink-controller  2.compute.internal -
                                                         symlinking matching disk
  2. 验证调配的持久卷的状态。

    $ oc get pv
                         ACCESS   RECLAIM             STORAGE
    NAME       CAPACITY  MODES    POLICY   STATUS     CLASS       AGE
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3584969f
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3aee84fa
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    644d09ac
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    c73cee1

5.1.3. 添加注解

从以前的版本升级到 OpenShift Container Storage 4.6 时,使用此流程为存储集群添加注解,以通过用户界面启用替换失败存储设备。

流程

  1. 登录 OpenShift Container Platform Web 控制台。
  2. HomeSearch
  3. Resources 中搜索 StorageCluster 并点击它。
  4. ocs-storagecluster 旁边,点 Action 菜单 (⋮)Edit annotations
  5. KEYVALUE 添加 cluster.ocs.openshift.io/local-devicestrue
  6. Save